no1b4me's picture
Upload 5037 files
95f4e64 verified
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.config = void 0;
exports.search = search;
exports.details = details;
exports.suggestions = suggestions;
exports.comments = comments;
exports.reviews = reviews;
exports.parentals = parentals;
exports.upcomming = upcomming;
const cross_fetch_1 = __importDefault(require("cross-fetch"));
/**
* TODO: Implement proxy?
*/
exports.config = {
baseUrl: 'https://yts.mx/api/v2/',
format: 'json',
paths: {
search: '/list_movies',
details: '/movie_details',
suggestions: '/movie_suggestions',
comments: '/movie_comments',
reviews: '/movie_reviews',
parentals: '/movie_parental_guides',
upcomming: '/list_upcoming',
}
};
/**
* TypeScript compiler complains about strings only
* This helper converts all params to strings
*
* @param params
* @returns URLSearchParams
*/
function searchParams(params) {
Object.keys(params).forEach(param => params[param] = params[param].toString());
return new URLSearchParams(params);
}
/**
* Send a request to YTS API
*
* @param path - path to api endpoint
* @param params - https://yts.mx/api
* @param format - json|jsonp|xml
* @returns
*/
function doFetch(path_1, params_1) {
return __awaiter(this, arguments, void 0, function* (path, params, format = exports.config.format) {
try {
return yield (0, cross_fetch_1.default)(`${exports.config.baseUrl}/${path}?${params}`.replace('///', '/')).then((response) => __awaiter(this, void 0, void 0, function* () {
if (format === 'xml') {
return yield response.text();
}
return yield response.json();
}));
}
catch (e) {
if (e instanceof Error) {
throw new YtsApiException(e.message);
}
throw new YtsApiException('Could not fullfill request');
}
});
}
/**
* Used to list and search through out all the available movies. Can sort, filter, search and order the results
*
* @param params
* @param format
* @returns
*/
function search(params, format) {
return __awaiter(this, void 0, void 0, function* () {
return yield doFetch(`${exports.config.paths.search}.${format || exports.config.format}`, params ? searchParams(params) : undefined, format);
});
}
/**
* Returns the information about a specific movie
*
* @param params
* @param format
* @returns
*/
function details(params, format) {
return __awaiter(this, void 0, void 0, function* () {
if (typeof params.movie_id === 'string' && params.movie_id.match(/tt/)) {
return yield doFetch(`${exports.config.paths.details}.${format || exports.config.format}`, searchParams(Object.assign({ imdb_id: params.movie_id }, params)), format);
}
return yield doFetch(`${exports.config.paths.details}.${format || exports.config.format}`, searchParams(params), format);
});
}
/**
* Returns 4 related movies as suggestions for the user
*
* @param params
* @param format
* @returns
*/
function suggestions(params, format) {
return __awaiter(this, void 0, void 0, function* () {
return yield doFetch(`${exports.config.paths.suggestions}.${format || exports.config.format}`, searchParams(params), format);
});
}
/**
* Returns all the comments for the specified movie
*
* ! NOTE: The API route is broken, this function is non functional for the time being
* ! Mabye in the future this will be working again. This is a YTS problem and not a package problem
* ! As soon as these routings are working as intended I will remove the @deprecated marker
* @deprecated This method is not working, API route is not working on YTS side
* @param params
* @param format
*/
function comments(params, format) {
return __awaiter(this, void 0, void 0, function* () {
return yield doFetch(`${exports.config.paths.comments}.${format || exports.config.format}`, searchParams(params), format);
});
}
/**
* Returns all the IMDb movie reviews for the specified movie
*
* ! NOTE: The API route is broken, this function is non functional for the time being
* ! Mabye in the future this will be working again. This is a YTS problem and not a package problem
* ! As soon as these routings are working as intended I will remove the @deprecated marker
* @deprecated This method is not working, API route is not working on YTS side
* @param params
* @param format
*/
function reviews(params, format) {
return __awaiter(this, void 0, void 0, function* () {
return yield doFetch(`${exports.config.paths.reviews}.${format || exports.config.format}`, searchParams(params), format);
});
}
/**
* Returns all the parental guide ratings for the specified movie
*
* ! Apparently this is not yet implemented inside the YTS API
*
* @param params
* @param format
* @returns
*/
function parentals(params, format) {
return __awaiter(this, void 0, void 0, function* () {
return yield doFetch(`${exports.config.paths.parentals}.${format || exports.config.format}`, searchParams(params), format);
});
}
/**
* Returns the 4 latest upcoming movies
*
* ! NOTE: The API route is broken, this function is non functional for the time being
* ! Mabye in the future this will be working again. This is a YTS problem and not a package problem
* ! As soon as these routings are working as intended I will remove the @deprecated marker
* @deprecated This method is not working, API route is not working on YTS side
* @param format
* @returns
*/
function upcomming(format) {
return __awaiter(this, void 0, void 0, function* () {
return yield doFetch(`${exports.config.paths.upcomming}.${format || exports.config.format}`, undefined, format);
});
}
class YtsApiException extends Error {
}
//# sourceMappingURL=main.js.map