From 7ea57222d95915478cd1c2713c3f9ef27ea24a0f Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:31:09 +0000 Subject: [PATCH] refactor: pass Context instead of Config to MFP helper --- src/extractor/Mixdrop.ts | 6 +++--- src/extractor/Uqload.ts | 6 +++--- src/utils/media-flow-proxy.ts | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/extractor/Mixdrop.ts b/src/extractor/Mixdrop.ts index 0d6ae41..4975e4c 100644 --- a/src/extractor/Mixdrop.ts +++ b/src/extractor/Mixdrop.ts @@ -1,7 +1,7 @@ import bytes from 'bytes'; import * as cheerio from 'cheerio'; import { Extractor } from './Extractor'; -import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, hasMediaFlowProxy } from '../utils'; +import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, supportsMediaFlowProxy } from '../utils'; import { Context, CountryCode, Format, UrlResult } from '../types'; import { NotFoundError } from '../error'; @@ -21,7 +21,7 @@ export class Mixdrop extends Extractor { } public supports(ctx: Context, url: URL): boolean { - return null !== url.host.match(/mixdrop/) && hasMediaFlowProxy(ctx.config); + return null !== url.host.match(/mixdrop/) && supportsMediaFlowProxy(ctx); } protected async extractInternal(ctx: Context, url: URL, countryCode: CountryCode): Promise { @@ -39,7 +39,7 @@ export class Mixdrop extends Extractor { return [ { - url: buildMediaFlowProxyExtractorRedirectUrl(ctx.config, 'Mixdrop', url), + url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Mixdrop', url), format: Format.mp4, label: this.label, sourceId: `${this.id}_${countryCode}`, diff --git a/src/extractor/Uqload.ts b/src/extractor/Uqload.ts index 427d1ca..34a3b9b 100644 --- a/src/extractor/Uqload.ts +++ b/src/extractor/Uqload.ts @@ -1,6 +1,6 @@ import * as cheerio from 'cheerio'; import { Extractor } from './Extractor'; -import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, hasMediaFlowProxy } from '../utils'; +import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, supportsMediaFlowProxy } from '../utils'; import { Context, CountryCode, Format, UrlResult } from '../types'; export class Uqload extends Extractor { @@ -19,7 +19,7 @@ export class Uqload extends Extractor { } public supports(ctx: Context, url: URL): boolean { - return null !== url.host.match(/uqload/) && hasMediaFlowProxy(ctx.config); + return null !== url.host.match(/uqload/) && supportsMediaFlowProxy(ctx); } public override normalize(url: URL): URL { @@ -36,7 +36,7 @@ export class Uqload extends Extractor { return [ { - url: buildMediaFlowProxyExtractorRedirectUrl(ctx.config, 'Uqload', url), + url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Uqload', url), format: Format.mp4, label: this.label, sourceId: `${this.id}_${countryCode}`, diff --git a/src/utils/media-flow-proxy.ts b/src/utils/media-flow-proxy.ts index dbe11d4..edf8327 100644 --- a/src/utils/media-flow-proxy.ts +++ b/src/utils/media-flow-proxy.ts @@ -1,14 +1,14 @@ -import { Config } from '../types'; +import { Context } from '../types'; -export const hasMediaFlowProxy = (config: Config): boolean => !!(config['mediaFlowProxyUrl'] && config['mediaFlowProxyPassword']); +export const supportsMediaFlowProxy = (ctx: Context): boolean => !!(ctx.config['mediaFlowProxyUrl'] && ctx.config['mediaFlowProxyPassword']); -export const buildMediaFlowProxyExtractorRedirectUrl = (config: Config, host: string, url: URL): URL => { - const mediaFlowProxyUrl = new URL(`${config.mediaFlowProxyUrl}/extractor/video`); +export const buildMediaFlowProxyExtractorRedirectUrl = (ctx: Context, host: string, url: URL): URL => { + const mediaFlowProxyUrl = new URL(`${ctx.config.mediaFlowProxyUrl}/extractor/video`); const params = new URLSearchParams(); params.append('host', host); params.append('redirect_stream', 'true'); - params.append('api_password', `${config.mediaFlowProxyPassword}`); + params.append('api_password', `${ctx.config.mediaFlowProxyPassword}`); params.append('d', url.href); mediaFlowProxyUrl.search = params.toString();