123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package statistic
- import "sync"
- type DailySummaryExport struct {
- TotalRequest int64 //Total request of the day
- ErrorRequest int64 //Invalid request of the day, including error or not found
- ValidRequest int64 //Valid request of the day
- ForwardTypes map[string]int
- RequestOrigin map[string]int
- RequestClientIp map[string]int
- Referer map[string]int
- UserAgent map[string]int
- RequestURL map[string]int
- }
- func DailySummaryToExport(summary DailySummary) DailySummaryExport {
- export := DailySummaryExport{
- TotalRequest: summary.TotalRequest,
- ErrorRequest: summary.ErrorRequest,
- ValidRequest: summary.ValidRequest,
- 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),
- }
- summary.ForwardTypes.Range(func(key, value interface{}) bool {
- export.ForwardTypes[key.(string)] = value.(int)
- return true
- })
- summary.RequestOrigin.Range(func(key, value interface{}) bool {
- export.RequestOrigin[key.(string)] = value.(int)
- return true
- })
- summary.RequestClientIp.Range(func(key, value interface{}) bool {
- export.RequestClientIp[key.(string)] = value.(int)
- return true
- })
- summary.Referer.Range(func(key, value interface{}) bool {
- export.Referer[key.(string)] = value.(int)
- return true
- })
- summary.UserAgent.Range(func(key, value interface{}) bool {
- export.UserAgent[key.(string)] = value.(int)
- return true
- })
- summary.RequestURL.Range(func(key, value interface{}) bool {
- export.RequestURL[key.(string)] = value.(int)
- return true
- })
- return export
- }
- func DailySummaryExportToSummary(export DailySummaryExport) DailySummary {
- summary := DailySummary{
- TotalRequest: export.TotalRequest,
- ErrorRequest: export.ErrorRequest,
- ValidRequest: export.ValidRequest,
- ForwardTypes: &sync.Map{},
- RequestOrigin: &sync.Map{},
- RequestClientIp: &sync.Map{},
- Referer: &sync.Map{},
- UserAgent: &sync.Map{},
- RequestURL: &sync.Map{},
- }
- for k, v := range export.ForwardTypes {
- summary.ForwardTypes.Store(k, v)
- }
- for k, v := range export.RequestOrigin {
- summary.RequestOrigin.Store(k, v)
- }
- for k, v := range export.RequestClientIp {
- summary.RequestClientIp.Store(k, v)
- }
- for k, v := range export.Referer {
- summary.Referer.Store(k, v)
- }
- for k, v := range export.UserAgent {
- summary.UserAgent.Store(k, v)
- }
- for k, v := range export.RequestURL {
- summary.RequestURL.Store(k, v)
- }
- return summary
- }
- // External object function call
- func (c *Collector) GetExportSummary() *DailySummaryExport {
- exportFormatDailySummary := DailySummaryToExport(*c.DailySummary)
- return &exportFormatDailySummary
- }
|