UNPKG

anypay-ts

Version:

TypeScript библиотека для работы с платёжной системой AnyPay

47 lines (38 loc) 1.36 kB
import axios, { AxiosError } from 'axios'; export class AnyPayError extends Error { public code?: string | number; public status?: number; constructor(message: string, code?: string | number, status?: number) { super(message); this.name = 'AnyPayError'; this.code = code; this.status = status; } } interface AnyPayErrorResponse { error: { code: string | number; message: string; }; } export function handleAxiosError(err: unknown): never { if (axios.isAxiosError(err)) { const axiosErr = err as AxiosError; // Приводим response.data к типу AnyPayErrorResponse const data = axiosErr.response?.data as AnyPayErrorResponse | undefined; if (data?.error) { const { code, message } = data.error; throw new AnyPayError(message, code, axiosErr.response?.status); } // Если пришёл HTML или другой текст const status = axiosErr.response?.status; const statusText = axiosErr.response?.statusText || 'Unknown error'; throw new AnyPayError( `HTTP ${status}: ${statusText}`, undefined, status, ); } // Любые другие ошибки throw err; }