MCPcopy
hub / github.com/livebud/bud / loadProvider

Method loadProvider

framework/controller/loader.go:509–552  ·  view source on GitHub ↗
(controller *Controller, method *parser.Function)

Source from the content-addressed store, hash-verified

507}
508
509func (l *loader) loadProvider(controller *Controller, method *parser.Function) *di.Provider {
510 recv := method.Receiver()
511 if recv == nil {
512 return nil
513 }
514 def, err := recv.Definition()
515 if err != nil {
516 l.Bail(err)
517 }
518 importPath, err := def.Package().Import()
519 if err != nil {
520 l.Bail(err)
521 }
522 fnName := gotext.Camel("load " + controller.Name + " " + def.Name())
523 provider, err := l.injector.Wire(&di.Function{
524 Name: fnName,
525 Target: l.module.Import("bud", "controller"),
526 Imports: l.imports,
527 Hoist: true,
528 Results: []di.Dependency{
529 &di.Type{
530 Import: importPath,
531 Type: recv.Type().String(),
532 },
533 &di.Error{},
534 },
535 Params: []*di.Param{
536 {Import: "context", Type: "Context", Hoist: true},
537 {Import: "net/http", Type: "*Request"},
538 {Import: "net/http", Type: "ResponseWriter"},
539 },
540 Aliases: di.Aliases{},
541 })
542 if err != nil {
543 l.Bail(err)
544 }
545 // Add generated imports
546 for _, imp := range provider.Imports {
547 l.imports.AddNamed(imp.Name, imp.Path)
548 }
549 // Add the context to the provider set
550 l.providers.Add(provider)
551 return provider
552}
553
554func newProviderSet() *providerSet {
555 return &providerSet{map[string]*di.Provider{}}

Callers 1

loadActionMethod · 0.95

Calls 12

ReceiverMethod · 0.80
BailMethod · 0.80
CamelMethod · 0.80
WireMethod · 0.80
AddNamedMethod · 0.80
DefinitionMethod · 0.65
PackageMethod · 0.65
NameMethod · 0.65
StringMethod · 0.65
TypeMethod · 0.65
AddMethod · 0.65
ImportMethod · 0.45

Tested by

no test coverage detected