Add Context to Plugin.Inject
This allows to access the request metadata and the session from injectors.
This commit is contained in:
parent
ca3672df2a
commit
020e27fe45
4 changed files with 7 additions and 7 deletions
|
@ -18,7 +18,7 @@ type Plugin interface {
|
||||||
SetRoutes(group *echo.Group)
|
SetRoutes(group *echo.Group)
|
||||||
// Inject is called prior to rendering a template. It can extend the
|
// Inject is called prior to rendering a template. It can extend the
|
||||||
// template data by setting new items in the Extra map.
|
// template data by setting new items in the Extra map.
|
||||||
Inject(name string, data RenderData) error
|
Inject(ctx *Context, name string, data RenderData) error
|
||||||
// Close is called when the plugin is unloaded.
|
// Close is called when the plugin is unloaded.
|
||||||
Close() error
|
Close() error
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,14 +40,14 @@ func (p *goPlugin) SetRoutes(group *echo.Group) {
|
||||||
group.Static("/plugins/"+p.p.Name+"/assets", pluginDir+"/"+p.p.Name+"/public/assets")
|
group.Static("/plugins/"+p.p.Name+"/assets", pluginDir+"/"+p.p.Name+"/public/assets")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *goPlugin) Inject(name string, data RenderData) error {
|
func (p *goPlugin) Inject(ctx *Context, name string, data RenderData) error {
|
||||||
if f, ok := p.p.injectFuncs["*"]; ok {
|
if f, ok := p.p.injectFuncs["*"]; ok {
|
||||||
if err := f(data); err != nil {
|
if err := f(ctx, data); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if f, ok := p.p.injectFuncs[name]; ok {
|
if f, ok := p.p.injectFuncs[name]; ok {
|
||||||
return f(data)
|
return f(ctx, data)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ func (p *GoPlugin) TemplateFuncs(funcs template.FuncMap) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// InjectFunc is a function that injects data prior to rendering a template.
|
// InjectFunc is a function that injects data prior to rendering a template.
|
||||||
type InjectFunc func(data RenderData) error
|
type InjectFunc func(ctx *Context, data RenderData) error
|
||||||
|
|
||||||
// Inject registers a function to execute prior to rendering a template. The
|
// Inject registers a function to execute prior to rendering a template. The
|
||||||
// special name "*" matches any template.
|
// special name "*" matches any template.
|
||||||
|
|
|
@ -86,7 +86,7 @@ func (p *luaPlugin) inject(name string, data RenderData) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *luaPlugin) Inject(name string, data RenderData) error {
|
func (p *luaPlugin) Inject(ctx *Context, name string, data RenderData) error {
|
||||||
if err := p.inject("*", data); err != nil {
|
if err := p.inject("*", data); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ func (r *renderer) Render(w io.Writer, name string, data interface{}, ectx echo.
|
||||||
ctx := ectx.Get("context").(*Context)
|
ctx := ectx.Get("context").(*Context)
|
||||||
|
|
||||||
for _, plugin := range ctx.Server.Plugins {
|
for _, plugin := range ctx.Server.Plugins {
|
||||||
if err := plugin.Inject(name, data.(RenderData)); err != nil {
|
if err := plugin.Inject(ctx, name, data.(RenderData)); err != nil {
|
||||||
return fmt.Errorf("failed to run plugin '%v': %v", plugin.Name(), err)
|
return fmt.Errorf("failed to run plugin '%v': %v", plugin.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue