Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0cf16c9

Browse files
committedMar 13, 2025
feat(browsing_rendering): add support for subresources (#3961)
1 parent 70c9f42 commit 0cf16c9

15 files changed

+3392
-1
lines changed
 

‎.stats.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 1542
1+
configured_endpoints: 1547
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-e012b9b204109b8d5c55ea91e745d2abe7d21e614105d56662c7c01b45ccc813.yml

‎api.md

+44
Original file line numberDiff line numberDiff line change
@@ -8111,3 +8111,47 @@ Response Types:
81118111
Methods:
81128112

81138113
- <code title="get /{accounts_or_zones}/{account_or_zone_id}/security-center/insights/type">client.SecurityCenter.Insights.Type.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/security_center#InsightTypeService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/security_center">security_center</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/security_center#InsightTypeGetParams">InsightTypeGetParams</a>) ([]<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/security_center">security_center</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/security_center#InsightTypeGetResponse">InsightTypeGetResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
8114+
8115+
# BrowsingRendering
8116+
8117+
## Content
8118+
8119+
Methods:
8120+
8121+
- <code title="post /accounts/{accountId}/browser-rendering/content">client.BrowsingRendering.Content.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ContentService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, accountID <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ContentNewParams">ContentNewParams</a>) (<a href="https://pkg.go.dev/builtin#string">string</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
8122+
8123+
## Pdf
8124+
8125+
Methods:
8126+
8127+
- <code title="post /accounts/{accountId}/browser-rendering/pdf">client.BrowsingRendering.Pdf.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#PdfService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, accountID <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#PdfNewParams">PdfNewParams</a>) (http.Response, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
8128+
8129+
## Scrape
8130+
8131+
Response Types:
8132+
8133+
- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScrapeNewResponse">ScrapeNewResponse</a>
8134+
8135+
Methods:
8136+
8137+
- <code title="post /accounts/{accountId}/browser-rendering/scrape">client.BrowsingRendering.Scrape.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScrapeService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, accountID <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScrapeNewParams">ScrapeNewParams</a>) ([]<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScrapeNewResponse">ScrapeNewResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
8138+
8139+
## Screenshot
8140+
8141+
Response Types:
8142+
8143+
- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScreenshotNewResponse">ScreenshotNewResponse</a>
8144+
8145+
Methods:
8146+
8147+
- <code title="post /accounts/{accountId}/browser-rendering/screenshot">client.BrowsingRendering.Screenshot.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScreenshotService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, accountID <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScreenshotNewParams">ScreenshotNewParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#ScreenshotNewResponse">ScreenshotNewResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
8148+
8149+
## Snapshot
8150+
8151+
Response Types:
8152+
8153+
- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#SnapshotNewResponse">SnapshotNewResponse</a>
8154+
8155+
Methods:
8156+
8157+
- <code title="post /accounts/{accountId}/browser-rendering/snapshot">client.BrowsingRendering.Snapshot.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#SnapshotService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, accountID <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#SnapshotNewParams">SnapshotNewParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering">browsing_rendering</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/browsing_rendering#SnapshotNewResponse">SnapshotNewResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>

‎browsing_rendering/aliases.go

+418
Large diffs are not rendered by default.
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package browsing_rendering
4+
5+
import (
6+
"github.com/cloudflare/cloudflare-go/v4/option"
7+
)
8+
9+
// BrowsingRenderingService contains methods and other services that help with
10+
// interacting with the cloudflare API.
11+
//
12+
// Note, unlike clients, this service does not read variables from the environment
13+
// automatically. You should not instantiate this service directly, and instead use
14+
// the [NewBrowsingRenderingService] method instead.
15+
type BrowsingRenderingService struct {
16+
Options []option.RequestOption
17+
Content *ContentService
18+
Pdf *PdfService
19+
Scrape *ScrapeService
20+
Screenshot *ScreenshotService
21+
Snapshot *SnapshotService
22+
}
23+
24+
// NewBrowsingRenderingService generates a new service that applies the given
25+
// options to each request. These options are applied after the parent client's
26+
// options (if there is one), and before any request-specific options.
27+
func NewBrowsingRenderingService(opts ...option.RequestOption) (r *BrowsingRenderingService) {
28+
r = &BrowsingRenderingService{}
29+
r.Options = opts
30+
r.Content = NewContentService(opts...)
31+
r.Pdf = NewPdfService(opts...)
32+
r.Scrape = NewScrapeService(opts...)
33+
r.Screenshot = NewScreenshotService(opts...)
34+
r.Snapshot = NewSnapshotService(opts...)
35+
return
36+
}

‎browsing_rendering/content.go

+439
Large diffs are not rendered by default.

‎browsing_rendering/content_test.go

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package browsing_rendering_test
4+
5+
import (
6+
"context"
7+
"errors"
8+
"os"
9+
"testing"
10+
11+
"github.com/cloudflare/cloudflare-go/v4"
12+
"github.com/cloudflare/cloudflare-go/v4/browsing_rendering"
13+
"github.com/cloudflare/cloudflare-go/v4/internal/testutil"
14+
"github.com/cloudflare/cloudflare-go/v4/option"
15+
)
16+
17+
func TestContentNewWithOptionalParams(t *testing.T) {
18+
baseURL := "http://localhost:4010"
19+
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
20+
baseURL = envURL
21+
}
22+
if !testutil.CheckTestServer(t, baseURL) {
23+
return
24+
}
25+
client := cloudflare.NewClient(
26+
option.WithBaseURL(baseURL),
27+
option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
28+
option.WithAPIEmail("user@example.com"),
29+
)
30+
_, err := client.BrowsingRendering.Content.New(
31+
context.TODO(),
32+
"accountId",
33+
browsing_rendering.ContentNewParams{
34+
CacheTTL: cloudflare.F(86400.000000),
35+
AddScriptTag: cloudflare.F([]browsing_rendering.ContentNewParamsAddScriptTag{{
36+
ID: cloudflare.F("id"),
37+
Content: cloudflare.F("content"),
38+
Type: cloudflare.F("type"),
39+
URL: cloudflare.F("url"),
40+
}}),
41+
AddStyleTag: cloudflare.F([]browsing_rendering.ContentNewParamsAddStyleTag{{
42+
Content: cloudflare.F("content"),
43+
URL: cloudflare.F("url"),
44+
}}),
45+
AllowRequestPattern: cloudflare.F([]string{"string"}),
46+
AllowResourceTypes: cloudflare.F([]browsing_rendering.ContentNewParamsAllowResourceType{browsing_rendering.ContentNewParamsAllowResourceTypeDocument}),
47+
Authenticate: cloudflare.F(browsing_rendering.ContentNewParamsAuthenticate{
48+
Password: cloudflare.F("x"),
49+
Username: cloudflare.F("x"),
50+
}),
51+
BestAttempt: cloudflare.F(true),
52+
Cookies: cloudflare.F([]browsing_rendering.ContentNewParamsCookie{{
53+
Name: cloudflare.F("name"),
54+
Value: cloudflare.F("value"),
55+
Domain: cloudflare.F("domain"),
56+
Expires: cloudflare.F(0.000000),
57+
HTTPOnly: cloudflare.F(true),
58+
PartitionKey: cloudflare.F("partitionKey"),
59+
Path: cloudflare.F("path"),
60+
Priority: cloudflare.F(browsing_rendering.ContentNewParamsCookiesPriorityLow),
61+
SameParty: cloudflare.F(true),
62+
SameSite: cloudflare.F(browsing_rendering.ContentNewParamsCookiesSameSiteStrict),
63+
Secure: cloudflare.F(true),
64+
SourcePort: cloudflare.F(0.000000),
65+
SourceScheme: cloudflare.F(browsing_rendering.ContentNewParamsCookiesSourceSchemeUnset),
66+
URL: cloudflare.F("url"),
67+
}}),
68+
EmulateMediaType: cloudflare.F("emulateMediaType"),
69+
GotoOptions: cloudflare.F(browsing_rendering.ContentNewParamsGotoOptions{
70+
Referer: cloudflare.F("referer"),
71+
ReferrerPolicy: cloudflare.F("referrerPolicy"),
72+
Timeout: cloudflare.F(60000.000000),
73+
WaitUntil: cloudflare.F[browsing_rendering.ContentNewParamsGotoOptionsWaitUntilUnion](browsing_rendering.ContentNewParamsGotoOptionsWaitUntilString(browsing_rendering.ContentNewParamsGotoOptionsWaitUntilStringLoad)),
74+
}),
75+
HTML: cloudflare.F("x"),
76+
RejectRequestPattern: cloudflare.F([]string{"string"}),
77+
RejectResourceTypes: cloudflare.F([]browsing_rendering.ContentNewParamsRejectResourceType{browsing_rendering.ContentNewParamsRejectResourceTypeDocument}),
78+
SetExtraHTTPHeaders: cloudflare.F(map[string]string{
79+
"foo": "string",
80+
}),
81+
SetJavaScriptEnabled: cloudflare.F(true),
82+
URL: cloudflare.F("https://example.com"),
83+
UserAgent: cloudflare.F("userAgent"),
84+
Viewport: cloudflare.F(browsing_rendering.ContentNewParamsViewport{
85+
Height: cloudflare.F(0.000000),
86+
Width: cloudflare.F(0.000000),
87+
DeviceScaleFactor: cloudflare.F(0.000000),
88+
HasTouch: cloudflare.F(true),
89+
IsLandscape: cloudflare.F(true),
90+
IsMobile: cloudflare.F(true),
91+
}),
92+
WaitForSelector: cloudflare.F(browsing_rendering.ContentNewParamsWaitForSelector{
93+
Selector: cloudflare.F("selector"),
94+
Hidden: cloudflare.F(browsing_rendering.ContentNewParamsWaitForSelectorHiddenTrue),
95+
Timeout: cloudflare.F(60000.000000),
96+
Visible: cloudflare.F(browsing_rendering.ContentNewParamsWaitForSelectorVisibleTrue),
97+
}),
98+
WaitForTimeout: cloudflare.F(60000.000000),
99+
},
100+
)
101+
if err != nil {
102+
var apierr *cloudflare.Error
103+
if errors.As(err, &apierr) {
104+
t.Log(string(apierr.DumpRequest(true)))
105+
}
106+
t.Fatalf("err should be nil: %s", err.Error())
107+
}
108+
}

‎browsing_rendering/pdf.go

+381
Large diffs are not rendered by default.

‎browsing_rendering/pdf_test.go

+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package browsing_rendering_test
4+
5+
import (
6+
"bytes"
7+
"context"
8+
"errors"
9+
"io"
10+
"net/http"
11+
"net/http/httptest"
12+
"testing"
13+
14+
"github.com/cloudflare/cloudflare-go/v4"
15+
"github.com/cloudflare/cloudflare-go/v4/browsing_rendering"
16+
"github.com/cloudflare/cloudflare-go/v4/option"
17+
)
18+
19+
func TestPdfNewWithOptionalParams(t *testing.T) {
20+
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
21+
w.WriteHeader(200)
22+
w.Write([]byte("abc"))
23+
}))
24+
defer server.Close()
25+
baseURL := server.URL
26+
client := cloudflare.NewClient(
27+
option.WithBaseURL(baseURL),
28+
option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
29+
option.WithAPIEmail("user@example.com"),
30+
)
31+
resp, err := client.BrowsingRendering.Pdf.New(
32+
context.TODO(),
33+
"accountId",
34+
browsing_rendering.PdfNewParams{
35+
CacheTTL: cloudflare.F(86400.000000),
36+
AddScriptTag: cloudflare.F([]browsing_rendering.PdfNewParamsAddScriptTag{{
37+
ID: cloudflare.F("id"),
38+
Content: cloudflare.F("content"),
39+
Type: cloudflare.F("type"),
40+
URL: cloudflare.F("url"),
41+
}}),
42+
AddStyleTag: cloudflare.F([]browsing_rendering.PdfNewParamsAddStyleTag{{
43+
Content: cloudflare.F("content"),
44+
URL: cloudflare.F("url"),
45+
}}),
46+
AllowRequestPattern: cloudflare.F([]string{"string"}),
47+
AllowResourceTypes: cloudflare.F([]browsing_rendering.PdfNewParamsAllowResourceType{browsing_rendering.PdfNewParamsAllowResourceTypeDocument}),
48+
Authenticate: cloudflare.F(browsing_rendering.PdfNewParamsAuthenticate{
49+
Password: cloudflare.F("x"),
50+
Username: cloudflare.F("x"),
51+
}),
52+
BestAttempt: cloudflare.F(true),
53+
Cookies: cloudflare.F([]browsing_rendering.PdfNewParamsCookie{{
54+
Name: cloudflare.F("name"),
55+
Value: cloudflare.F("value"),
56+
Domain: cloudflare.F("domain"),
57+
Expires: cloudflare.F(0.000000),
58+
HTTPOnly: cloudflare.F(true),
59+
PartitionKey: cloudflare.F("partitionKey"),
60+
Path: cloudflare.F("path"),
61+
Priority: cloudflare.F(browsing_rendering.PdfNewParamsCookiesPriorityLow),
62+
SameParty: cloudflare.F(true),
63+
SameSite: cloudflare.F(browsing_rendering.PdfNewParamsCookiesSameSiteStrict),
64+
Secure: cloudflare.F(true),
65+
SourcePort: cloudflare.F(0.000000),
66+
SourceScheme: cloudflare.F(browsing_rendering.PdfNewParamsCookiesSourceSchemeUnset),
67+
URL: cloudflare.F("url"),
68+
}}),
69+
EmulateMediaType: cloudflare.F("emulateMediaType"),
70+
GotoOptions: cloudflare.F(browsing_rendering.PdfNewParamsGotoOptions{
71+
Referer: cloudflare.F("referer"),
72+
ReferrerPolicy: cloudflare.F("referrerPolicy"),
73+
Timeout: cloudflare.F(60000.000000),
74+
WaitUntil: cloudflare.F[browsing_rendering.PdfNewParamsGotoOptionsWaitUntilUnion](browsing_rendering.PdfNewParamsGotoOptionsWaitUntilString(browsing_rendering.PdfNewParamsGotoOptionsWaitUntilStringLoad)),
75+
}),
76+
HTML: cloudflare.F("x"),
77+
RejectRequestPattern: cloudflare.F([]string{"string"}),
78+
RejectResourceTypes: cloudflare.F([]browsing_rendering.PdfNewParamsRejectResourceType{browsing_rendering.PdfNewParamsRejectResourceTypeDocument}),
79+
SetExtraHTTPHeaders: cloudflare.F(map[string]string{
80+
"foo": "string",
81+
}),
82+
SetJavaScriptEnabled: cloudflare.F(true),
83+
URL: cloudflare.F("https://example.com"),
84+
UserAgent: cloudflare.F("userAgent"),
85+
Viewport: cloudflare.F(browsing_rendering.PdfNewParamsViewport{
86+
Height: cloudflare.F(0.000000),
87+
Width: cloudflare.F(0.000000),
88+
DeviceScaleFactor: cloudflare.F(0.000000),
89+
HasTouch: cloudflare.F(true),
90+
IsLandscape: cloudflare.F(true),
91+
IsMobile: cloudflare.F(true),
92+
}),
93+
WaitForSelector: cloudflare.F(browsing_rendering.PdfNewParamsWaitForSelector{
94+
Selector: cloudflare.F("selector"),
95+
Hidden: cloudflare.F(browsing_rendering.PdfNewParamsWaitForSelectorHiddenTrue),
96+
Timeout: cloudflare.F(60000.000000),
97+
Visible: cloudflare.F(browsing_rendering.PdfNewParamsWaitForSelectorVisibleTrue),
98+
}),
99+
WaitForTimeout: cloudflare.F(60000.000000),
100+
},
101+
)
102+
if err != nil {
103+
var apierr *cloudflare.Error
104+
if errors.As(err, &apierr) {
105+
t.Log(string(apierr.DumpRequest(true)))
106+
}
107+
t.Fatalf("err should be nil: %s", err.Error())
108+
}
109+
defer resp.Body.Close()
110+
111+
b, err := io.ReadAll(resp.Body)
112+
if err != nil {
113+
var apierr *cloudflare.Error
114+
if errors.As(err, &apierr) {
115+
t.Log(string(apierr.DumpRequest(true)))
116+
}
117+
t.Fatalf("err should be nil: %s", err.Error())
118+
}
119+
if !bytes.Equal(b, []byte("abc")) {
120+
t.Fatalf("return value not %s: %s", "abc", b)
121+
}
122+
}

‎browsing_rendering/scrape.go

+534
Large diffs are not rendered by default.

‎browsing_rendering/scrape_test.go

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package browsing_rendering_test
4+
5+
import (
6+
"context"
7+
"errors"
8+
"os"
9+
"testing"
10+
11+
"github.com/cloudflare/cloudflare-go/v4"
12+
"github.com/cloudflare/cloudflare-go/v4/browsing_rendering"
13+
"github.com/cloudflare/cloudflare-go/v4/internal/testutil"
14+
"github.com/cloudflare/cloudflare-go/v4/option"
15+
)
16+
17+
func TestScrapeNewWithOptionalParams(t *testing.T) {
18+
baseURL := "http://localhost:4010"
19+
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
20+
baseURL = envURL
21+
}
22+
if !testutil.CheckTestServer(t, baseURL) {
23+
return
24+
}
25+
client := cloudflare.NewClient(
26+
option.WithBaseURL(baseURL),
27+
option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
28+
option.WithAPIEmail("user@example.com"),
29+
)
30+
_, err := client.BrowsingRendering.Scrape.New(
31+
context.TODO(),
32+
"accountId",
33+
browsing_rendering.ScrapeNewParams{
34+
Elements: cloudflare.F([]browsing_rendering.ScrapeNewParamsElement{{
35+
Selector: cloudflare.F("selector"),
36+
}}),
37+
CacheTTL: cloudflare.F(86400.000000),
38+
AddScriptTag: cloudflare.F([]browsing_rendering.ScrapeNewParamsAddScriptTag{{
39+
ID: cloudflare.F("id"),
40+
Content: cloudflare.F("content"),
41+
Type: cloudflare.F("type"),
42+
URL: cloudflare.F("url"),
43+
}}),
44+
AddStyleTag: cloudflare.F([]browsing_rendering.ScrapeNewParamsAddStyleTag{{
45+
Content: cloudflare.F("content"),
46+
URL: cloudflare.F("url"),
47+
}}),
48+
AllowRequestPattern: cloudflare.F([]string{"string"}),
49+
AllowResourceTypes: cloudflare.F([]browsing_rendering.ScrapeNewParamsAllowResourceType{browsing_rendering.ScrapeNewParamsAllowResourceTypeDocument}),
50+
Authenticate: cloudflare.F(browsing_rendering.ScrapeNewParamsAuthenticate{
51+
Password: cloudflare.F("x"),
52+
Username: cloudflare.F("x"),
53+
}),
54+
BestAttempt: cloudflare.F(true),
55+
Cookies: cloudflare.F([]browsing_rendering.ScrapeNewParamsCookie{{
56+
Name: cloudflare.F("name"),
57+
Value: cloudflare.F("value"),
58+
Domain: cloudflare.F("domain"),
59+
Expires: cloudflare.F(0.000000),
60+
HTTPOnly: cloudflare.F(true),
61+
PartitionKey: cloudflare.F("partitionKey"),
62+
Path: cloudflare.F("path"),
63+
Priority: cloudflare.F(browsing_rendering.ScrapeNewParamsCookiesPriorityLow),
64+
SameParty: cloudflare.F(true),
65+
SameSite: cloudflare.F(browsing_rendering.ScrapeNewParamsCookiesSameSiteStrict),
66+
Secure: cloudflare.F(true),
67+
SourcePort: cloudflare.F(0.000000),
68+
SourceScheme: cloudflare.F(browsing_rendering.ScrapeNewParamsCookiesSourceSchemeUnset),
69+
URL: cloudflare.F("url"),
70+
}}),
71+
EmulateMediaType: cloudflare.F("emulateMediaType"),
72+
GotoOptions: cloudflare.F(browsing_rendering.ScrapeNewParamsGotoOptions{
73+
Referer: cloudflare.F("referer"),
74+
ReferrerPolicy: cloudflare.F("referrerPolicy"),
75+
Timeout: cloudflare.F(60000.000000),
76+
WaitUntil: cloudflare.F[browsing_rendering.ScrapeNewParamsGotoOptionsWaitUntilUnion](browsing_rendering.ScrapeNewParamsGotoOptionsWaitUntilString(browsing_rendering.ScrapeNewParamsGotoOptionsWaitUntilStringLoad)),
77+
}),
78+
HTML: cloudflare.F("x"),
79+
RejectRequestPattern: cloudflare.F([]string{"string"}),
80+
RejectResourceTypes: cloudflare.F([]browsing_rendering.ScrapeNewParamsRejectResourceType{browsing_rendering.ScrapeNewParamsRejectResourceTypeDocument}),
81+
SetExtraHTTPHeaders: cloudflare.F(map[string]string{
82+
"foo": "string",
83+
}),
84+
SetJavaScriptEnabled: cloudflare.F(true),
85+
URL: cloudflare.F("https://example.com"),
86+
UserAgent: cloudflare.F("userAgent"),
87+
Viewport: cloudflare.F(browsing_rendering.ScrapeNewParamsViewport{
88+
Height: cloudflare.F(0.000000),
89+
Width: cloudflare.F(0.000000),
90+
DeviceScaleFactor: cloudflare.F(0.000000),
91+
HasTouch: cloudflare.F(true),
92+
IsLandscape: cloudflare.F(true),
93+
IsMobile: cloudflare.F(true),
94+
}),
95+
WaitForSelector: cloudflare.F(browsing_rendering.ScrapeNewParamsWaitForSelector{
96+
Selector: cloudflare.F("selector"),
97+
Hidden: cloudflare.F(browsing_rendering.ScrapeNewParamsWaitForSelectorHiddenTrue),
98+
Timeout: cloudflare.F(60000.000000),
99+
Visible: cloudflare.F(browsing_rendering.ScrapeNewParamsWaitForSelectorVisibleTrue),
100+
}),
101+
WaitForTimeout: cloudflare.F(60000.000000),
102+
},
103+
)
104+
if err != nil {
105+
var apierr *cloudflare.Error
106+
if errors.As(err, &apierr) {
107+
t.Log(string(apierr.DumpRequest(true)))
108+
}
109+
t.Fatalf("err should be nil: %s", err.Error())
110+
}
111+
}

‎browsing_rendering/screenshot.go

+496
Large diffs are not rendered by default.

‎browsing_rendering/screenshot_test.go

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package browsing_rendering_test
4+
5+
import (
6+
"context"
7+
"errors"
8+
"os"
9+
"testing"
10+
11+
"github.com/cloudflare/cloudflare-go/v4"
12+
"github.com/cloudflare/cloudflare-go/v4/browsing_rendering"
13+
"github.com/cloudflare/cloudflare-go/v4/internal/testutil"
14+
"github.com/cloudflare/cloudflare-go/v4/option"
15+
)
16+
17+
func TestScreenshotNewWithOptionalParams(t *testing.T) {
18+
baseURL := "http://localhost:4010"
19+
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
20+
baseURL = envURL
21+
}
22+
if !testutil.CheckTestServer(t, baseURL) {
23+
return
24+
}
25+
client := cloudflare.NewClient(
26+
option.WithBaseURL(baseURL),
27+
option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
28+
option.WithAPIEmail("user@example.com"),
29+
)
30+
_, err := client.BrowsingRendering.Screenshot.New(
31+
context.TODO(),
32+
"accountId",
33+
browsing_rendering.ScreenshotNewParams{
34+
CacheTTL: cloudflare.F(86400.000000),
35+
AddScriptTag: cloudflare.F([]browsing_rendering.ScreenshotNewParamsAddScriptTag{{
36+
ID: cloudflare.F("id"),
37+
Content: cloudflare.F("content"),
38+
Type: cloudflare.F("type"),
39+
URL: cloudflare.F("url"),
40+
}}),
41+
AddStyleTag: cloudflare.F([]browsing_rendering.ScreenshotNewParamsAddStyleTag{{
42+
Content: cloudflare.F("content"),
43+
URL: cloudflare.F("url"),
44+
}}),
45+
AllowRequestPattern: cloudflare.F([]string{"string"}),
46+
AllowResourceTypes: cloudflare.F([]browsing_rendering.ScreenshotNewParamsAllowResourceType{browsing_rendering.ScreenshotNewParamsAllowResourceTypeDocument}),
47+
Authenticate: cloudflare.F(browsing_rendering.ScreenshotNewParamsAuthenticate{
48+
Password: cloudflare.F("x"),
49+
Username: cloudflare.F("x"),
50+
}),
51+
BestAttempt: cloudflare.F(true),
52+
Cookies: cloudflare.F([]browsing_rendering.ScreenshotNewParamsCookie{{
53+
Name: cloudflare.F("name"),
54+
Value: cloudflare.F("value"),
55+
Domain: cloudflare.F("domain"),
56+
Expires: cloudflare.F(0.000000),
57+
HTTPOnly: cloudflare.F(true),
58+
PartitionKey: cloudflare.F("partitionKey"),
59+
Path: cloudflare.F("path"),
60+
Priority: cloudflare.F(browsing_rendering.ScreenshotNewParamsCookiesPriorityLow),
61+
SameParty: cloudflare.F(true),
62+
SameSite: cloudflare.F(browsing_rendering.ScreenshotNewParamsCookiesSameSiteStrict),
63+
Secure: cloudflare.F(true),
64+
SourcePort: cloudflare.F(0.000000),
65+
SourceScheme: cloudflare.F(browsing_rendering.ScreenshotNewParamsCookiesSourceSchemeUnset),
66+
URL: cloudflare.F("url"),
67+
}}),
68+
EmulateMediaType: cloudflare.F("emulateMediaType"),
69+
GotoOptions: cloudflare.F(browsing_rendering.ScreenshotNewParamsGotoOptions{
70+
Referer: cloudflare.F("referer"),
71+
ReferrerPolicy: cloudflare.F("referrerPolicy"),
72+
Timeout: cloudflare.F(60000.000000),
73+
WaitUntil: cloudflare.F[browsing_rendering.ScreenshotNewParamsGotoOptionsWaitUntilUnion](browsing_rendering.ScreenshotNewParamsGotoOptionsWaitUntilString(browsing_rendering.ScreenshotNewParamsGotoOptionsWaitUntilStringLoad)),
74+
}),
75+
HTML: cloudflare.F("x"),
76+
RejectRequestPattern: cloudflare.F([]string{"string"}),
77+
RejectResourceTypes: cloudflare.F([]browsing_rendering.ScreenshotNewParamsRejectResourceType{browsing_rendering.ScreenshotNewParamsRejectResourceTypeDocument}),
78+
ScreenshotOptions: cloudflare.F(browsing_rendering.ScreenshotNewParamsScreenshotOptions{
79+
CaptureBeyondViewport: cloudflare.F(true),
80+
Clip: cloudflare.F(browsing_rendering.ScreenshotNewParamsScreenshotOptionsClip{
81+
Height: cloudflare.F(0.000000),
82+
Width: cloudflare.F(0.000000),
83+
X: cloudflare.F(0.000000),
84+
Y: cloudflare.F(0.000000),
85+
Scale: cloudflare.F(0.000000),
86+
}),
87+
Encoding: cloudflare.F(browsing_rendering.ScreenshotNewParamsScreenshotOptionsEncodingBinary),
88+
FromSurface: cloudflare.F(true),
89+
FullPage: cloudflare.F(true),
90+
OmitBackground: cloudflare.F(true),
91+
OptimizeForSpeed: cloudflare.F(true),
92+
Quality: cloudflare.F(0.000000),
93+
Type: cloudflare.F(browsing_rendering.ScreenshotNewParamsScreenshotOptionsTypePNG),
94+
}),
95+
ScrollPage: cloudflare.F(true),
96+
Selector: cloudflare.F("selector"),
97+
SetExtraHTTPHeaders: cloudflare.F(map[string]string{
98+
"foo": "string",
99+
}),
100+
SetJavaScriptEnabled: cloudflare.F(true),
101+
URL: cloudflare.F("https://example.com"),
102+
UserAgent: cloudflare.F("userAgent"),
103+
Viewport: cloudflare.F(browsing_rendering.ScreenshotNewParamsViewport{
104+
Height: cloudflare.F(0.000000),
105+
Width: cloudflare.F(0.000000),
106+
DeviceScaleFactor: cloudflare.F(0.000000),
107+
HasTouch: cloudflare.F(true),
108+
IsLandscape: cloudflare.F(true),
109+
IsMobile: cloudflare.F(true),
110+
}),
111+
WaitForSelector: cloudflare.F(browsing_rendering.ScreenshotNewParamsWaitForSelector{
112+
Selector: cloudflare.F("selector"),
113+
Hidden: cloudflare.F(browsing_rendering.ScreenshotNewParamsWaitForSelectorHiddenTrue),
114+
Timeout: cloudflare.F(60000.000000),
115+
Visible: cloudflare.F(browsing_rendering.ScreenshotNewParamsWaitForSelectorVisibleTrue),
116+
}),
117+
WaitForTimeout: cloudflare.F(60000.000000),
118+
},
119+
)
120+
if err != nil {
121+
var apierr *cloudflare.Error
122+
if errors.As(err, &apierr) {
123+
t.Log(string(apierr.DumpRequest(true)))
124+
}
125+
t.Fatalf("err should be nil: %s", err.Error())
126+
}
127+
}

‎browsing_rendering/snapshot.go

+464
Large diffs are not rendered by default.

‎browsing_rendering/snapshot_test.go

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package browsing_rendering_test
4+
5+
import (
6+
"context"
7+
"errors"
8+
"os"
9+
"testing"
10+
11+
"github.com/cloudflare/cloudflare-go/v4"
12+
"github.com/cloudflare/cloudflare-go/v4/browsing_rendering"
13+
"github.com/cloudflare/cloudflare-go/v4/internal/testutil"
14+
"github.com/cloudflare/cloudflare-go/v4/option"
15+
)
16+
17+
func TestSnapshotNewWithOptionalParams(t *testing.T) {
18+
baseURL := "http://localhost:4010"
19+
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
20+
baseURL = envURL
21+
}
22+
if !testutil.CheckTestServer(t, baseURL) {
23+
return
24+
}
25+
client := cloudflare.NewClient(
26+
option.WithBaseURL(baseURL),
27+
option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
28+
option.WithAPIEmail("user@example.com"),
29+
)
30+
_, err := client.BrowsingRendering.Snapshot.New(
31+
context.TODO(),
32+
"accountId",
33+
browsing_rendering.SnapshotNewParams{
34+
CacheTTL: cloudflare.F(86400.000000),
35+
AddScriptTag: cloudflare.F([]browsing_rendering.SnapshotNewParamsAddScriptTag{{
36+
ID: cloudflare.F("id"),
37+
Content: cloudflare.F("content"),
38+
Type: cloudflare.F("type"),
39+
URL: cloudflare.F("url"),
40+
}}),
41+
AddStyleTag: cloudflare.F([]browsing_rendering.SnapshotNewParamsAddStyleTag{{
42+
Content: cloudflare.F("content"),
43+
URL: cloudflare.F("url"),
44+
}}),
45+
AllowRequestPattern: cloudflare.F([]string{"string"}),
46+
AllowResourceTypes: cloudflare.F([]browsing_rendering.SnapshotNewParamsAllowResourceType{browsing_rendering.SnapshotNewParamsAllowResourceTypeDocument}),
47+
Authenticate: cloudflare.F(browsing_rendering.SnapshotNewParamsAuthenticate{
48+
Password: cloudflare.F("x"),
49+
Username: cloudflare.F("x"),
50+
}),
51+
BestAttempt: cloudflare.F(true),
52+
Cookies: cloudflare.F([]browsing_rendering.SnapshotNewParamsCookie{{
53+
Name: cloudflare.F("name"),
54+
Value: cloudflare.F("value"),
55+
Domain: cloudflare.F("domain"),
56+
Expires: cloudflare.F(0.000000),
57+
HTTPOnly: cloudflare.F(true),
58+
PartitionKey: cloudflare.F("partitionKey"),
59+
Path: cloudflare.F("path"),
60+
Priority: cloudflare.F(browsing_rendering.SnapshotNewParamsCookiesPriorityLow),
61+
SameParty: cloudflare.F(true),
62+
SameSite: cloudflare.F(browsing_rendering.SnapshotNewParamsCookiesSameSiteStrict),
63+
Secure: cloudflare.F(true),
64+
SourcePort: cloudflare.F(0.000000),
65+
SourceScheme: cloudflare.F(browsing_rendering.SnapshotNewParamsCookiesSourceSchemeUnset),
66+
URL: cloudflare.F("url"),
67+
}}),
68+
EmulateMediaType: cloudflare.F("emulateMediaType"),
69+
GotoOptions: cloudflare.F(browsing_rendering.SnapshotNewParamsGotoOptions{
70+
Referer: cloudflare.F("referer"),
71+
ReferrerPolicy: cloudflare.F("referrerPolicy"),
72+
Timeout: cloudflare.F(60000.000000),
73+
WaitUntil: cloudflare.F[browsing_rendering.SnapshotNewParamsGotoOptionsWaitUntilUnion](browsing_rendering.SnapshotNewParamsGotoOptionsWaitUntilString(browsing_rendering.SnapshotNewParamsGotoOptionsWaitUntilStringLoad)),
74+
}),
75+
HTML: cloudflare.F("x"),
76+
RejectRequestPattern: cloudflare.F([]string{"string"}),
77+
RejectResourceTypes: cloudflare.F([]browsing_rendering.SnapshotNewParamsRejectResourceType{browsing_rendering.SnapshotNewParamsRejectResourceTypeDocument}),
78+
SetExtraHTTPHeaders: cloudflare.F(map[string]string{
79+
"foo": "string",
80+
}),
81+
SetJavaScriptEnabled: cloudflare.F(true),
82+
URL: cloudflare.F("https://example.com"),
83+
UserAgent: cloudflare.F("userAgent"),
84+
Viewport: cloudflare.F(browsing_rendering.SnapshotNewParamsViewport{
85+
Height: cloudflare.F(0.000000),
86+
Width: cloudflare.F(0.000000),
87+
DeviceScaleFactor: cloudflare.F(0.000000),
88+
HasTouch: cloudflare.F(true),
89+
IsLandscape: cloudflare.F(true),
90+
IsMobile: cloudflare.F(true),
91+
}),
92+
WaitForSelector: cloudflare.F(browsing_rendering.SnapshotNewParamsWaitForSelector{
93+
Selector: cloudflare.F("selector"),
94+
Hidden: cloudflare.F(browsing_rendering.SnapshotNewParamsWaitForSelectorHiddenTrue),
95+
Timeout: cloudflare.F(60000.000000),
96+
Visible: cloudflare.F(browsing_rendering.SnapshotNewParamsWaitForSelectorVisibleTrue),
97+
}),
98+
WaitForTimeout: cloudflare.F(60000.000000),
99+
},
100+
)
101+
if err != nil {
102+
var apierr *cloudflare.Error
103+
if errors.As(err, &apierr) {
104+
t.Log(string(apierr.DumpRequest(true)))
105+
}
106+
t.Fatalf("err should be nil: %s", err.Error())
107+
}
108+
}

‎client.go

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/cloudflare/cloudflare-go/v4/bot_management"
2222
"github.com/cloudflare/cloudflare-go/v4/botnet_feed"
2323
"github.com/cloudflare/cloudflare-go/v4/brand_protection"
24+
"github.com/cloudflare/cloudflare-go/v4/browsing_rendering"
2425
"github.com/cloudflare/cloudflare-go/v4/cache"
2526
"github.com/cloudflare/cloudflare-go/v4/calls"
2627
"github.com/cloudflare/cloudflare-go/v4/certificate_authorities"
@@ -202,6 +203,7 @@ type Client struct {
202203
AbuseReports *abuse_reports.AbuseReportService
203204
AI *ai.AIService
204205
SecurityCenter *security_center.SecurityCenterService
206+
BrowsingRendering *browsing_rendering.BrowsingRenderingService
205207
}
206208

207209
// NewClient generates a new client with the default option read from the
@@ -316,6 +318,7 @@ func NewClient(opts ...option.RequestOption) (r *Client) {
316318
r.AbuseReports = abuse_reports.NewAbuseReportService(opts...)
317319
r.AI = ai.NewAIService(opts...)
318320
r.SecurityCenter = security_center.NewSecurityCenterService(opts...)
321+
r.BrowsingRendering = browsing_rendering.NewBrowsingRenderingService(opts...)
319322

320323
return
321324
}

0 commit comments

Comments
 (0)
Please sign in to comment.