Spaces:
Running
Running
File size: 6,747 Bytes
95f4e64 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
"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 |