import { AuthToken } from "./types";
import {
ErrorResponse,
isErrorResponse,
ApiError,
buildUnknownError,
} from "./errors";
import { ESourceAuthorization } from "./resources/User";
export function createMethod
(createRequest: (payload: P) => Request) {
return async (payload: P): Promise => {
const request = createRequest(payload);
let source = ESourceAuthorization["aura.main.new"];
if (location.pathname.includes("/palmistry")) {
source = ESourceAuthorization["aura.palmistry"];
}
if (location.pathname.includes("/v1/palmistry")) {
source = ESourceAuthorization["aura.palmistry.new"];
}
if (location.pathname.includes("/chats")) {
source = ESourceAuthorization["aura.chats"];
}
const sessionId = localStorage.getItem(`${source}_sessionId`);
if (sessionId?.length) {
request.headers.append("session-id", sessionId);
}
const response = await fetch(request);
const data: R | ErrorResponse = await response.json();
const statusCode = response.status;
if (!response.ok) {
const body = isErrorResponse(data)
? data
: { error: buildUnknownError(statusCode) };
throw new ApiError({ body, statusCode, responseData: data });
}
if (isErrorResponse(data)) {
throw new ApiError({ body: data, statusCode, responseData: data });
}
return data;
};
}
export function getBaseHeaders(): Headers {
return new Headers({
"Content-Type": "application/json",
});
}
export function getAuthHeaders(token: AuthToken): Headers {
const headers = getBaseHeaders();
headers.append("Authorization", `Bearer ${token}`);
return headers;
}
export function getAuthOpenAIHeaders(token: AuthToken): Headers {
const headers = getBaseHeaders();
headers.append("Authorization", `Bearer ${token}`);
headers.append("OpenAI-Beta", "assistants=v1");
return headers;
}