view models

This commit is contained in:
2025-12-18 14:04:31 +01:00
parent 4f99098b32
commit 61f675d991
9 changed files with 95 additions and 19 deletions

View File

@@ -5,14 +5,23 @@
* error handling, and authentication.
*/
import { Logger } from '../../interfaces/Logger';
import { ErrorReporter } from '../../interfaces/ErrorReporter';
export class BaseApiClient {
private baseUrl: string;
private errorReporter: ErrorReporter;
private logger: Logger;
constructor(baseUrl: string) {
constructor(baseUrl: string, errorReporter: ErrorReporter, logger: Logger) {
this.baseUrl = baseUrl;
this.errorReporter = errorReporter;
this.logger = logger;
}
protected async request<T>(method: string, path: string, data?: object): Promise<T> {
this.logger.info(`${method} ${path}`);
const headers: HeadersInit = {
'Content-Type': 'application/json',
};
@@ -36,7 +45,9 @@ export class BaseApiClient {
} catch {
// Keep default error message
}
throw new Error(errorData.message || `API request failed with status ${response.status}`);
const error = new Error(errorData.message || `API request failed with status ${response.status}`);
this.errorReporter.report(error);
throw error;
}
const text = await response.text();