Skip to content

Commit 2162b0a

Browse files
feat(api): manual updates
1 parent 29d98ac commit 2162b0a

4 files changed

Lines changed: 69 additions & 4 deletions

File tree

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 17
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-3ec96d0022acb32aa2676c2e7ae20152b899a776ccd499380c334c955b9ba071.yml
3-
openapi_spec_hash: b64c095d82185c1cd0355abea88b606f
4-
config_hash: 00ec9df250b9dc077f8d3b93a442d252
1+
configured_endpoints: 18
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-d173129101e26f450c200e84430d993479c034700cf826917425d513b88912e6.yml
3+
openapi_spec_hash: 150b86da7588979d7619b1a894e4720c
4+
config_hash: eaeed470b1070b34df69c49d68e67355

api.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,4 @@ Methods:
8484
- <code title="get /browsers">client.Browsers.<a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk#BrowserService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>) ([]<a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk#BrowserListResponse">BrowserListResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
8585
- <code title="delete /browsers">client.Browsers.<a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk#BrowserService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, body <a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk#BrowserDeleteParams">BrowserDeleteParams</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
8686
- <code title="delete /browsers/{id}">client.Browsers.<a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk#BrowserService.DeleteByID">DeleteByID</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, id <a href="https://pkg.go.dev/builtin#string">string</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
87+
- <code title="get /browsers/{id}/replay">client.Browsers.<a href="https://pkg.go.dev/github.com/onkernel/kernel-go-sdk#BrowserService.GetReplay">GetReplay</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, id <a href="https://pkg.go.dev/builtin#string">string</a>) (http.Response, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>

browser.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,19 @@ func (r *BrowserService) DeleteByID(ctx context.Context, id string, opts ...opti
8787
return
8888
}
8989

90+
// Get browser session replay.
91+
func (r *BrowserService) GetReplay(ctx context.Context, id string, opts ...option.RequestOption) (res *http.Response, err error) {
92+
opts = append(r.Options[:], opts...)
93+
opts = append([]option.RequestOption{option.WithHeader("Accept", "video/mp4")}, opts...)
94+
if id == "" {
95+
err = errors.New("missing required id parameter")
96+
return
97+
}
98+
path := fmt.Sprintf("browsers/%s/replay", id)
99+
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
100+
return
101+
}
102+
90103
// Optional persistence configuration for the browser session.
91104
type BrowserPersistence struct {
92105
// Unique identifier for the persistent browser session.
@@ -141,12 +154,15 @@ type BrowserNewResponse struct {
141154
BrowserLiveViewURL string `json:"browser_live_view_url"`
142155
// Optional persistence configuration for the browser session.
143156
Persistence BrowserPersistence `json:"persistence"`
157+
// Remote URL for viewing the browser session replay if enabled
158+
ReplayViewURL string `json:"replay_view_url"`
144159
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
145160
JSON struct {
146161
CdpWsURL respjson.Field
147162
SessionID respjson.Field
148163
BrowserLiveViewURL respjson.Field
149164
Persistence respjson.Field
165+
ReplayViewURL respjson.Field
150166
ExtraFields map[string]respjson.Field
151167
raw string
152168
} `json:"-"`
@@ -168,12 +184,15 @@ type BrowserGetResponse struct {
168184
BrowserLiveViewURL string `json:"browser_live_view_url"`
169185
// Optional persistence configuration for the browser session.
170186
Persistence BrowserPersistence `json:"persistence"`
187+
// Remote URL for viewing the browser session replay if enabled
188+
ReplayViewURL string `json:"replay_view_url"`
171189
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
172190
JSON struct {
173191
CdpWsURL respjson.Field
174192
SessionID respjson.Field
175193
BrowserLiveViewURL respjson.Field
176194
Persistence respjson.Field
195+
ReplayViewURL respjson.Field
177196
ExtraFields map[string]respjson.Field
178197
raw string
179198
} `json:"-"`
@@ -195,12 +214,15 @@ type BrowserListResponse struct {
195214
BrowserLiveViewURL string `json:"browser_live_view_url"`
196215
// Optional persistence configuration for the browser session.
197216
Persistence BrowserPersistence `json:"persistence"`
217+
// Remote URL for viewing the browser session replay if enabled
218+
ReplayViewURL string `json:"replay_view_url"`
198219
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
199220
JSON struct {
200221
CdpWsURL respjson.Field
201222
SessionID respjson.Field
202223
BrowserLiveViewURL respjson.Field
203224
Persistence respjson.Field
225+
ReplayViewURL respjson.Field
204226
ExtraFields map[string]respjson.Field
205227
raw string
206228
} `json:"-"`
@@ -218,6 +240,8 @@ type BrowserNewParams struct {
218240
Headless param.Opt[bool] `json:"headless,omitzero"`
219241
// action invocation ID
220242
InvocationID param.Opt[string] `json:"invocation_id,omitzero"`
243+
// If true, enables replay recording of the browser session. Defaults to false.
244+
Replay param.Opt[bool] `json:"replay,omitzero"`
221245
// If true, launches the browser in stealth mode to reduce detection by anti-bot
222246
// mechanisms.
223247
Stealth param.Opt[bool] `json:"stealth,omitzero"`

browser_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
package kernel_test
44

55
import (
6+
"bytes"
67
"context"
78
"errors"
9+
"io"
10+
"net/http"
11+
"net/http/httptest"
812
"os"
913
"testing"
1014

@@ -32,6 +36,7 @@ func TestBrowserNewWithOptionalParams(t *testing.T) {
3236
Persistence: kernel.BrowserPersistenceParam{
3337
ID: "my-awesome-browser-for-user-1234",
3438
},
39+
Replay: kernel.Bool(true),
3540
Stealth: kernel.Bool(true),
3641
})
3742
if err != nil {
@@ -136,3 +141,38 @@ func TestBrowserDeleteByID(t *testing.T) {
136141
t.Fatalf("err should be nil: %s", err.Error())
137142
}
138143
}
144+
145+
func TestBrowserGetReplay(t *testing.T) {
146+
t.Skip("skipped: tests are disabled for the time being")
147+
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
148+
w.WriteHeader(200)
149+
w.Write([]byte("abc"))
150+
}))
151+
defer server.Close()
152+
baseURL := server.URL
153+
client := kernel.NewClient(
154+
option.WithBaseURL(baseURL),
155+
option.WithAPIKey("My API Key"),
156+
)
157+
resp, err := client.Browsers.GetReplay(context.TODO(), "htzv5orfit78e1m2biiifpbv")
158+
if err != nil {
159+
var apierr *kernel.Error
160+
if errors.As(err, &apierr) {
161+
t.Log(string(apierr.DumpRequest(true)))
162+
}
163+
t.Fatalf("err should be nil: %s", err.Error())
164+
}
165+
defer resp.Body.Close()
166+
167+
b, err := io.ReadAll(resp.Body)
168+
if err != nil {
169+
var apierr *kernel.Error
170+
if errors.As(err, &apierr) {
171+
t.Log(string(apierr.DumpRequest(true)))
172+
}
173+
t.Fatalf("err should be nil: %s", err.Error())
174+
}
175+
if !bytes.Equal(b, []byte("abc")) {
176+
t.Fatalf("return value not %s: %s", "abc", b)
177+
}
178+
}

0 commit comments

Comments
 (0)