From 18af7a0cb4460de9d738bcac9eca7a1869804828 Mon Sep 17 00:00:00 2001 From: stainless-bot Date: Wed, 10 Apr 2024 18:13:31 +0000 Subject: [PATCH] feat(api): OpenAPI spec update via Stainless API --- .stats.yml | 2 +- api.md | 10 -- magic_network_monitoring/rule.go | 3 +- request_tracers/trace.go | 209 ------------------------------- request_tracers/trace_test.go | 78 ------------ 5 files changed, 3 insertions(+), 299 deletions(-) delete mode 100644 request_tracers/trace_test.go diff --git a/.stats.yml b/.stats.yml index 0818ecbb822..a9d90133735 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1 +1 @@ -configured_endpoints: 1251 +configured_endpoints: 1250 diff --git a/api.md b/api.md index 7ca2cee8859..b8fe32d37e0 100644 --- a/api.md +++ b/api.md @@ -3857,16 +3857,6 @@ Methods: ## Traces -Response Types: - -- request_tracers.Trace -- request_tracers.TraceItem -- request_tracers.TraceNewResponse - -Methods: - -- client.RequestTracers.Traces.New(ctx context.Context, accountIdentifier string, body request_tracers.TraceNewParams) (request_tracers.TraceNewResponse, error) - # Rules ## Lists diff --git a/magic_network_monitoring/rule.go b/magic_network_monitoring/rule.go index bd37e0e101a..54f907a8f6e 100644 --- a/magic_network_monitoring/rule.go +++ b/magic_network_monitoring/rule.go @@ -139,7 +139,8 @@ type MagicNetworkMonitoringRule struct { // the rule name. Max 256 characters. Name string `json:"name,required"` Prefixes []string `json:"prefixes,required"` - ID string `json:"id"` + // The id of the rule. Must be unique. + ID string `json:"id"` // The number of bits per second for the rule. When this value is exceeded for the // set duration, an alert notification is sent. Minimum of 1 and no maximum. BandwidthThreshold float64 `json:"bandwidth_threshold"` diff --git a/request_tracers/trace.go b/request_tracers/trace.go index d2a6e5b69eb..2db31377948 100644 --- a/request_tracers/trace.go +++ b/request_tracers/trace.go @@ -3,14 +3,6 @@ package request_tracers import ( - "context" - "fmt" - "net/http" - - "github.com/cloudflare/cloudflare-go/v2/internal/apijson" - "github.com/cloudflare/cloudflare-go/v2/internal/param" - "github.com/cloudflare/cloudflare-go/v2/internal/requestconfig" - "github.com/cloudflare/cloudflare-go/v2/internal/shared" "github.com/cloudflare/cloudflare-go/v2/option" ) @@ -30,204 +22,3 @@ func NewTraceService(opts ...option.RequestOption) (r *TraceService) { r.Options = opts return } - -// Request Trace -func (r *TraceService) New(ctx context.Context, accountIdentifier string, body TraceNewParams, opts ...option.RequestOption) (res *TraceNewResponse, err error) { - opts = append(r.Options[:], opts...) - var env TraceNewResponseEnvelope - path := fmt.Sprintf("accounts/%s/request-tracer/trace", accountIdentifier) - err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &env, opts...) - if err != nil { - return - } - res = &env.Result - return -} - -type Trace []TraceItem - -// List of steps acting on request/response -type TraceItem struct { - // If step type is rule, then action performed by this rule - Action string `json:"action"` - // If step type is rule, then action parameters of this rule as JSON - ActionParameters interface{} `json:"action_parameters"` - // If step type is rule or ruleset, the description of this entity - Description string `json:"description"` - // If step type is rule, then expression used to match for this rule - Expression string `json:"expression"` - // If step type is ruleset, then kind of this ruleset - Kind string `json:"kind"` - // Whether tracing step affected tracing request/response - Matched bool `json:"matched"` - // If step type is ruleset, then name of this ruleset - Name string `json:"name"` - // Tracing step identifying name - StepName string `json:"step_name"` - Trace Trace `json:"trace"` - // Tracing step type - Type string `json:"type"` - JSON traceItemJSON `json:"-"` -} - -// traceItemJSON contains the JSON metadata for the struct [TraceItem] -type traceItemJSON struct { - Action apijson.Field - ActionParameters apijson.Field - Description apijson.Field - Expression apijson.Field - Kind apijson.Field - Matched apijson.Field - Name apijson.Field - StepName apijson.Field - Trace apijson.Field - Type apijson.Field - raw string - ExtraFields map[string]apijson.Field -} - -func (r *TraceItem) UnmarshalJSON(data []byte) (err error) { - return apijson.UnmarshalRoot(data, r) -} - -func (r traceItemJSON) RawJSON() string { - return r.raw -} - -// Trace result with an origin status code -type TraceNewResponse struct { - // HTTP Status code of zone response - StatusCode int64 `json:"status_code"` - Trace Trace `json:"trace"` - JSON traceNewResponseJSON `json:"-"` -} - -// traceNewResponseJSON contains the JSON metadata for the struct -// [TraceNewResponse] -type traceNewResponseJSON struct { - StatusCode apijson.Field - Trace apijson.Field - raw string - ExtraFields map[string]apijson.Field -} - -func (r *TraceNewResponse) UnmarshalJSON(data []byte) (err error) { - return apijson.UnmarshalRoot(data, r) -} - -func (r traceNewResponseJSON) RawJSON() string { - return r.raw -} - -type TraceNewParams struct { - // HTTP Method of tracing request - Method param.Field[string] `json:"method,required"` - // URL to which perform tracing request - URL param.Field[string] `json:"url,required"` - Body param.Field[TraceNewParamsBody] `json:"body"` - // Additional request parameters - Context param.Field[TraceNewParamsContext] `json:"context"` - // Cookies added to tracing request - Cookies param.Field[map[string]string] `json:"cookies"` - // Headers added to tracing request - Headers param.Field[map[string]string] `json:"headers"` - // HTTP Protocol of tracing request - Protocol param.Field[string] `json:"protocol"` - // Skip sending the request to the Origin server after all rules evaluation - SkipResponse param.Field[bool] `json:"skip_response"` -} - -func (r TraceNewParams) MarshalJSON() (data []byte, err error) { - return apijson.MarshalRoot(r) -} - -type TraceNewParamsBody struct { - // Base64 encoded request body - Base64 param.Field[string] `json:"base64"` - // Arbitrary json as request body - Json param.Field[interface{}] `json:"json"` - // Request body as plain text - PlainText param.Field[string] `json:"plain_text"` -} - -func (r TraceNewParamsBody) MarshalJSON() (data []byte, err error) { - return apijson.MarshalRoot(r) -} - -// Additional request parameters -type TraceNewParamsContext struct { - // Bot score used for evaluating tracing request processing - BotScore param.Field[int64] `json:"bot_score"` - // Geodata for tracing request - Geoloc param.Field[TraceNewParamsContextGeoloc] `json:"geoloc"` - // Whether to skip any challenges for tracing request (e.g.: captcha) - SkipChallenge param.Field[bool] `json:"skip_challenge"` - // Threat score used for evaluating tracing request processing - ThreatScore param.Field[int64] `json:"threat_score"` -} - -func (r TraceNewParamsContext) MarshalJSON() (data []byte, err error) { - return apijson.MarshalRoot(r) -} - -// Geodata for tracing request -type TraceNewParamsContextGeoloc struct { - City param.Field[string] `json:"city"` - Continent param.Field[string] `json:"continent"` - IsEuCountry param.Field[bool] `json:"is_eu_country"` - ISOCode param.Field[string] `json:"iso_code"` - Latitude param.Field[float64] `json:"latitude"` - Longitude param.Field[float64] `json:"longitude"` - PostalCode param.Field[string] `json:"postal_code"` - RegionCode param.Field[string] `json:"region_code"` - Subdivision2ISOCode param.Field[string] `json:"subdivision_2_iso_code"` - Timezone param.Field[string] `json:"timezone"` -} - -func (r TraceNewParamsContextGeoloc) MarshalJSON() (data []byte, err error) { - return apijson.MarshalRoot(r) -} - -type TraceNewResponseEnvelope struct { - Errors []shared.ResponseInfo `json:"errors,required"` - Messages []shared.ResponseInfo `json:"messages,required"` - // Trace result with an origin status code - Result TraceNewResponse `json:"result,required"` - // Whether the API call was successful - Success TraceNewResponseEnvelopeSuccess `json:"success,required"` - JSON traceNewResponseEnvelopeJSON `json:"-"` -} - -// traceNewResponseEnvelopeJSON contains the JSON metadata for the struct -// [TraceNewResponseEnvelope] -type traceNewResponseEnvelopeJSON struct { - Errors apijson.Field - Messages apijson.Field - Result apijson.Field - Success apijson.Field - raw string - ExtraFields map[string]apijson.Field -} - -func (r *TraceNewResponseEnvelope) UnmarshalJSON(data []byte) (err error) { - return apijson.UnmarshalRoot(data, r) -} - -func (r traceNewResponseEnvelopeJSON) RawJSON() string { - return r.raw -} - -// Whether the API call was successful -type TraceNewResponseEnvelopeSuccess bool - -const ( - TraceNewResponseEnvelopeSuccessTrue TraceNewResponseEnvelopeSuccess = true -) - -func (r TraceNewResponseEnvelopeSuccess) IsKnown() bool { - switch r { - case TraceNewResponseEnvelopeSuccessTrue: - return true - } - return false -} diff --git a/request_tracers/trace_test.go b/request_tracers/trace_test.go deleted file mode 100644 index f4f2bbafde0..00000000000 --- a/request_tracers/trace_test.go +++ /dev/null @@ -1,78 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -package request_tracers_test - -import ( - "context" - "errors" - "os" - "testing" - - "github.com/cloudflare/cloudflare-go/v2" - "github.com/cloudflare/cloudflare-go/v2/internal/testutil" - "github.com/cloudflare/cloudflare-go/v2/option" - "github.com/cloudflare/cloudflare-go/v2/request_tracers" -) - -func TestTraceNewWithOptionalParams(t *testing.T) { - t.Skip("skipped: tests are disabled for the time being") - baseURL := "http://localhost:4010" - if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok { - baseURL = envURL - } - if !testutil.CheckTestServer(t, baseURL) { - return - } - client := cloudflare.NewClient( - option.WithBaseURL(baseURL), - option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), - option.WithAPIEmail("user@example.com"), - ) - _, err := client.RequestTracers.Traces.New( - context.TODO(), - "023e105f4ecef8ad9ca31a8372d0c353", - request_tracers.TraceNewParams{ - Method: cloudflare.F("PUT"), - URL: cloudflare.F("https://some.zone/some_path"), - Body: cloudflare.F(request_tracers.TraceNewParamsBody{ - Base64: cloudflare.F("c29tZV9yZXF1ZXN0X2JvZHk="), - Json: cloudflare.F[any](map[string]interface{}{}), - PlainText: cloudflare.F("string"), - }), - Context: cloudflare.F(request_tracers.TraceNewParamsContext{ - BotScore: cloudflare.F(int64(0)), - Geoloc: cloudflare.F(request_tracers.TraceNewParamsContextGeoloc{ - City: cloudflare.F("London"), - Continent: cloudflare.F("string"), - IsEuCountry: cloudflare.F(true), - ISOCode: cloudflare.F("string"), - Latitude: cloudflare.F(0.000000), - Longitude: cloudflare.F(0.000000), - PostalCode: cloudflare.F("string"), - RegionCode: cloudflare.F("string"), - Subdivision2ISOCode: cloudflare.F("string"), - Timezone: cloudflare.F("string"), - }), - SkipChallenge: cloudflare.F(true), - ThreatScore: cloudflare.F(int64(0)), - }), - Cookies: cloudflare.F(map[string]string{ - "cookie_name_1": "cookie_value_1", - "cookie_name_2": "cookie_value_2", - }), - Headers: cloudflare.F(map[string]string{ - "header_name_1": "header_value_1", - "header_name_2": "header_value_2", - }), - Protocol: cloudflare.F("HTTP/1.1"), - SkipResponse: cloudflare.F(true), - }, - ) - if err != nil { - var apierr *cloudflare.Error - if errors.As(err, &apierr) { - t.Log(string(apierr.DumpRequest(true))) - } - t.Fatalf("err should be nil: %s", err.Error()) - } -}