github.com/goravel/framework@v1.13.9/route/route.go (about) 1 package route 2 3 import ( 4 "fmt" 5 6 "github.com/gookit/color" 7 8 "github.com/goravel/framework/contracts/config" 9 "github.com/goravel/framework/contracts/route" 10 ) 11 12 type Driver string 13 14 type Route struct { 15 route.Route 16 config config.Config 17 } 18 19 func NewRoute(config config.Config) *Route { 20 defaultDriver := config.GetString("http.default") 21 if defaultDriver == "" { 22 color.Redln("[http] please set default driver") 23 24 return nil 25 } 26 27 driver, err := NewDriver(config, defaultDriver) 28 if err != nil { 29 color.Redf("[http] %s\n", err) 30 31 return nil 32 } 33 34 return &Route{ 35 Route: driver, 36 config: config, 37 } 38 } 39 40 func NewDriver(config config.Config, driver string) (route.Route, error) { 41 engine, ok := config.Get("http.drivers." + driver + ".route").(route.Route) 42 if ok { 43 return engine, nil 44 } 45 46 engineCallback, ok := config.Get("http.drivers." + driver + ".route").(func() (route.Route, error)) 47 if ok { 48 return engineCallback() 49 } 50 51 return nil, fmt.Errorf("init route driver fail: route must be implement route.Route or func() (route.Route, error)") 52 }