package cdn

type Request struct {
	Day           string `json:"day" form:"day"`
	ServerID      int64  `json:"serverId" form:"serverId"`
	Size          int64  `json:"size" form:"size"`
	UserID        int64  `json:"userId" form:"userId"`
	HasError	  *bool   `json:"hasError" form:"hasError"`
	Ip            string `json:"ip" form:"ip"`
	Domain 	  	  string `json:"domain" form:"domain"`
	HourFrom      string `json:"hourFrom" form:"hourFrom"`
	HourTo        string `json:"hourTo" form:"hourTo"`
	Reverse       bool   `json:"reverse" form:"reverse" default:"false"`
	RequestId     string `json:"requestId" form:"requestId"`
	Keyword       string `json:"keyword" form:"keyword"`
}


type Data struct {
	HTTPAccessLogs []HTTPAccessLog `json:"httpAccessLogs"`
	RequestID      string          `json:"requestId"`
	HasMore        bool            `json:"hasMore"`
}

type HTTPAccessLog struct {
	BodyBytesSent            int64      `json:"bodyBytesSent"`
	BytesSent                int64      `json:"bytesSent"`
	ContentType              string     `json:"contentType"`
	Header                   Header     `json:"header"`
	Host                     string     `json:"host"`
	Hostname                 string     `json:"hostname"`
	Msec                     float64    `json:"msec"`
	Node                     Node       `json:"node"`
	NodeID                   int64      `json:"nodeId"`
	OriginAddress            string     `json:"originAddress"`
	OriginHeaderResponseTime float64    `json:"originHeaderResponseTime"`
	OriginID                 int64      `json:"originId"`
	OriginStatus             int64      `json:"originStatus"`
	Proto                    string     `json:"proto"`
	RawRemoteAddr            string     `json:"rawRemoteAddr"`
	Referer                  string     `json:"referer"`
	RemoteAddr               string     `json:"remoteAddr"`
	RemotePort               int64      `json:"remotePort"`
	Request                  string     `json:"request"`
	RequestID                string     `json:"requestId"`
	RequestLength            int64      `json:"requestLength"`
	RequestMethod            string     `json:"requestMethod"`
	RequestPath              string     `json:"requestPath"`
	RequestTime              float64    `json:"requestTime"`
	RequestURI               string     `json:"requestURI"`
	Scheme                   string     `json:"scheme"`
	SentHeader               SentHeader `json:"sentHeader"`
	ServerID                 int64      `json:"serverId"`
	ServerName               string     `json:"serverName"`
	ServerPort               int64      `json:"serverPort"`
	ServerProtocol           string     `json:"serverProtocol"`
	Status                   int64      `json:"status"`
	TimeISO8601              string     `json:"timeISO8601"`
	TimeLocal                string     `json:"timeLocal"`
	Timestamp                int64      `json:"timestamp"`
	UserAgent                string     `json:"userAgent"`
}

type Header struct {
	Accept                  Accept                   `json:"Accept"`
	AcceptCharset           *AcceptCharset           `json:"Accept-Charset,omitempty"`
	AcceptEncoding          AcceptEncoding           `json:"Accept-Encoding"`
	AcceptLanguage          *AcceptLanguage          `json:"Accept-Language,omitempty"`
	AdminAccess             *AdminAccess             `json:"Admin-Access,omitempty"`
	CacheControl            *HeaderCacheControl      `json:"Cache-Control,omitempty"`
	Connection              *Connection              `json:"Connection,omitempty"`
	ContentLength           *HeaderContentLength     `json:"Content-Length,omitempty"`
	ContentType             *HeaderContentType       `json:"Content-Type,omitempty"`
	Cookie                  *Cookie                  `json:"Cookie,omitempty"`
	Origin                  *Origin                  `json:"Origin,omitempty"`
	Priority                *Priority                `json:"Priority,omitempty"`
	Referer                 *Referer                 `json:"Referer,omitempty"`
	SECCHUA                 *SECCHUA                 `json:"Sec-CH-UA,omitempty"`
	SECCHUAMobile           *SECCHUAMobile           `json:"Sec-CH-UA-Mobile,omitempty"`
	SECChUaMobile           *SECChUaMobile           `json:"Sec-Ch-Ua-Mobile,omitempty"`
	SECCHUAPlatform         *SECCHUAPlatform         `json:"Sec-CH-UA-Platform,omitempty"`
	SECFetchDest            *SECFetchDest            `json:"Sec-Fetch-Dest,omitempty"`
	SECFetchMode            *SECFetchMode            `json:"Sec-Fetch-Mode,omitempty"`
	SECFetchSite            *SECFetchSite            `json:"Sec-Fetch-Site,omitempty"`
	SECFetchStorageAccess   *SECFetchStorageAccess   `json:"Sec-Fetch-Storage-Access,omitempty"`
	SECFetchUser            *SECFetchUser            `json:"Sec-Fetch-User,omitempty"`
	Token                   *Token                   `json:"Token,omitempty"`
	UpgradeInsecureRequests *UpgradeInsecureRequests `json:"Upgrade-Insecure-Requests,omitempty"`
	UserAgent               UserAgent                `json:"User-Agent"`
	XForwardedBy            *XForwardedBy            `json:"X-Forwarded-By,omitempty"`
	XForwardedFor           *XForwardedFor           `json:"X-Forwarded-For,omitempty"`
	XForwardedHost          *XForwardedHost          `json:"X-Forwarded-Host,omitempty"`
	XForwardedProto         *XForwardedProto         `json:"X-Forwarded-Proto,omitempty"`
	XRealIP                 *XRealIP                 `json:"X-Real-IP,omitempty"`
}

type Accept struct {
	Values []string `json:"values"`
}

type AcceptCharset struct {
	Values []string `json:"values"`
}

type AcceptEncoding struct {
	Values []string `json:"values"`
}

type AcceptLanguage struct {
	Values []string `json:"values"`
}

type AdminAccess struct {
	Values []string `json:"values"`
}

type HeaderCacheControl struct {
	Values []string `json:"values"`
}

type Connection struct {
	Values []string `json:"values"`
}

type HeaderContentLength struct {
	Values []string `json:"values"`
}

type HeaderContentType struct {
	Values []string `json:"values"`
}

type Cookie struct {
	Values []string `json:"values"`
}

type Origin struct {
	Values []string `json:"values"`
}

type Priority struct {
	Values []string `json:"values"`
}

type Referer struct {
	Values []string `json:"values"`
}

type SECCHUA struct {
	Values []string `json:"values"`
}

type SECCHUAMobile struct {
	Values []string `json:"values"`
}

type SECCHUAPlatform struct {
	Values []string `json:"values"`
}

type SECChUaMobile struct {
	Values []string `json:"values"`
}

type SECFetchDest struct {
	Values []string `json:"values"`
}

type SECFetchMode struct {
	Values []string `json:"values"`
}

type SECFetchSite struct {
	Values []string `json:"values"`
}

type SECFetchStorageAccess struct {
	Values []string `json:"values"`
}

type SECFetchUser struct {
	Values []string `json:"values"`
}

type Token struct {
	Values []string `json:"values"`
}

type UpgradeInsecureRequests struct {
	Values []string `json:"values"`
}

type UserAgent struct {
	Values []string `json:"values"`
}

type XForwardedBy struct {
	Values []string `json:"values"`
}

type XForwardedFor struct {
	Values []string `json:"values"`
}

type XForwardedHost struct {
	Values []string `json:"values"`
}

type XForwardedProto struct {
	Values []string `json:"values"`
}

type XRealIP struct {
	Values []string `json:"values"`
}

type Node struct {
	ID          int64       `json:"id"`
	Name        string      `json:"name"`
	NodeCluster NodeCluster `json:"nodeCluster"`
}

type NodeCluster struct {
	ID   int64  `json:"id"`
	Name string `json:"name"`
}

type SentHeader struct {
	AcceptRanges    *AcceptRanges            `json:"Accept-Ranges,omitempty"`
	CacheControl    *SentHeaderCacheControl  `json:"Cache-Control,omitempty"`
	ContentEncoding *ContentEncoding         `json:"Content-Encoding,omitempty"`
	ContentLength   *SentHeaderContentLength `json:"Content-Length,omitempty"`
	ContentType     SentHeaderContentType    `json:"Content-Type"`
	Date            *Date                    `json:"Date,omitempty"`
	Etag            *Etag                    `json:"Etag,omitempty"`
	Expires         *Expires                 `json:"Expires,omitempty"`
	LastModified    *LastModified            `json:"Last-Modified,omitempty"`
	Location        Location                 `json:"Location"`
	Server          *Server                  `json:"Server,omitempty"`
	Vary            *Vary                    `json:"Vary,omitempty"`
}

type AcceptRanges struct {
	Values []string `json:"values"`
}

type SentHeaderCacheControl struct {
	Values []string `json:"values"`
}

type ContentEncoding struct {
	Values []string `json:"values"`
}

type SentHeaderContentLength struct {
	Values []string `json:"values"`
}

type SentHeaderContentType struct {
	Values []string `json:"values"`
}

type Date struct {
	Values []string `json:"values"`
}

type Etag struct {
	Values []string `json:"values"`
}

type Expires struct {
	Values []string `json:"values"`
}

type LastModified struct {
	Values []string `json:"values"`
}

type Location struct {
	Values []string `json:"values"`
}

type Server struct {
	Values []string `json:"values"`
}

type Vary struct {
	Values []string `json:"values"`
}