diff --git a/pkg/plugins/api_plugin.go b/pkg/plugins/api_plugin.go new file mode 100644 index 00000000000..0a47b7d18b2 --- /dev/null +++ b/pkg/plugins/api_plugin.go @@ -0,0 +1,30 @@ +package plugins + +import ( + "encoding/json" + + "github.com/grafana/grafana/pkg/models" +) + +type ApiPluginRoute struct { + Path string `json:"path"` + Method string `json:"method"` + ReqSignedIn bool `json:"reqSignedIn"` + ReqGrafanaAdmin bool `json:"reqGrafanaAdmin"` + ReqRole models.RoleType `json:"reqRole"` + Url string `json:"url"` +} + +type ApiPlugin struct { + PluginBase + Routes []*ApiPluginRoute `json:"routes"` +} + +func (app *ApiPlugin) Load(decoder *json.Decoder, pluginDir string) error { + if err := decoder.Decode(&app); err != nil { + return err + } + + ApiPlugins[app.Id] = app + return nil +} diff --git a/pkg/plugins/models.go b/pkg/plugins/models.go index 375bdf1a52c..b302181e840 100644 --- a/pkg/plugins/models.go +++ b/pkg/plugins/models.go @@ -2,8 +2,6 @@ package plugins import ( "encoding/json" - - "github.com/grafana/grafana/pkg/models" ) type PluginLoader interface { @@ -44,20 +42,6 @@ type PluginStaticRoute struct { PluginId string } -type ApiPluginRoute struct { - Path string `json:"path"` - Method string `json:"method"` - ReqSignedIn bool `json:"reqSignedIn"` - ReqGrafanaAdmin bool `json:"reqGrafanaAdmin"` - ReqRole models.RoleType `json:"reqRole"` - Url string `json:"url"` -} - -type ApiPlugin struct { - PluginBase - Routes []*ApiPluginRoute `json:"routes"` -} - type EnabledPlugins struct { Panels []*PanelPlugin DataSources map[string]*DataSourcePlugin