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
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
|
|
}
|