mirror of
https://github.com/storytold/storyteller-bevy.git
synced 2026-10-18 07:35:19 +00:00
Simple API wrapper
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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}"`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user