/
trafficanomalylocation.go
203 lines (174 loc) · 9.04 KB
/
trafficanomalylocation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
package radar
import (
"context"
"net/http"
"net/url"
"time"
"github.com/cloudflare/cloudflare-go/v2/internal/apijson"
"github.com/cloudflare/cloudflare-go/v2/internal/apiquery"
"github.com/cloudflare/cloudflare-go/v2/internal/param"
"github.com/cloudflare/cloudflare-go/v2/internal/requestconfig"
"github.com/cloudflare/cloudflare-go/v2/option"
)
// TrafficAnomalyLocationService contains methods and other services that help with
// interacting with the cloudflare API. Note, unlike clients, this service does not
// read variables from the environment automatically. You should not instantiate
// this service directly, and instead use the [NewTrafficAnomalyLocationService]
// method instead.
type TrafficAnomalyLocationService struct {
Options []option.RequestOption
}
// NewTrafficAnomalyLocationService generates a new service that applies the given
// options to each request. These options are applied after the parent client's
// options (if there is one), and before any request-specific options.
func NewTrafficAnomalyLocationService(opts ...option.RequestOption) (r *TrafficAnomalyLocationService) {
r = &TrafficAnomalyLocationService{}
r.Options = opts
return
}
// Internet traffic anomalies are signals that might point to an outage, These
// alerts are automatically detected by Radar and then manually verified by our
// team. This endpoint returns the sum of alerts grouped by location.
func (r *TrafficAnomalyLocationService) Get(ctx context.Context, query TrafficAnomalyLocationGetParams, opts ...option.RequestOption) (res *TrafficAnomalyLocationGetResponse, err error) {
opts = append(r.Options[:], opts...)
var env TrafficAnomalyLocationGetResponseEnvelope
path := "radar/traffic_anomalies/locations"
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &env, opts...)
if err != nil {
return
}
res = &env.Result
return
}
type TrafficAnomalyLocationGetResponse struct {
TrafficAnomalies []TrafficAnomalyLocationGetResponseTrafficAnomaly `json:"trafficAnomalies,required"`
JSON trafficAnomalyLocationGetResponseJSON `json:"-"`
}
// trafficAnomalyLocationGetResponseJSON contains the JSON metadata for the struct
// [TrafficAnomalyLocationGetResponse]
type trafficAnomalyLocationGetResponseJSON struct {
TrafficAnomalies apijson.Field
raw string
ExtraFields map[string]apijson.Field
}
func (r *TrafficAnomalyLocationGetResponse) UnmarshalJSON(data []byte) (err error) {
return apijson.UnmarshalRoot(data, r)
}
func (r trafficAnomalyLocationGetResponseJSON) RawJSON() string {
return r.raw
}
type TrafficAnomalyLocationGetResponseTrafficAnomaly struct {
ClientCountryAlpha2 string `json:"clientCountryAlpha2,required"`
ClientCountryName string `json:"clientCountryName,required"`
Value string `json:"value,required"`
JSON trafficAnomalyLocationGetResponseTrafficAnomalyJSON `json:"-"`
}
// trafficAnomalyLocationGetResponseTrafficAnomalyJSON contains the JSON metadata
// for the struct [TrafficAnomalyLocationGetResponseTrafficAnomaly]
type trafficAnomalyLocationGetResponseTrafficAnomalyJSON struct {
ClientCountryAlpha2 apijson.Field
ClientCountryName apijson.Field
Value apijson.Field
raw string
ExtraFields map[string]apijson.Field
}
func (r *TrafficAnomalyLocationGetResponseTrafficAnomaly) UnmarshalJSON(data []byte) (err error) {
return apijson.UnmarshalRoot(data, r)
}
func (r trafficAnomalyLocationGetResponseTrafficAnomalyJSON) RawJSON() string {
return r.raw
}
type TrafficAnomalyLocationGetParams struct {
// End of the date range (inclusive).
DateEnd param.Field[time.Time] `query:"dateEnd" format:"date-time"`
// Shorthand date ranges for the last X days - use when you don't need specific
// start and end dates.
DateRange param.Field[TrafficAnomalyLocationGetParamsDateRange] `query:"dateRange"`
// Start of the date range (inclusive).
DateStart param.Field[time.Time] `query:"dateStart" format:"date-time"`
// Format results are returned in.
Format param.Field[TrafficAnomalyLocationGetParamsFormat] `query:"format"`
// Limit the number of objects in the response.
Limit param.Field[int64] `query:"limit"`
Status param.Field[TrafficAnomalyLocationGetParamsStatus] `query:"status"`
}
// URLQuery serializes [TrafficAnomalyLocationGetParams]'s query parameters as
// `url.Values`.
func (r TrafficAnomalyLocationGetParams) URLQuery() (v url.Values) {
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
ArrayFormat: apiquery.ArrayQueryFormatRepeat,
NestedFormat: apiquery.NestedQueryFormatBrackets,
})
}
// Shorthand date ranges for the last X days - use when you don't need specific
// start and end dates.
type TrafficAnomalyLocationGetParamsDateRange string
const (
TrafficAnomalyLocationGetParamsDateRange1d TrafficAnomalyLocationGetParamsDateRange = "1d"
TrafficAnomalyLocationGetParamsDateRange2d TrafficAnomalyLocationGetParamsDateRange = "2d"
TrafficAnomalyLocationGetParamsDateRange7d TrafficAnomalyLocationGetParamsDateRange = "7d"
TrafficAnomalyLocationGetParamsDateRange14d TrafficAnomalyLocationGetParamsDateRange = "14d"
TrafficAnomalyLocationGetParamsDateRange28d TrafficAnomalyLocationGetParamsDateRange = "28d"
TrafficAnomalyLocationGetParamsDateRange12w TrafficAnomalyLocationGetParamsDateRange = "12w"
TrafficAnomalyLocationGetParamsDateRange24w TrafficAnomalyLocationGetParamsDateRange = "24w"
TrafficAnomalyLocationGetParamsDateRange52w TrafficAnomalyLocationGetParamsDateRange = "52w"
TrafficAnomalyLocationGetParamsDateRange1dControl TrafficAnomalyLocationGetParamsDateRange = "1dControl"
TrafficAnomalyLocationGetParamsDateRange2dControl TrafficAnomalyLocationGetParamsDateRange = "2dControl"
TrafficAnomalyLocationGetParamsDateRange7dControl TrafficAnomalyLocationGetParamsDateRange = "7dControl"
TrafficAnomalyLocationGetParamsDateRange14dControl TrafficAnomalyLocationGetParamsDateRange = "14dControl"
TrafficAnomalyLocationGetParamsDateRange28dControl TrafficAnomalyLocationGetParamsDateRange = "28dControl"
TrafficAnomalyLocationGetParamsDateRange12wControl TrafficAnomalyLocationGetParamsDateRange = "12wControl"
TrafficAnomalyLocationGetParamsDateRange24wControl TrafficAnomalyLocationGetParamsDateRange = "24wControl"
)
func (r TrafficAnomalyLocationGetParamsDateRange) IsKnown() bool {
switch r {
case TrafficAnomalyLocationGetParamsDateRange1d, TrafficAnomalyLocationGetParamsDateRange2d, TrafficAnomalyLocationGetParamsDateRange7d, TrafficAnomalyLocationGetParamsDateRange14d, TrafficAnomalyLocationGetParamsDateRange28d, TrafficAnomalyLocationGetParamsDateRange12w, TrafficAnomalyLocationGetParamsDateRange24w, TrafficAnomalyLocationGetParamsDateRange52w, TrafficAnomalyLocationGetParamsDateRange1dControl, TrafficAnomalyLocationGetParamsDateRange2dControl, TrafficAnomalyLocationGetParamsDateRange7dControl, TrafficAnomalyLocationGetParamsDateRange14dControl, TrafficAnomalyLocationGetParamsDateRange28dControl, TrafficAnomalyLocationGetParamsDateRange12wControl, TrafficAnomalyLocationGetParamsDateRange24wControl:
return true
}
return false
}
// Format results are returned in.
type TrafficAnomalyLocationGetParamsFormat string
const (
TrafficAnomalyLocationGetParamsFormatJson TrafficAnomalyLocationGetParamsFormat = "JSON"
TrafficAnomalyLocationGetParamsFormatCsv TrafficAnomalyLocationGetParamsFormat = "CSV"
)
func (r TrafficAnomalyLocationGetParamsFormat) IsKnown() bool {
switch r {
case TrafficAnomalyLocationGetParamsFormatJson, TrafficAnomalyLocationGetParamsFormatCsv:
return true
}
return false
}
type TrafficAnomalyLocationGetParamsStatus string
const (
TrafficAnomalyLocationGetParamsStatusVerified TrafficAnomalyLocationGetParamsStatus = "VERIFIED"
TrafficAnomalyLocationGetParamsStatusUnverified TrafficAnomalyLocationGetParamsStatus = "UNVERIFIED"
)
func (r TrafficAnomalyLocationGetParamsStatus) IsKnown() bool {
switch r {
case TrafficAnomalyLocationGetParamsStatusVerified, TrafficAnomalyLocationGetParamsStatusUnverified:
return true
}
return false
}
type TrafficAnomalyLocationGetResponseEnvelope struct {
Result TrafficAnomalyLocationGetResponse `json:"result,required"`
Success bool `json:"success,required"`
JSON trafficAnomalyLocationGetResponseEnvelopeJSON `json:"-"`
}
// trafficAnomalyLocationGetResponseEnvelopeJSON contains the JSON metadata for the
// struct [TrafficAnomalyLocationGetResponseEnvelope]
type trafficAnomalyLocationGetResponseEnvelopeJSON struct {
Result apijson.Field
Success apijson.Field
raw string
ExtraFields map[string]apijson.Field
}
func (r *TrafficAnomalyLocationGetResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
return apijson.UnmarshalRoot(data, r)
}
func (r trafficAnomalyLocationGetResponseEnvelopeJSON) RawJSON() string {
return r.raw
}