scorechain-sdk
Version:
SDK for the Scorechain API
38 lines (35 loc) • 1.14 kB
text/typescript
import axios, { AxiosError } from "axios";
import { ScorechainError } from "../types/errors/ScorchainError";
import { proofOfAuthenticityVerifierAdapterForAxios } from "./proofOfAuthenticityVerifier";
export async function _sendRequest<T>(
url: string,
method: string,
data: object,
headers: object,
shouldVerifyAuthenticity?: boolean
): Promise<T> {
const response = await axios
.request<T>({
url,
method,
data,
headers,
})
.then(result => {
if (shouldVerifyAuthenticity && !url.includes("publicKeys")) {
proofOfAuthenticityVerifierAdapterForAxios(result);
}
return result;
})
.catch(error => {
if (error instanceof AxiosError && (error as AxiosError)?.response?.data) {
if (shouldVerifyAuthenticity) {
proofOfAuthenticityVerifierAdapterForAxios(error);
}
throw new ScorechainError(error);
} else {
throw error;
}
});
return response.data;
}