| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | package api | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2015-01-29 19:10:34 +08:00
										 |  |  | 	"fmt" | 
					
						
							| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | 	"net/http" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-05 17:37:13 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/components/renderer" | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/middleware" | 
					
						
							| 
									
										
										
										
											2015-02-06 21:17:40 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/setting" | 
					
						
							| 
									
										
										
										
											2015-02-05 17:37:13 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/util" | 
					
						
							| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func RenderToPng(c *middleware.Context) { | 
					
						
							| 
									
										
										
										
											2015-01-08 16:00:00 +08:00
										 |  |  | 	queryReader := util.NewUrlQueryReader(c.Req.URL) | 
					
						
							| 
									
										
										
										
											2015-03-21 07:14:13 +08:00
										 |  |  | 	queryParams := fmt.Sprintf("?%s", c.Req.URL.RawQuery) | 
					
						
							| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	renderOpts := &renderer.RenderOpts{ | 
					
						
							| 
									
										
										
										
											2015-03-21 07:14:13 +08:00
										 |  |  | 		Url:       c.Params("*") + queryParams, | 
					
						
							|  |  |  | 		Width:     queryReader.Get("width", "800"), | 
					
						
							|  |  |  | 		Height:    queryReader.Get("height", "400"), | 
					
						
							|  |  |  | 		SessionId: c.Session.ID(), | 
					
						
							| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 21:17:40 +08:00
										 |  |  | 	renderOpts.Url = setting.ToAbsUrl(renderOpts.Url) | 
					
						
							| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | 	pngPath, err := renderer.RenderToPng(renderOpts) | 
					
						
							| 
									
										
										
										
											2015-02-05 19:23:24 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-05 19:23:24 +08:00
										 |  |  | 		c.Handle(500, "Failed to render to png", err) | 
					
						
							|  |  |  | 		return | 
					
						
							| 
									
										
										
										
											2014-12-29 20:36:08 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	c.Resp.Header().Set("Content-Type", "image/png") | 
					
						
							|  |  |  | 	http.ServeFile(c.Resp, c.Req.Request, pngPath) | 
					
						
							|  |  |  | } |