Received: from out1.migadu.com (out1.migadu.com [91.121.223.63]) by mail-b.sr.ht (Postfix) with ESMTPS id E146AFF12E for <~sircmpwn/chartsrv-devel@lists.sr.ht>; Wed, 21 Oct 2020 23:09:08 +0000 (UTC) Authentication-Results: mail-b.sr.ht; dkim=fail reason="key not found in DNS" (0-bit key) header.d=pixelhero.dev header.i=@pixelhero.dev header.b=iTrH753W X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pixelhero.dev; s=key1; t=1603321747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=8ax9ZxeQvTM44I7dc/YNGeVXOWZ4gEKnLcFODRuNI7U=; b=iTrH753W2nNmW9T1iedsBpqEVVv0x6Noc0xAqEq/KPKjXR8jzrQmed7BKI0rU/MWzkv3B+ 7mWRtLKKB198dt5TxpOlrZQvW0NdJEr5l9vMwuUc8QQ7xPrlEjCR9Qfzm5O6G4ecvXXvCV l0ddke3yhLytQiS6y9hnN4KnWyYQ4aHdLfLiCrEfgrHDrfgEJJU0cCuZD71N2jtrKXmv3Y PXpEZI5MD1Nv4L4wtP5SWJ4BK5ufXiXjLlSYfzH6BGN5V5Wg768b6o/9BfCOzNvnGLlQN/ DIeJD19I9ijhps0bheW2BpyPoVW6uQ2J0AAGowR44Rvo8JvXsv78Cv7GK2k3MA== From: Noam Preil To: ~sircmpwn/chartsrv-devel@lists.sr.ht Cc: Noam Preil Subject: [PATCH] Add /chart.png path Date: Wed, 21 Oct 2020 23:04:47 +0000 Message-Id: <20201021230447.6497-1-noam@pixelhero.dev> MIME-Version: 1.0 X-Spam-Score: 0.00 Content-Transfer-Encoding: quoted-printable --- main.go | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index 2bce2d7..0eab06f 100644 --- a/main.go +++ b/main.go @@ -126,19 +126,8 @@ func metricName(metric map[string]string) string { return out + "{" + strings.Join(inner, ",") + "}" } =20 -func main() { - plotutil.DefaultDashes =3D [][]vg.Length{{}} - - if len(os.Args) < 2 { - fmt.Printf("Usage: %s server\n", os.Args[0]) - os.Exit(1) - } - upstream =3D os.Args[1] - router :=3D chi.NewRouter() - router.Use(middleware.RealIP) - router.Use(middleware.Logger) - - router.Get("/chart.svg", func(w http.ResponseWriter, r *http.Request) { +func registerExtension(router chi.Router, extension string, mime string)= { + router.Get("/chart."+extension, func(w http.ResponseWriter, r *http.Req= uest) { args :=3D r.URL.Query() var query string if q, ok :=3D args["query"]; !ok { @@ -261,17 +250,35 @@ func main() { p.Add(plotters[i]) } =20 - writer, err :=3D p.WriterTo(width, height, "svg") + writer, err :=3D p.WriterTo(width, height, extension) if err !=3D nil { w.WriteHeader(400) w.Write([]byte(fmt.Sprintf("%v", err))) return } =20 - w.Header().Add("Content-Type", "image/svg+xml") + w.Header().Add("Content-Type", mime) writer.WriteTo(w) }) =20 +} + +func main() { + plotutil.DefaultDashes =3D [][]vg.Length{{}} + + if len(os.Args) < 2 { + fmt.Printf("Usage: %s server\n", os.Args[0]) + os.Exit(1) + } + upstream =3D os.Args[1] + router :=3D chi.NewRouter() + + router.Use(middleware.RealIP) + router.Use(middleware.Logger) + + registerExtension(router, "svg", "image/svg+xml") + registerExtension(router, "png", "image/png") + addr :=3D ":8142" if len(os.Args) > 2 { addr =3D os.Args[2] --=20 2.28.0