Client for themes API finished

Former-commit-id: 344f8aa370
restapi
Jens Pelzetter 2020-08-11 17:27:34 +02:00
parent 62faaf6384
commit 259aacca67
1 changed files with 67 additions and 1 deletions

View File

@ -241,15 +241,81 @@ export class ThemesApiClient {
async createOrUpdateThemeFile(
themeName: string,
path: string,
data: unknown
data: string | Record<string, unknown> | ArrayBuffer
): Promise<void> {
try {
const response: ApiResponse = await this.#apiClient.put(
`${this.#THEMES_API_PREFIX}/${themeName}/files/${path}`,
data
);
if (response.ok) {
return;
}
} catch (err) {
throw `Failed to create or update file ${path} in theme ${themeName}: ${err}`;
}
}
async deleteThemeFile(
themeName: string,
path: string,
recursive: boolean
): Promise<void> {
try {
const response: ApiResponse = await this.#apiClient.delete(
`${this.#THEMES_API_PREFIX}/${themeName}/files/${path}`,
{
recursive: recursive.toString(),
}
);
if (response.ok) {
return;
} else {
throw `Failed to delete file ${path} in theme ${themeName}:
${response.status} ${response.statusText}`;
}
} catch (err) {
throw `Failed to delete file ${path} in theme ${themeName}: ${err}`;
}
}
async downloadTheme(themeName: string): Promise<ArrayBuffer> {
try {
const response: ApiResponse = await this.#apiClient.get(
`${this.#THEMES_API_PREFIX}/${themeName}/@download`
);
if (response.ok) {
return response.arrayBuffer();
} else {
throw `Failed to download theme ${themeName}:
${response.status} ${response.statusText}`;
}
} catch (err) {
throw `Failed to download theme ${themeName}: ${err}`;
}
}
async updateTheme(
themeName: string,
updateTheme: ArrayBuffer
): Promise<void> {
try {
const response: ApiResponse = await this.#apiClient.post(
`${this.#THEMES_API_PREFIX}/${themeName}/@update`,
updateTheme
);
if (response.ok) {
return;
} else {
throw `Failed to update theme ${themeName}:
${response.status} ${response.statusText}`;
}
} catch (err) {
throw `Failed to update theme ${themeName}: ${err}`;
}
}
}