diff options
| author | adamdottv <[email protected]> | 2025-07-03 11:49:15 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-07-03 11:49:15 -0500 |
| commit | 5a0910ea79b3f219c64f922fc775636b2bfdf07c (patch) | |
| tree | 6f3288101eb3aa99fdc31cfaf5e07e4990cc8954 /packages/tui/sdk/internal/apierror | |
| parent | 1dffabcfdaeefd3bc08a51b625047185bade3a4d (diff) | |
| download | opencode-5a0910ea79b3f219c64f922fc775636b2bfdf07c.tar.gz opencode-5a0910ea79b3f219c64f922fc775636b2bfdf07c.zip | |
chore: better local dev with stainless script
Diffstat (limited to 'packages/tui/sdk/internal/apierror')
| -rw-r--r-- | packages/tui/sdk/internal/apierror/apierror.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/tui/sdk/internal/apierror/apierror.go b/packages/tui/sdk/internal/apierror/apierror.go new file mode 100644 index 000000000..24307fc36 --- /dev/null +++ b/packages/tui/sdk/internal/apierror/apierror.go @@ -0,0 +1,53 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +package apierror + +import ( + "fmt" + "net/http" + "net/http/httputil" + + "github.com/sst/opencode-sdk-go/internal/apijson" +) + +// Error represents an error that originates from the API, i.e. when a request is +// made and the API returns a response with a HTTP status code. Other errors are +// not wrapped by this SDK. +type Error struct { + JSON errorJSON `json:"-"` + StatusCode int + Request *http.Request + Response *http.Response +} + +// errorJSON contains the JSON metadata for the struct [Error] +type errorJSON struct { + raw string + ExtraFields map[string]apijson.Field +} + +func (r *Error) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r errorJSON) RawJSON() string { + return r.raw +} + +func (r *Error) Error() string { + // Attempt to re-populate the response body + return fmt.Sprintf("%s \"%s\": %d %s %s", r.Request.Method, r.Request.URL, r.Response.StatusCode, http.StatusText(r.Response.StatusCode), r.JSON.RawJSON()) +} + +func (r *Error) DumpRequest(body bool) []byte { + if r.Request.GetBody != nil { + r.Request.Body, _ = r.Request.GetBody() + } + out, _ := httputil.DumpRequestOut(r.Request, body) + return out +} + +func (r *Error) DumpResponse(body bool) []byte { + out, _ := httputil.DumpResponse(r.Response, body) + return out +} |
