mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-10 05:40:06 +00:00
feat(*): recreate package with new name
This commit is contained in:
37
src/utils/makeRequest.ts
Normal file
37
src/utils/makeRequest.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { CsrfToken } from "../types";
|
||||
|
||||
export async function makeRequest<T>(
|
||||
url: string,
|
||||
request: RequestInit,
|
||||
callback: (value: CsrfToken) => any,
|
||||
contentType: "text" | "json" = "json"
|
||||
): Promise<T> {
|
||||
const responseTransform =
|
||||
contentType === "json"
|
||||
? (res: Response) => res.json()
|
||||
: (res: Response) => res.text();
|
||||
const result = await fetch(url, request).then((response) => {
|
||||
if (!response.ok) {
|
||||
if (response.status === 403) {
|
||||
const tokenHeader = response.headers.get("X-CSRF-HEADER");
|
||||
|
||||
if (tokenHeader) {
|
||||
const token = response.headers.get(tokenHeader);
|
||||
callback({
|
||||
headerName: tokenHeader,
|
||||
value: token || "",
|
||||
});
|
||||
|
||||
const retryRequest = {
|
||||
...request,
|
||||
headers: { ...request.headers, [tokenHeader]: token },
|
||||
};
|
||||
return fetch(url, retryRequest).then(responseTransform);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return responseTransform(response);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user