github.com/goravel/framework@v1.13.9/http/service_provider.go (about)

     1  package http
     2  
     3  import (
     4  	"github.com/goravel/framework/contracts/cache"
     5  	"github.com/goravel/framework/contracts/config"
     6  	consolecontract "github.com/goravel/framework/contracts/console"
     7  	"github.com/goravel/framework/contracts/foundation"
     8  	"github.com/goravel/framework/contracts/http"
     9  	"github.com/goravel/framework/http/console"
    10  )
    11  
    12  const BindingRateLimiter = "goravel.rate_limiter"
    13  const BindingView = "goravel.view"
    14  
    15  type ServiceProvider struct{}
    16  
    17  var (
    18  	CacheFacade       cache.Cache
    19  	ConfigFacade      config.Config
    20  	RateLimiterFacade http.RateLimiter
    21  )
    22  
    23  func (http *ServiceProvider) Register(app foundation.Application) {
    24  	app.Singleton(BindingRateLimiter, func(app foundation.Application) (any, error) {
    25  		return NewRateLimiter(), nil
    26  	})
    27  	app.Singleton(BindingView, func(app foundation.Application) (any, error) {
    28  		return NewView(), nil
    29  	})
    30  }
    31  
    32  func (http *ServiceProvider) Boot(app foundation.Application) {
    33  	CacheFacade = app.MakeCache()
    34  	ConfigFacade = app.MakeConfig()
    35  	RateLimiterFacade = app.MakeRateLimiter()
    36  
    37  	http.registerCommands(app)
    38  }
    39  
    40  func (http *ServiceProvider) registerCommands(app foundation.Application) {
    41  	app.MakeArtisan().Register([]consolecontract.Command{
    42  		&console.RequestMakeCommand{},
    43  		&console.ControllerMakeCommand{},
    44  		&console.MiddlewareMakeCommand{},
    45  	})
    46  }