43 lines
809 B
Go
43 lines
809 B
Go
package challenger
|
|
|
|
import (
|
|
"log"
|
|
)
|
|
|
|
type plugin struct {
|
|
name string
|
|
init func(logger *log.Logger) error
|
|
opts interface{}
|
|
gethandler func() Handler
|
|
}
|
|
|
|
func (p *plugin) GetName() string {
|
|
return p.name
|
|
}
|
|
|
|
func (p *plugin) GetOpts() interface{} {
|
|
return p.opts
|
|
}
|
|
|
|
func (p *plugin) GetHandler() Handler {
|
|
return p.gethandler()
|
|
}
|
|
|
|
func (p *plugin) Init(logger *log.Logger) error {
|
|
logger.Printf("challenger: %v init", p.name)
|
|
|
|
if p.init != nil {
|
|
return p.init(logger)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// NewFromHandler creates a Challenger with given functions
|
|
func NewFromHandler(name string, gethandler func() Handler, opts interface{}, init func(glogger *log.Logger) error) Provider {
|
|
return &plugin{
|
|
name: name,
|
|
init: init,
|
|
opts: opts,
|
|
gethandler: gethandler,
|
|
}
|
|
}
|