package internal import ( "net/http" "strconv" "time" ) func (a *adminHandler) getStats(r *http.Request) (*RestResponse, error) { q := r.URL.Query() startFilter := q.Get("start") endFilter := q.Get("end") key := q.Get("key") intervalSecondsStr := q.Get("interval") var err error startTime := time.Now().Add(time.Hour * -86400) endTime := time.Now() if startFilter != "" { var startUnixTime int64 if startUnixTime, err = strconv.ParseInt(startFilter, 10, strconv.IntSize); err != nil { return BasicResponse(false, "start: must be a valid unix timestamp"), nil } startTime = time.Unix(startUnixTime, 0) } if endFilter != "" { var endUnixTime int64 if endUnixTime, err = strconv.ParseInt(endFilter, 10, strconv.IntSize); err != nil { return BasicResponse(false, "end: must be a valid unix timestamp"), nil } endTime = time.Unix(endUnixTime, 0) } lai := LogAggregateInput{ Start: startTime, End: endTime, Column: key, } if intervalSecondsStr != "" { if lai.IntervalSeconds, err = strconv.Atoi(intervalSecondsStr); err != nil { return BasicResponse(false, "interval query param must be a valid whole number greater than zero"), nil } } la, err := a.Storage.GetLogAggregate(lai) if err != nil { return nil, err } return BasicResponse(true, la), nil } type LogFilter struct { Expression string } func (a *adminHandler) getLog(r *http.Request) (*RestResponse, error) { q := r.URL.Query() startFilter := q.Get("start") endFilter := q.Get("end") pageSizeStr := q.Get("pageSize") // filter := LogFilter{Expression: q.Get("filter")} pageStr := q.Get("page") var err error var page int pageSize := 25 startTime := time.Now().Add(time.Hour * -86400) endTime := time.Now() if startFilter != "" { var startUnixTime int64 if startUnixTime, err = strconv.ParseInt(startFilter, 10, strconv.IntSize); err != nil { return BasicResponse(false, "start: must be a valid unix timestamp"), nil } startTime = time.Unix(startUnixTime, 0) } if endFilter != "" { var endUnixTime int64 if endUnixTime, err = strconv.ParseInt(endFilter, 10, strconv.IntSize); err != nil { return BasicResponse(false, "end: must be a valid unix timestamp"), nil } endTime = time.Unix(endUnixTime, 0) } if pageStr != "" { if page, err = strconv.Atoi(pageStr); err != nil { return BasicResponse(false, "page: must be a valid integer"), nil } } if pageSizeStr != "" { if pageSize, err = strconv.Atoi(pageSizeStr); err != nil { return BasicResponse(false, "pageSize: must be a valid integer"), nil } } gli := GetLogInput{ // Filter: filter, Start: startTime, End: endTime, Limit: pageSize, Page: page, } // if err := gli.Validate(); err != nil { // return BasicResponse(false, err.Error()), nil // } ql, err := a.Storage.GetLog(gli) if err != nil { return nil, err } return BasicResponse(true, ql), nil }