tmdbrjs
Version:
A TypeScript wrapper for The Movie Database (TMDB) API
41 lines • 1.72 kB
JavaScript
;
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