created mapping router
parent
55a0c662c6
commit
dc2ac1bcf4
|
@ -0,0 +1,28 @@
|
|||
package flog
|
||||
|
||||
|
||||
// NewMappingRouter returns an initialized MappingRouter.
|
||||
func NewMappingRouter(subrouter Router, fn func(string, map[string]interface{})(string, map[string]interface{})) *MappingRouter {
|
||||
router := MappingRouter{
|
||||
subrouter:subrouter,
|
||||
fn:fn,
|
||||
}
|
||||
|
||||
return &router
|
||||
}
|
||||
|
||||
|
||||
// MappingRouter is a Router that can modify the message and context before
|
||||
// re-routing it to its sub-router.
|
||||
//
|
||||
// Conceptually this is somewhat similar to "map" functions in functional
|
||||
// programming.
|
||||
type MappingRouter struct {
|
||||
subrouter Router
|
||||
fn func(string, map[string]interface{})(string, map[string]interface{})
|
||||
}
|
||||
|
||||
|
||||
func (router *MappingRouter) Route(message string, context map[string]interface{}) error {
|
||||
return router.subrouter.Route(router.fn(message, context))
|
||||
}
|
Loading…
Reference in New Issue