mirror of
https://github.com/kataras/iris.git
synced 2025-12-21 03:47:04 +00:00
made it work but looking for another approach
Former-commit-id: e61c4573543c57b8d6d4ef2583e40f52c391402f
This commit is contained in:
68
mvc2/mvc.go
68
mvc2/mvc.go
@@ -1,68 +0,0 @@
|
||||
package mvc2
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/kataras/iris/context"
|
||||
)
|
||||
|
||||
var (
|
||||
errNil = errors.New("nil")
|
||||
errBad = errors.New("bad")
|
||||
errAlreadyExists = errors.New("already exists")
|
||||
)
|
||||
|
||||
type Mvc struct {
|
||||
binders []*InputBinder
|
||||
}
|
||||
|
||||
func New() *Mvc {
|
||||
return new(Mvc)
|
||||
}
|
||||
|
||||
func (m *Mvc) Child() *Mvc {
|
||||
child := New()
|
||||
|
||||
// copy the current parent's ctx func binders and services to this new child.
|
||||
if len(m.binders) > 0 {
|
||||
binders := make([]*InputBinder, len(m.binders), len(m.binders))
|
||||
for i, v := range m.binders {
|
||||
binders[i] = v
|
||||
}
|
||||
child.binders = binders
|
||||
}
|
||||
|
||||
return child
|
||||
}
|
||||
|
||||
func (m *Mvc) In(binders ...interface{}) *Mvc {
|
||||
for _, binder := range binders {
|
||||
typ := resolveBinderType(binder)
|
||||
|
||||
var (
|
||||
b *InputBinder
|
||||
err error
|
||||
)
|
||||
|
||||
if typ == functionType {
|
||||
b, err = MakeFuncInputBinder(binder)
|
||||
} else if typ == serviceType {
|
||||
b, err = MakeServiceInputBinder(binder)
|
||||
} else {
|
||||
err = errBad
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
m.binders = append(m.binders, b)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (m *Mvc) Handler(handler interface{}) context.Handler {
|
||||
h, _ := MakeHandler(handler, m.binders) // it logs errors already, so on any error the "h" will be nil.
|
||||
return h
|
||||
}
|
||||
Reference in New Issue
Block a user