diff --git a/packages/core/src/builtins/base/debrid.ts b/packages/core/src/builtins/base/debrid.ts index e88279fe..da06be06 100644 --- a/packages/core/src/builtins/base/debrid.ts +++ b/packages/core/src/builtins/base/debrid.ts @@ -332,7 +332,12 @@ export abstract class BaseDebridAddon { encryptedStoreAuths, metadataId ); - if (result.service?.id === 'nzbdav' && nzbdavAuth) { + if ( + result.service?.id === 'nzbdav' && + nzbdavAuth && + nzbdavAuth.webdavUser && + nzbdavAuth.webdavPassword + ) { stream.behaviorHints = { ...stream.behaviorHints, notWebReady: true, @@ -374,13 +379,16 @@ export abstract class BaseDebridAddon { .map((stream) => ({ url: stream.url!, filename: stream.behaviorHints?.filename ?? undefined, - headers: { - request: { - Authorization: `Basic ${Buffer.from( - `${nzbdavAuth.webdavUser}:${nzbdavAuth.webdavPassword}` - ).toString('base64')}`, - }, - }, + headers: + nzbdavAuth.webdavUser && nzbdavAuth.webdavPassword + ? { + request: { + Authorization: `Basic ${Buffer.from( + `${nzbdavAuth.webdavUser}:${nzbdavAuth.webdavPassword}` + ).toString('base64')}`, + }, + } + : undefined, })) ); diff --git a/packages/core/src/debrid/nzbdav.ts b/packages/core/src/debrid/nzbdav.ts index 4a75db22..a2949a0c 100644 --- a/packages/core/src/debrid/nzbdav.ts +++ b/packages/core/src/debrid/nzbdav.ts @@ -20,8 +20,8 @@ export const NzbDavConfig = z.object({ .optional() .transform((s) => s?.trim().replace(/^\/+/, '').replace(/\/+$/, '')), nzbdavApiKey: z.string(), - webdavUser: z.string(), - webdavPassword: z.string(), + webdavUser: z.string().optional(), + webdavPassword: z.string().optional(), aiostreamsAuth: z.string().optional(), }); diff --git a/packages/core/src/debrid/usenet-stream-base.ts b/packages/core/src/debrid/usenet-stream-base.ts index 6b0cc940..9a888937 100644 --- a/packages/core/src/debrid/usenet-stream-base.ts +++ b/packages/core/src/debrid/usenet-stream-base.ts @@ -383,8 +383,8 @@ export class SABnzbdApi { export interface UsenetStreamServiceConfig { webdavUrl: string; publicWebdavUrl: string; - webdavUser: string; - webdavPassword: string; + webdavUser?: string; + webdavPassword?: string; apiUrl: string; apiKey: string; aiostreamsAuth?: string; @@ -806,8 +806,10 @@ export abstract class UsenetStreamService implements DebridService { protected getPublicWebdavUrlWithAuth(): string { let url = new URL(this.auth.publicWebdavUrl); - url.username = encodeURIComponent(this.auth.webdavUser); - url.password = encodeURIComponent(this.auth.webdavPassword); + if (this.auth.webdavUser && this.auth.webdavPassword) { + url.username = encodeURIComponent(this.auth.webdavUser); + url.password = encodeURIComponent(this.auth.webdavPassword); + } return url.toString().replace(/\/+$/, ''); // Remove trailing slash } } diff --git a/packages/core/src/utils/constants.ts b/packages/core/src/utils/constants.ts index 68150e9d..8752e652 100644 --- a/packages/core/src/utils/constants.ts +++ b/packages/core/src/utils/constants.ts @@ -431,7 +431,7 @@ const SERVICE_DETAILS: Record< description: 'Your Nzb DAV WebDAV Username. Found in the WebDAV section in settings.', type: 'string', - required: true, + required: false, }, { id: 'password', @@ -439,7 +439,7 @@ const SERVICE_DETAILS: Record< description: 'Your NzbDAV WebDAV Password. Found in the WebDAV section in settings.', type: 'password', - required: true, + required: false, }, { id: 'aiostreamsAuth',