UNPKG

tmdbrjs

Version:

A TypeScript wrapper for The Movie Database (TMDB) API

41 lines 1.72 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseService = void 0; const apiURL_1 = __importDefault(require("./apiURL")); const caseConversion_1 = require("./caseConversion"); class BaseService { apiClient; constructor(apiClient) { this.apiClient = apiClient; } async getByIdWithAppendToResponse(endpoint, id, options) { const { include } = options ?? {}; let appendToResponse; if (include && include.length > 0) { // Convert camelCase options to snake_case for the API appendToResponse = (0, caseConversion_1.camelToSnakeCaseArray)([...include]).join(','); } const url = new apiURL_1.default(endpoint.replace('{id}', id.toString())); if (appendToResponse) { url.appendParam('append_to_response', appendToResponse); } try { return await this.apiClient.get(url.toString()); } catch (error) { if (error instanceof Error) { // Enhanced error handling for append_to_response specific errors if (error.message.includes('append_to_response')) { throw new Error(`Failed to fetch ${endpoint} with append_to_response options: ${error.message}`); } throw new Error(`Failed to fetch ${endpoint}: ${error.message}`); } throw new Error(`Failed to fetch ${endpoint}: Something went wrong`); } } } exports.BaseService = BaseService; //# sourceMappingURL=BaseService.js.map