mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
display error stream response for expires rd sub
This commit is contained in:
@@ -9,7 +9,7 @@ const putio = require('./putio');
|
|||||||
const StaticResponse = require('./static');
|
const StaticResponse = require('./static');
|
||||||
const { cacheWrapResolvedUrl } = require('../lib/cache');
|
const { cacheWrapResolvedUrl } = require('../lib/cache');
|
||||||
const { timeout } = require('../lib/promises');
|
const { timeout } = require('../lib/promises');
|
||||||
const { BadTokenError, streamFilename } = require('./mochHelper');
|
const { BadTokenError, streamFilename, AccessDeniedError } = require('./mochHelper');
|
||||||
|
|
||||||
const RESOLVE_TIMEOUT = 2 * 60 * 1000; // 2 minutes
|
const RESOLVE_TIMEOUT = 2 * 60 * 1000; // 2 minutes
|
||||||
const MIN_API_KEY_SYMBOLS = 15;
|
const MIN_API_KEY_SYMBOLS = 15;
|
||||||
@@ -136,9 +136,11 @@ async function getMochItemMeta(mochKey, itemId, config) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function processMochResults(streams, config, results) {
|
function processMochResults(streams, config, results) {
|
||||||
const errorResults = results.filter(result => result && result.error === BadTokenError);
|
const errorResults = results
|
||||||
|
.map(result => errorStreamResponse(result.moch.key, result.error))
|
||||||
|
.filter(errorResponse => errorResponse);
|
||||||
if (errorResults.length) {
|
if (errorResults.length) {
|
||||||
return errorResults.map(result => badTokenStreamResponse(result.moch.key))
|
return errorResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
const includeTorrentLinks = options.includeTorrentLinks(config);
|
const includeTorrentLinks = options.includeTorrentLinks(config);
|
||||||
@@ -194,12 +196,22 @@ function blackListToken(token, mochKey) {
|
|||||||
TOKEN_BLACKLIST.push(tokenKey);
|
TOKEN_BLACKLIST.push(tokenKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
function badTokenStreamResponse(mochKey) {
|
function errorStreamResponse(mochKey, error) {
|
||||||
return {
|
if (error === BadTokenError) {
|
||||||
name: `Torrentio\n${MOCHS[mochKey].shortName} error`,
|
return {
|
||||||
title: `Invalid ${MOCHS[mochKey].name} ApiKey/Token!`,
|
name: `Torrentio\n${MOCHS[mochKey].shortName} error`,
|
||||||
url: StaticResponse.FAILED_ACCESS
|
title: `Invalid ${MOCHS[mochKey].name} ApiKey/Token!`,
|
||||||
};
|
url: StaticResponse.FAILED_ACCESS
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (error === AccessDeniedError) {
|
||||||
|
return {
|
||||||
|
name: `Torrentio\n${MOCHS[mochKey].shortName} error`,
|
||||||
|
title: `Expired ${MOCHS[mochKey].name} subscription!`,
|
||||||
|
url: StaticResponse.FAILED_ACCESS
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { applyMochs, getMochCatalog, getMochItemMeta, resolve, MochOptions: MOCHS }
|
module.exports = { applyMochs, getMochCatalog, getMochItemMeta, resolve, MochOptions: MOCHS }
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
const BadTokenError = { code: 'BAD_TOKEN' }
|
const BadTokenError = { code: 'BAD_TOKEN' }
|
||||||
|
const AccessDeniedError = { code: 'ACCESS_DENIED' }
|
||||||
|
|
||||||
function chunkArray(arr, size) {
|
function chunkArray(arr, size) {
|
||||||
return arr.length > size
|
return arr.length > size
|
||||||
@@ -15,4 +16,4 @@ function streamFilename(stream) {
|
|||||||
return encodeURIComponent(filename)
|
return encodeURIComponent(filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { chunkArray, BadTokenError, streamFilename }
|
module.exports = { chunkArray, streamFilename, BadTokenError, AccessDeniedError }
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const { delay } = require('../lib/promises');
|
|||||||
const { cacheAvailabilityResults, getCachedAvailabilityResults } = require('../lib/cache');
|
const { cacheAvailabilityResults, getCachedAvailabilityResults } = require('../lib/cache');
|
||||||
const StaticResponse = require('./static');
|
const StaticResponse = require('./static');
|
||||||
const { getMagnetLink } = require('../lib/magnetHelper');
|
const { getMagnetLink } = require('../lib/magnetHelper');
|
||||||
const { chunkArray, BadTokenError } = require('./mochHelper');
|
const { chunkArray, BadTokenError, AccessDeniedError } = require('./mochHelper');
|
||||||
|
|
||||||
const MIN_SIZE = 5 * 1024 * 1024; // 5 MB
|
const MIN_SIZE = 5 * 1024 * 1024; // 5 MB
|
||||||
const CATALOG_MAX_PAGE = 5;
|
const CATALOG_MAX_PAGE = 5;
|
||||||
@@ -52,6 +52,9 @@ async function _getInstantAvailable(hashes, apiKey, retries = 3, maxChunkSize =
|
|||||||
if (error && error.code === 8) {
|
if (error && error.code === 8) {
|
||||||
return Promise.reject(BadTokenError);
|
return Promise.reject(BadTokenError);
|
||||||
}
|
}
|
||||||
|
if (error && accessDeniedError(error)) {
|
||||||
|
return Promise.reject(AccessDeniedError);
|
||||||
|
}
|
||||||
if (!error && maxChunkSize !== 1) {
|
if (!error && maxChunkSize !== 1) {
|
||||||
// sometimes due to large response size RD responds with an empty body. Reduce chunk size to reduce body
|
// sometimes due to large response size RD responds with an empty body. Reduce chunk size to reduce body
|
||||||
console.log(`Reducing chunk size for availability request: ${hashes[0]}`);
|
console.log(`Reducing chunk size for availability request: ${hashes[0]}`);
|
||||||
|
|||||||
Reference in New Issue
Block a user