Simple API wrapper

This commit is contained in:
Danny McGee
2024-03-07 19:26:01 -05:00
parent 326424347f
commit 9b34a82323
5 changed files with 58 additions and 50 deletions
+1
View File
@@ -6,6 +6,7 @@ export * from "./lib/inspector/inspector.types";
export * from "./lib/loading.element";
export * from "./lib/scene-data-provider.element";
export * from "./lib/scene-hierarchy.element";
export * from "./lib/storyteller-api";
export * from "./lib/studio.element";
export * from "./lib/transform-toolbar.element";
export * from "./lib/url-params";
+29
View File
@@ -0,0 +1,29 @@
import axios from "axios";
export type MediaToken = string;
export class StorytellerApi {
#api = axios.create({
baseURL: "https://api.fakeyou.com",
withCredentials: true,
});
async createScene(file: File): Promise<MediaToken> {
type Response = {
success: boolean;
media_file_token: MediaToken;
}
const response = await this.#api.postForm<Response>("v1/engine/create_scene", {
uuid_idempotency_token: crypto.randomUUID(),
file,
}, {
headers: { Accept: "text/plain" },
});
if (response.status === 200 && response.data.success)
return response.data.media_file_token;
throw new Error(`API responded with status ${response.status}: "${response.statusText}"`);
}
}