@coinbase/cdp-sdk
Version:
SDK for interacting with the Coinbase Developer Platform Wallet API
65 lines (56 loc) • 1.59 kB
text/typescript
// This file was auto-generated by Fern from our API Definition.
import type * as core from "../core/index.js";
import { toJson } from "../core/json.js";
export class CoinbaseApiError extends Error {
public readonly statusCode?: number;
public readonly body?: unknown;
public readonly rawResponse?: core.RawResponse;
public readonly cause?: unknown;
constructor({
message,
statusCode,
body,
rawResponse,
cause,
}: {
message?: string;
statusCode?: number;
body?: unknown;
rawResponse?: core.RawResponse;
cause?: unknown;
}) {
super(buildMessage({ message, statusCode, body }));
Object.setPrototypeOf(this, new.target.prototype);
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
this.name = this.constructor.name;
this.statusCode = statusCode;
this.body = body;
this.rawResponse = rawResponse;
if (cause != null) {
this.cause = cause;
}
}
}
function buildMessage({
message,
statusCode,
body,
}: {
message: string | undefined;
statusCode: number | undefined;
body: unknown | undefined;
}): string {
const lines: string[] = [];
if (message != null) {
lines.push(message);
}
if (statusCode != null) {
lines.push(`Status code: ${statusCode.toString()}`);
}
if (body != null) {
lines.push(`Body: ${toJson(body, undefined, 2)}`);
}
return lines.join("\n");
}