mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 17:08:13 +00:00
- changed env to not go through proxy - some logging states need updates to accommodate the change Co-authored-by: wil <wil@storyteller.ai>
67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
import { environmentVariables } from "~/signals";
|
|
|
|
type UrlRoutingFunction<UrlRouteArgs> = (urlRouteArgs: UrlRouteArgs) => string;
|
|
|
|
interface RouteSetup<UrlRouteArgs> {
|
|
method: string;
|
|
multipart?: boolean;
|
|
routingFunction: UrlRoutingFunction<UrlRouteArgs>;
|
|
}
|
|
|
|
const METHOD_OMITS_BODY: { [key: string]: boolean } = {
|
|
DELETE: false,
|
|
GET: true,
|
|
OPTIONS: true,
|
|
PATCH: false,
|
|
POST: false,
|
|
PUT: false,
|
|
};
|
|
|
|
const MakeRequest = <UrlRouteArgs, Request, Response, UrlParams>(
|
|
routeSetup: RouteSetup<UrlRouteArgs>,
|
|
): ((
|
|
urlRouteArgs: UrlRouteArgs,
|
|
request: Request,
|
|
queries?: UrlParams,
|
|
) => Promise<Response>) => {
|
|
return async function (
|
|
urlRouteArgs: UrlRouteArgs,
|
|
request: Request,
|
|
queries?: any,
|
|
): Promise<Response> {
|
|
const newQueries = queries
|
|
? Object.keys(queries)
|
|
.map((key, i) => {
|
|
return `${i ? "&" : ""}${key}=${Array.isArray(queries[key]) ? queries[key].join(`&${key}=`) : queries[key]}`;
|
|
})
|
|
.join("")
|
|
: null;
|
|
|
|
const endpoint = `${routeSetup.routingFunction(urlRouteArgs)}${newQueries ? "?" + newQueries : ""}`;
|
|
const method = routeSetup.method;
|
|
const methodOmitsBody = METHOD_OMITS_BODY[method] || false;
|
|
|
|
// return fetch(formatUrl(endpoint), {
|
|
return fetch(`${environmentVariables.value.BASE_API}${endpoint}`, {
|
|
method,
|
|
headers: {
|
|
Accept: "application/json",
|
|
...(methodOmitsBody ? {} : { "Content-Type": "application/json" }),
|
|
},
|
|
credentials: "include",
|
|
...(methodOmitsBody ? {} : { body: JSON.stringify(request) }),
|
|
})
|
|
.then((res) => res.json())
|
|
.then((res) => {
|
|
if (!res.success && res && (res.voice_token || res.dataset_token)) {
|
|
return res;
|
|
} else if (res && "success" in res) {
|
|
return res;
|
|
} else Promise.reject();
|
|
})
|
|
.catch(() => ({ success: false }));
|
|
};
|
|
};
|
|
|
|
export default MakeRequest;
|