diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-06-19 20:44:50 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-06-19 20:46:54 +0200 |
commit | b5b4353ad8b1c5535fe592dc6bed03853ba73ccf (patch) | |
tree | b64d76067420cc689f545f336266f72e22ab26f4 /http/http.go | |
parent | 48ac223f31d4b9bb456f1245529daa52f59a0dab (diff) |
http: Support multiple metric formats
Diffstat (limited to 'http/http.go')
-rw-r--r-- | http/http.go | 14 |
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()) } |