(controller *Controller, method *parser.Function)
| 507 | } |
| 508 | |
| 509 | func (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 | |
| 554 | func newProviderSet() *providerSet { |
| 555 | return &providerSet{map[string]*di.Provider{}} |
no test coverage detected