api_render.go 799 B

12345678910111213141516171819202122232425262728293031323334
  1. package api
  2. import (
  3. "strconv"
  4. "github.com/gin-gonic/gin"
  5. "github.com/torkelo/grafana-pro/pkg/components"
  6. )
  7. func init() {
  8. addRoutes(func(self *HttpServer) {
  9. self.addRoute("GET", "/render/*url", self.renderToPng)
  10. })
  11. }
  12. func (self *HttpServer) renderToPng(c *gin.Context, auth *authContext) {
  13. accountId := auth.getAccountId()
  14. query := c.Request.URL.Query()
  15. queryParams := "?render&accountId=" + strconv.Itoa(accountId) + "&" + c.Request.URL.RawQuery
  16. renderOpts := &components.RenderOpts{
  17. Url: c.Params.ByName("url") + queryParams,
  18. Width: query["width"][0],
  19. Height: query["height"][0],
  20. }
  21. renderOpts.Url = "http://localhost:3000" + renderOpts.Url
  22. pngPath, err := self.renderer.RenderToPng(renderOpts)
  23. if err != nil {
  24. c.HTML(500, "error.html", nil)
  25. }
  26. c.File(pngPath)
  27. }