You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
2.7 KiB

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
startUnixTime := time.Now().Add(time.Second * -86400).UTC().Unix()
endUnixTime := time.Now().UTC().Unix()
if startFilter != "" {
if startUnixTime, err = strconv.ParseInt(startFilter, 10, strconv.IntSize); err != nil {
return BasicResponse(false, "start: must be a valid unix timestamp"), nil
}
}
if endFilter != "" {
if endUnixTime, err = strconv.ParseInt(endFilter, 10, strconv.IntSize); err != nil {
return BasicResponse(false, "end: must be a valid unix timestamp"), nil
}
}
lai := LogAggregateInput{
Start: startUnixTime,
End: endUnixTime,
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
startUnixTime := time.Now().UTC().Add(time.Second * -86400).Unix()
endUnixTime := time.Now().UTC().Unix()
if startFilter != "" {
if startUnixTime, err = strconv.ParseInt(startFilter, 10, strconv.IntSize); err != nil {
return BasicResponse(false, "start: must be a valid unix timestamp"), nil
}
}
if endFilter != "" {
if endUnixTime, err = strconv.ParseInt(endFilter, 10, strconv.IntSize); err != nil {
return BasicResponse(false, "end: must be a valid unix timestamp"), nil
}
}
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: startUnixTime,
End: endUnixTime,
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
}