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.
125 lines
2.9 KiB
125 lines
2.9 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
|
|
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
|
|
}
|