apim-developer-portal2
Version:
API management developer portal
30 lines (25 loc) • 916 B
text/typescript
import { HttpResponse } from "@paperbits/common/http";
export interface SmapiErrorDetails {
target: string;
message: string;
}
export class MapiError extends Error {
constructor(
public readonly code: string,
public readonly message: string,
public readonly details?: SmapiErrorDetails[]
) {
super();
Object.setPrototypeOf(this, MapiError.prototype);
}
public static fromResponse(response: HttpResponse<any>): MapiError {
const responseObject = response.toObject();
const code = responseObject?.error?.code || "Error";
const message = responseObject?.error?.message || "Server error";
const details = responseObject?.error?.details || [];
return new MapiError(code, message, details);
}
public toString(): string {
return `${this.code}: ${this.message}`;
}
}