UNPKG

@realitydefender/realitydefender

Version:

SDK for the Reality Defender API for deepfake detection

111 lines (110 loc) 3.54 kB
"use strict"; /** * HTTP client implementation using Axios */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAxiosClient = createAxiosClient; exports.createHttpClient = createHttpClient; exports.handleAxiosError = handleAxiosError; const axios_1 = __importDefault(require("axios")); const constants_1 = require("../core/constants"); const errors_1 = require("../errors"); /** * Creates an Axios HTTP client * @param config Client configuration * @returns Axios client instance */ function createAxiosClient(config) { const baseUrl = config.baseUrl || constants_1.DEFAULT_BASE_URL; const client = axios_1.default.create({ baseURL: baseUrl, headers: { 'X-API-KEY': config.apiKey, 'Content-Type': 'application/json', }, }); return { client, baseUrl, }; } /** * Create an HTTP client for API communication * @param config Client configuration * @returns HTTP client instance */ function createHttpClient(config) { const { client } = createAxiosClient(config); return { /** * Send a GET request */ async get(path, params) { try { const response = await client.get(path, { params }); return response.data; } catch (error) { throw handleAxiosError(error); } }, /** * Send a POST request */ async post(path, data) { try { const response = await client.post(path, data); return response.data; } catch (error) { throw handleAxiosError(error); } }, /** * Send a PUT request */ async put(url, data, contentType = 'application/octet-stream') { try { const config = { headers: { 'Content-Type': contentType, }, }; await axios_1.default.put(url, data, config); } catch (error) { throw handleAxiosError(error); } }, }; } /** * Handle Axios errors and convert them to SDK errors * @param error Error from Axios * @returns SDK error */ function handleAxiosError(error) { if (axios_1.default.isAxiosError(error)) { const axiosError = error; if (axiosError.response) { const status = axiosError.response.status; if (status === 401) { return new errors_1.RealityDefenderError('Unauthorized: Invalid API key', 'unauthorized'); } else if (status === 404) { return new errors_1.RealityDefenderError(`Resource not found: ${axiosError.config?.url || ''}`, 'not_found'); } else if (status === 415) { return new errors_1.RealityDefenderError('Unsupported file type', 'invalid_file'); } else if (status >= 500) { return new errors_1.RealityDefenderError('Server error', 'server_error'); } } return new errors_1.RealityDefenderError(`API error: ${axiosError.message}`, 'unknown_error'); } return new errors_1.RealityDefenderError(`Request failed: ${error.message}`, 'unknown_error'); }