12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package analytic
- import (
- "fmt"
- "time"
- "imuslab.com/zoraxy/mod/statistic"
- )
- // Generate all the record keys from a given start and end dates
- func generateDateRange(startDate, endDate string) ([]string, error) {
- layout := "2006_01_02"
- start, err := time.Parse(layout, startDate)
- if err != nil {
- return nil, fmt.Errorf("error parsing start date: %v", err)
- }
- end, err := time.Parse(layout, endDate)
- if err != nil {
- return nil, fmt.Errorf("error parsing end date: %v", err)
- }
- var dateRange []string
- for d := start; !d.After(end); d = d.AddDate(0, 0, 1) {
- dateRange = append(dateRange, d.Format(layout))
- }
- return dateRange, nil
- }
- func mergeDailySummaryExports(exports []*statistic.DailySummaryExport) *statistic.DailySummaryExport {
- mergedExport := &statistic.DailySummaryExport{
- ForwardTypes: make(map[string]int),
- RequestOrigin: make(map[string]int),
- RequestClientIp: make(map[string]int),
- Referer: make(map[string]int),
- UserAgent: make(map[string]int),
- RequestURL: make(map[string]int),
- }
- for _, export := range exports {
- mergedExport.TotalRequest += export.TotalRequest
- mergedExport.ErrorRequest += export.ErrorRequest
- mergedExport.ValidRequest += export.ValidRequest
- for key, value := range export.ForwardTypes {
- mergedExport.ForwardTypes[key] += value
- }
- for key, value := range export.RequestOrigin {
- mergedExport.RequestOrigin[key] += value
- }
- for key, value := range export.RequestClientIp {
- mergedExport.RequestClientIp[key] += value
- }
- for key, value := range export.Referer {
- mergedExport.Referer[key] += value
- }
- for key, value := range export.UserAgent {
- mergedExport.UserAgent[key] += value
- }
- for key, value := range export.RequestURL {
- mergedExport.RequestURL[key] += value
- }
- }
- return mergedExport
- }
- func mapToStringSlice(m map[string]int) []string {
- slice := make([]string, 0, len(m))
- for k := range m {
- slice = append(slice, k)
- }
- return slice
- }
- func isTodayDate(dateStr string) bool {
- today := time.Now().Local().Format("2006-01-02")
- inputDate, err := time.Parse("2006-01-02", dateStr)
- if err != nil {
- inputDate, err = time.Parse("2006_01_02", dateStr)
- if err != nil {
- fmt.Println("Invalid date format")
- return false
- }
- }
- return inputDate.Format("2006-01-02") == today
- }
|