iris/mvc/activator/methodfunc/methodfunc.go

36 lines
623 B
Go
Raw Normal View History

package methodfunc
import (
"reflect"
)
// MethodFunc the handler function.
type MethodFunc struct {
FuncInfo
FuncCaller
RelPath string
}
// Resolve returns all the method funcs
// necessary information and actions to
// perform the request.
func Resolve(typ reflect.Type) (methodFuncs []MethodFunc) {
infos := fetchInfos(typ)
for _, info := range infos {
p, ok := resolveRelativePath(info)
if !ok {
continue
}
caller := resolveCaller(p)
methodFunc := MethodFunc{
RelPath: p.RelPath,
FuncInfo: info,
FuncCaller: caller,
}
methodFuncs = append(methodFuncs, methodFunc)
}
return
}