-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patherror.ts
138 lines (110 loc) · 4.61 KB
/
error.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
API Settings
At BlueSnap, we look at payments a little differently. Our Payment Orchestration Platform helps businesses accept payments globally and is designed to increase revenue and reduces costs. We provide a comprehensive back-end solutions that simplifies the complexity of payments, managing the full process from start to finish.
BlueSnap supports payments through multiple sales channels such as online and mobile sales, marketplaces, subscriptions, invoice payments and manual orders through a virtual terminal. And for businesses looking for embedded payments, we offer white-labeled payments for platforms with automated underwriting and onboarding that supports marketplaces and split payments.
And with one integration and contract, businesses can sell in over 200 geographies with access to local acquiring in 47 countries, 110+ currencies and 100+ global payment types, including popular eWallets, automated accounts receivable, world-class fraud protection and chargeback management, built-in solutions for regulation and tax compliance, and unified global reporting to help businesses grow.
With a US headquarters in Waltham, MA, and EU headquarters in Dublin, Ireland, BlueSnap is backed by world-class private equity investors including Great Hill Partners and Parthenon Capital Partners.
Learn more at BlueSnap.com
The version of the OpenAPI document: 8976-Tools
NOTE: This file is auto generated by Konfig (https://konfigthis.com).
*/
import type { AxiosError } from "axios";
/**
* This class provides a wrapper for network errors when making requests to API Settings
*/
export class BlueSnapError extends Error {
/**
* The response body
*/
readonly responseBody: unknown;
/**
* The error code provided from the underlying "axios" library which can be
* more descriptive than the HTTP status descriptions.
*/
readonly code?: string;
/**
* The status code from the response.
* For explanations, refer to https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
*/
readonly status?: number;
/**
* The status text from the response.
* For explanations, refer to https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
*/
readonly statusText?: string;
/**
* The URL that the original request was sent to
*/
readonly url?: string;
/**
* HTTP request method (see https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)
*/
readonly method?: string;
constructor(axiosError: AxiosError, responseBody: unknown) {
super(axiosError.message);
this.name = "BlueSnapError";
this.code = axiosError.code;
this.method = axiosError.config?.method?.toUpperCase();
this.url = axiosError.config?.url;
this.status = axiosError.response?.status;
this.statusText = axiosError.response?.statusText;
this.responseBody = responseBody;
}
toJSON() {
return {
name: this.name,
message: this.message,
method: this.method,
url: this.url,
code: this.code,
status: this.status,
statusText: this.statusText,
responseBody: this.responseBody,
};
}
}
export async function readableStreamToString(stream: ReadableStream) {
// Step 1: Create a new TextDecoder
const decoder = new TextDecoder();
// Step 2: Create a new ReadableStreamDefaultReader
const reader = stream.getReader();
// Step 3: Initialize an empty string to hold the result
let result = "";
try {
while (true) {
// Step 4: Read data from the stream
const { done, value } = await reader.read();
// If there is no more data to read, break the loop
if (done) break;
// Convert the chunk of data to a string using the TextDecoder
const chunk = decoder.decode(value, { stream: true });
// Concatenate the chunk to the result
result += chunk;
}
} finally {
// Step 5: Release the ReadableStreamDefaultReader when done or in case of an error
reader.releaseLock();
}
// Return the final result as a string
return result;
}
export function parseIfJson(input: unknown): object | unknown {
if (typeof input !== "string") {
// If the input is not a string, return the original input
return input;
}
try {
// Attempt to parse the input as JSON
const parsedJSON = JSON.parse(input);
// Check if the parsed result is an object (not an array or primitive value)
if (typeof parsedJSON === "object" && parsedJSON !== null) {
return parsedJSON;
} else {
// Return the original input if the parsed result is not an object
return input;
}
} catch (error) {
// Return the original input if parsing fails (invalid JSON)
return input;
}
}