dashboard_snapshot.go 958 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/api/dtos"
  4. "github.com/grafana/grafana/pkg/bus"
  5. "github.com/grafana/grafana/pkg/middleware"
  6. m "github.com/grafana/grafana/pkg/models"
  7. "github.com/grafana/grafana/pkg/util"
  8. )
  9. func CreateDashboardSnapshot(c *middleware.Context, cmd m.CreateDashboardSnapshotCommand) {
  10. cmd.Key = util.GetRandomString(20)
  11. if err := bus.Dispatch(&cmd); err != nil {
  12. c.JsonApiErr(500, "Failed to create snaphost", err)
  13. return
  14. }
  15. c.JSON(200, util.DynMap{"key": cmd.Key})
  16. }
  17. func GetDashboardSnapshot(c *middleware.Context) {
  18. key := c.Params(":key")
  19. query := &m.GetDashboardSnapshotQuery{Key: key}
  20. err := bus.Dispatch(query)
  21. if err != nil {
  22. c.JsonApiErr(500, "Failed to get dashboard snapshot", err)
  23. return
  24. }
  25. dto := dtos.Dashboard{
  26. Model: query.Result.Dashboard,
  27. Meta: dtos.DashboardMeta{IsSnapshot: true},
  28. }
  29. c.Resp.Header().Set("Cache-Control", "public, max-age=31536000")
  30. c.JSON(200, dto)
  31. }