aboutsummaryrefslogtreecommitdiffstats
path: root/http/http.go
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-06-19 20:44:50 +0200
committerMartin Polden <mpolden@mpolden.no>2020-06-19 20:46:54 +0200
commitb5b4353ad8b1c5535fe592dc6bed03853ba73ccf (patch)
treeb64d76067420cc689f545f336266f72e22ab26f4 /http/http.go
parent48ac223f31d4b9bb456f1245529daa52f59a0dab (diff)
http: Support multiple metric formats
Diffstat (limited to 'http/http.go')
-rw-r--r--http/http.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/http/http.go b/http/http.go
index 7eb7184..8a219dc 100644
--- a/http/http.go
+++ b/http/http.go
@@ -181,7 +181,7 @@ func (s *Server) logHandler(w http.ResponseWriter, r *http.Request) (interface{}
return entries, nil
}
-func (s *Server) metricHandler(w http.ResponseWriter, r *http.Request) (interface{}, *httpError) {
+func (s *Server) basicMetricHandler(w http.ResponseWriter, r *http.Request) (interface{}, *httpError) {
resolution, err := resolutionFrom(r)
if err != nil {
return nil, newHTTPBadRequest(err)
@@ -220,6 +220,18 @@ func (s *Server) metricHandler(w http.ResponseWriter, r *http.Request) (interfac
}, nil
}
+func (s *Server) metricHandler(w http.ResponseWriter, r *http.Request) (interface{}, *httpError) {
+ format := ""
+ if formatParams := r.URL.Query()["format"]; len(formatParams) > 0 {
+ format = formatParams[0]
+ }
+ switch format {
+ case "", "basic":
+ return s.basicMetricHandler(w, r)
+ }
+ return nil, newHTTPBadRequest(fmt.Errorf("invalid metric format: %s", format))
+}
+
// Close shuts down the HTTP server.
func (s *Server) Close() error { return s.server.Shutdown(context.TODO()) }