diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-12-27 11:38:57 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-12-27 11:38:57 +0100 |
commit | c3c98ba28274850e409598607d7236953c880762 (patch) | |
tree | 5c16be3b68415db47a10b768de58b83917c8d82e /http/http.go | |
parent | 37c3981796f246d0c7a5b5d11eace41c989c7883 (diff) |
Add query parameter for limiting results
Diffstat (limited to 'http/http.go')
-rw-r--r-- | http/http.go | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/http/http.go b/http/http.go index c2c6c5c..1a983e8 100644 --- a/http/http.go +++ b/http/http.go @@ -5,6 +5,7 @@ import ( "encoding/json" "net" "net/http" + "strconv" "time" "github.com/mpolden/zdns/cache" @@ -93,8 +94,18 @@ func notFoundHandler(w http.ResponseWriter, r *http.Request) (interface{}, *http } } +func listCountFrom(r *http.Request) int { + defaultCount := 100 + param := r.URL.Query().Get("n") + n, err := strconv.Atoi(param) + if err != nil { + return defaultCount + } + return n +} + func (s *Server) cacheHandler(w http.ResponseWriter, r *http.Request) (interface{}, *httpError) { - cacheValues := s.cache.List(100) + cacheValues := s.cache.List(listCountFrom(r)) entries := make([]entry, 0, len(cacheValues)) for _, v := range cacheValues { entries = append(entries, entry{ @@ -110,7 +121,7 @@ func (s *Server) cacheHandler(w http.ResponseWriter, r *http.Request) (interface } func (s *Server) logHandler(w http.ResponseWriter, r *http.Request) (interface{}, *httpError) { - logEntries, err := s.logger.Get(100) + logEntries, err := s.logger.Get(listCountFrom(r)) if err != nil { return nil, &httpError{ err: err, |