refactor: make BlockedReason an enum
This commit is contained in:
parent
250d6a1323
commit
b5067aa0a9
3 changed files with 13 additions and 8 deletions
|
|
@ -22,7 +22,11 @@ export enum CountryCode {
|
|||
mx = 'mx',
|
||||
}
|
||||
|
||||
export type BlockedReason = 'cloudflare_challenge' | 'flaresolverr_failed' | 'unknown';
|
||||
export enum BlockedReason {
|
||||
cloudflare_challenge = 'cloudflare_challenge',
|
||||
flaresolverr_failed = 'flaresolverr_failed',
|
||||
unknown = 'unknown',
|
||||
}
|
||||
|
||||
export interface Meta {
|
||||
bytes?: number;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import TTLCache from '@isaacs/ttlcache';
|
|||
import winston from 'winston';
|
||||
import { Mutex } from 'async-mutex';
|
||||
import { Cookie, CookieJar } from 'tough-cookie';
|
||||
import { Context, TIMEOUT } from '../types';
|
||||
import { BlockedReason, Context, TIMEOUT } from '../types';
|
||||
import { BlockedError, HttpError, NotFoundError, QueueIsFullError } from '../error';
|
||||
import { clearTimeout } from 'node:timers';
|
||||
import { envGet } from './env';
|
||||
|
|
@ -114,7 +114,7 @@ export class Fetcher {
|
|||
const noFlareSolverr = init?.noFlareSolverr ?? false;
|
||||
const flareSolverrEndpoint = envGet('FLARESOLVERR_ENDPOINT');
|
||||
if (noFlareSolverr || !flareSolverrEndpoint) {
|
||||
throw new BlockedError('cloudflare_challenge', httpCacheItem.policy.responseHeaders());
|
||||
throw new BlockedError(BlockedReason.cloudflare_challenge, httpCacheItem.policy.responseHeaders());
|
||||
}
|
||||
|
||||
this.logger.info(`Query FlareSolverr for ${url.href}`, ctx);
|
||||
|
|
@ -123,7 +123,7 @@ export class Fetcher {
|
|||
const challengeResult = await (await this.queuedFetch(ctx, new URL(flareSolverrEndpoint), { method: 'POST', body: JSON.stringify(body), headers: { 'Content-Type': 'application/json' }, queueLimit: 1 })).json() as FlareSolverrResult;
|
||||
if (challengeResult.status !== 'ok') {
|
||||
this.logger.warn(`FlareSolverr issue: ${JSON.stringify(challengeResult)}`, ctx);
|
||||
throw new BlockedError('flaresolverr_failed', {});
|
||||
throw new BlockedError(BlockedReason.flaresolverr_failed, {});
|
||||
}
|
||||
|
||||
challengeResult.solution.cookies.forEach((cookie) => {
|
||||
|
|
@ -156,7 +156,7 @@ export class Fetcher {
|
|||
}
|
||||
|
||||
if (httpCacheItem.status === 403) {
|
||||
throw new BlockedError('unknown', httpCacheItem.policy.responseHeaders());
|
||||
throw new BlockedError(BlockedReason.unknown, httpCacheItem.policy.responseHeaders());
|
||||
}
|
||||
|
||||
throw new HttpError(httpCacheItem.status, httpCacheItem.statusText, responseHeaders);
|
||||
|
|
|
|||
|
|
@ -4,9 +4,10 @@ import { ExtractorRegistry } from '../extractor';
|
|||
import { StreamResolver } from './StreamResolver';
|
||||
import { Handler, MeineCloud, MostraGuarda } from '../handler';
|
||||
import { Fetcher } from './Fetcher';
|
||||
import { Context, CountryCode, TIMEOUT, UrlResult } from '../types';
|
||||
import { BlockedReason, Context, CountryCode, TIMEOUT, UrlResult } from '../types';
|
||||
import { BlockedError, HttpError, NotFoundError, QueueIsFullError } from '../error';
|
||||
import { ImdbId } from './id';
|
||||
|
||||
jest.mock('../utils/Fetcher');
|
||||
|
||||
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
|
||||
|
|
@ -69,7 +70,7 @@ describe('resolve', () => {
|
|||
{
|
||||
url: new URL('https://example.com'),
|
||||
isExternal: true,
|
||||
error: new BlockedError('cloudflare_challenge', {}),
|
||||
error: new BlockedError(BlockedReason.cloudflare_challenge, {}),
|
||||
label: 'hoster.com',
|
||||
sourceId: '',
|
||||
meta: {
|
||||
|
|
@ -79,7 +80,7 @@ describe('resolve', () => {
|
|||
{
|
||||
url: new URL('https://example.com'),
|
||||
isExternal: true,
|
||||
error: new BlockedError('unknown', {}),
|
||||
error: new BlockedError(BlockedReason.unknown, {}),
|
||||
label: 'hoster.com',
|
||||
sourceId: '',
|
||||
meta: {
|
||||
|
|
|
|||
Loading…
Reference in a new issue