From b41ac275b859524efb65f8e598ee4bf9b2901a2b Mon Sep 17 00:00:00 2001 From: Arpit Bhardwaj Date: Wed, 7 Feb 2024 17:19:21 +0530 Subject: [PATCH] fix(fetch-migration): axios doesn't work in sandboxed environment --- .../aptos-client/src/index.browser.ts | 52 +++++++++++++------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/ecosystem/typescript/aptos-client/src/index.browser.ts b/ecosystem/typescript/aptos-client/src/index.browser.ts index 79c8d747d62d7..9e280dee6919f 100644 --- a/ecosystem/typescript/aptos-client/src/index.browser.ts +++ b/ecosystem/typescript/aptos-client/src/index.browser.ts @@ -1,30 +1,50 @@ -import axios, { AxiosRequestConfig, AxiosError } from "axios"; import { AptosClientRequest, AptosClientResponse } from "./types"; export default async function aptosClient(options: AptosClientRequest): Promise> { - const { params, method, url, headers, body, overrides } = options; - const requestConfig: AxiosRequestConfig = { - headers, - method, - url, - params, - data: body, - withCredentials: overrides?.WITH_CREDENTIALS ?? true, + const { params, method, url, headers, body } = options; + + // Constructing the query string for POST requests + let queryString = ''; + if (params && method.toUpperCase() === 'POST') { + queryString = `?address=${params.address}&amount=${params.amount}` + } + + // Setting up the Request Configuration for fetch + const requestConfig: RequestInit = { + method: method, + headers: headers, }; + if (body) { + if (body instanceof Uint8Array) { + requestConfig.body = Buffer.from(body); + } else { + requestConfig.body = Buffer.from(JSON.stringify(body)); + } + } try { - const response = await axios(requestConfig); + const response = await fetch(url + queryString, requestConfig); + const responseData = await response.json(); + return { status: response.status, - statusText: response.statusText!, - data: response.data, + statusText: response.statusText, + data: responseData as Res, headers: response.headers, - config: response.config, + request: requestConfig, + response: response, }; } catch (error) { - const axiosError = error as AxiosError; - if (axiosError.response) { - return axiosError.response; + if (error instanceof Response) { + const errorResponse = await error.json(); + return { + status: error.status, + statusText: error.statusText, + data: errorResponse, + headers: error.headers, + request: requestConfig, + response: error, + }; } throw error; }