mirror of
https://github.com/kataras/iris.git
synced 2025-02-02 15:30:36 +01:00
55dfd195e0
Former-commit-id: c7114233dee90ee308c0a3e77ec2ad0c361094b8
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package mvc2
|
|
|
|
import (
|
|
"github.com/kataras/iris/mvc2/di"
|
|
"github.com/kataras/golog"
|
|
|
|
"github.com/kataras/iris/context"
|
|
"github.com/kataras/iris/core/router"
|
|
)
|
|
|
|
type Engine struct {
|
|
Dependencies *di.D
|
|
}
|
|
|
|
func NewEngine() *Engine {
|
|
return &Engine{
|
|
Dependencies: di.New().Hijack(hijacker).GoodFunc(typeChecker),
|
|
}
|
|
}
|
|
|
|
func (e *Engine) Clone() *Engine {
|
|
child := NewEngine()
|
|
child.Dependencies = e.Dependencies.Clone()
|
|
return child
|
|
}
|
|
|
|
func (e *Engine) Handler(handler interface{}) context.Handler {
|
|
h, err := MakeHandler(handler, e.Dependencies.Values...)
|
|
if err != nil {
|
|
golog.Errorf("mvc handler: %v", err)
|
|
}
|
|
return h
|
|
}
|
|
|
|
func (e *Engine) Controller(router router.Party, controller interface{}, beforeActivate ...func(*ControllerActivator)) {
|
|
ca := newControllerActivator(router, controller, e.Dependencies)
|
|
|
|
// give a priority to the "beforeActivate"
|
|
// callbacks, if any.
|
|
for _, cb := range beforeActivate {
|
|
cb(ca)
|
|
}
|
|
|
|
// check if controller has an "BeforeActivate" function
|
|
// which accepts the controller activator and call it.
|
|
if activateListener, ok := controller.(interface {
|
|
BeforeActivate(*ControllerActivator)
|
|
}); ok {
|
|
activateListener.BeforeActivate(ca)
|
|
}
|
|
|
|
ca.activate()
|
|
}
|