Display formatted HTTP errors

This commit is contained in:
Andras Schmelczer 2025-01-02 11:24:22 +00:00
commit dae8a9cc89
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
2 changed files with 103 additions and 44 deletions

View file

@ -23,6 +23,18 @@ export class SyncService {
}); });
} }
private static formatError(
error: components["schemas"]["SerializedError"]
): string {
let result = error.message;
if (error.causes.length > 0) {
const causes = error.causes.join(", ");
result += ` caused by: ${causes}`;
}
return result;
}
public async ping(): Promise<components["schemas"]["PingResponse"]> { public async ping(): Promise<components["schemas"]["PingResponse"]> {
const response = await this.client.GET("/ping", { const response = await this.client.GET("/ping", {
params: { params: {
@ -39,7 +51,11 @@ export class SyncService {
); );
if (!response.data) { if (!response.data) {
throw new Error(`Failed to ping server: ${response.error}`); throw new Error(
`Failed to ping server: ${SyncService.formatError(
response.error
)}`
);
} }
return response.data; return response.data;
@ -76,7 +92,11 @@ export class SyncService {
); );
if (!response.data) { if (!response.data) {
throw new Error(`Failed to create document: ${response.error}`); throw new Error(
`Failed to create document: ${SyncService.formatError(
response.error
)}`
);
} }
Logger.getInstance().debug( Logger.getInstance().debug(
@ -125,7 +145,11 @@ export class SyncService {
); );
if (!response.data) { if (!response.data) {
throw new Error(`Failed to update document: ${response.error}`); throw new Error(
`Failed to update document: ${SyncService.formatError(
response.error
)}`
);
} }
Logger.getInstance().debug( Logger.getInstance().debug(
@ -199,7 +223,11 @@ export class SyncService {
); );
if (!response.data) { if (!response.data) {
throw new Error(`Failed to get document: ${response.error}`); throw new Error(
`Failed to get document: ${SyncService.formatError(
response.error
)}`
);
} }
Logger.getInstance().debug( Logger.getInstance().debug(
@ -230,7 +258,11 @@ export class SyncService {
const { error } = response; const { error } = response;
if (error) { if (error) {
throw new Error(`Failed to get documents: ${error}`); throw new Error(
`Failed to get documents: ${SyncService.formatError(
response.error
)}`
);
} }
Logger.getInstance().debug( Logger.getInstance().debug(

View file

@ -23,11 +23,21 @@ export interface paths {
requestBody?: never; requestBody?: never;
responses: { responses: {
200: { 200: {
headers: Record<string, unknown>; headers: {
[name: string]: unknown;
};
content: { content: {
"application/json": components["schemas"]["PingResponse"]; "application/json": components["schemas"]["PingResponse"];
}; };
}; };
default: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SerializedError"];
};
};
}; };
}; };
put?: never; put?: never;
@ -61,11 +71,21 @@ export interface paths {
requestBody?: never; requestBody?: never;
responses: { responses: {
200: { 200: {
headers: Record<string, unknown>; headers: {
[name: string]: unknown;
};
content: { content: {
"application/json": components["schemas"]["FetchLatestDocumentsResponse"]; "application/json": components["schemas"]["FetchLatestDocumentsResponse"];
}; };
}; };
default: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SerializedError"];
};
};
}; };
}; };
put?: never; put?: never;
@ -87,11 +107,21 @@ export interface paths {
}; };
responses: { responses: {
200: { 200: {
headers: Record<string, unknown>; headers: {
[name: string]: unknown;
};
content: { content: {
"application/json": components["schemas"]["DocumentVersion"]; "application/json": components["schemas"]["DocumentVersion"];
}; };
}; };
default: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SerializedError"];
};
};
}; };
}; };
delete?: never; delete?: never;
@ -122,11 +152,21 @@ export interface paths {
requestBody?: never; requestBody?: never;
responses: { responses: {
200: { 200: {
headers: Record<string, unknown>; headers: {
[name: string]: unknown;
};
content: { content: {
"application/json": components["schemas"]["DocumentVersion"]; "application/json": components["schemas"]["DocumentVersion"];
}; };
}; };
default: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SerializedError"];
};
};
}; };
}; };
put: { put: {
@ -148,11 +188,21 @@ export interface paths {
}; };
responses: { responses: {
200: { 200: {
headers: Record<string, unknown>; headers: {
[name: string]: unknown;
};
content: { content: {
"application/json": components["schemas"]["DocumentVersion"]; "application/json": components["schemas"]["DocumentVersion"];
}; };
}; };
default: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SerializedError"];
};
};
}; };
}; };
post?: never; post?: never;
@ -176,48 +226,21 @@ export interface paths {
responses: { responses: {
/** @description no content */ /** @description no content */
200: { 200: {
headers: Record<string, unknown>;
content?: never;
};
};
};
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/ws": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description websocket upgrade */
101: {
headers: { headers: {
connection?: "upgrade";
upgrade?: "websocket";
"sec-websocket-key"?: string;
"sec-websocket-protocol"?: string;
[name: string]: unknown; [name: string]: unknown;
}; };
content?: never; content?: never;
}; };
default: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SerializedError"];
};
};
}; };
}; };
put?: never;
post?: never;
delete?: never;
options?: never; options?: never;
head?: never; head?: never;
patch?: never; patch?: never;
@ -299,6 +322,10 @@ export interface components {
/** Format: int64 */ /** Format: int64 */
since_update_id?: number | null; since_update_id?: number | null;
}; };
SerializedError: {
causes: string[];
message: string;
};
UpdateDocumentVersion: { UpdateDocumentVersion: {
contentBase64: string; contentBase64: string;
/** Format: date-time */ /** Format: date-time */