reduce log spam from DownloadService

This commit is contained in:
Hazelnoot 2025-05-22 09:53:13 -04:00
parent 2854e15301
commit 6d6e1dc0c0
2 changed files with 10 additions and 9 deletions

View file

@ -18,6 +18,7 @@ import { LoggerService } from '@/core/LoggerService.js';
import type Logger from '@/logger.js'; import type Logger from '@/logger.js';
import { bindThis } from '@/decorators.js'; import { bindThis } from '@/decorators.js';
import { renderInlineError } from '@/misc/render-inline-error.js';
@Injectable() @Injectable()
export class DownloadService { export class DownloadService {
@ -37,7 +38,7 @@ export class DownloadService {
public async downloadUrl(url: string, path: string, options: { timeout?: number, operationTimeout?: number, maxSize?: number } = {} ): Promise<{ public async downloadUrl(url: string, path: string, options: { timeout?: number, operationTimeout?: number, maxSize?: number } = {} ): Promise<{
filename: string; filename: string;
}> { }> {
this.logger.info(`Downloading ${chalk.cyan(url)} to ${chalk.cyanBright(path)} ...`); this.logger.debug(`Downloading ${chalk.cyan(url)} to ${chalk.cyanBright(path)} ...`);
const timeout = options.timeout ?? 30 * 1000; const timeout = options.timeout ?? 30 * 1000;
const operationTimeout = options.operationTimeout ?? 60 * 1000; const operationTimeout = options.operationTimeout ?? 60 * 1000;
@ -86,7 +87,7 @@ export class DownloadService {
filename = parsed.parameters.filename; filename = parsed.parameters.filename;
} }
} catch (e) { } catch (e) {
this.logger.warn(`Failed to parse content-disposition: ${contentDisposition}`, { stack: e }); this.logger.warn(`Failed to parse content-disposition ${contentDisposition}: ${renderInlineError(e)}`);
} }
} }
}).on('downloadProgress', (progress: Got.Progress) => { }).on('downloadProgress', (progress: Got.Progress) => {
@ -100,17 +101,17 @@ export class DownloadService {
await stream.pipeline(req, fs.createWriteStream(path)); await stream.pipeline(req, fs.createWriteStream(path));
} catch (e) { } catch (e) {
if (e instanceof Got.HTTPError) { if (e instanceof Got.HTTPError) {
throw new StatusError(`${e.response.statusCode} ${e.response.statusMessage}`, e.response.statusCode, e.response.statusMessage); throw new StatusError(`${e.response.statusCode} ${e.response.statusMessage}`, e.response.statusCode, e.response.statusMessage, e);
} else if (e instanceof Got.RequestError || e instanceof Got.AbortError) { } else if (e instanceof Got.RequestError || e instanceof Got.AbortError) {
throw new Error(String(e)); throw new Error(String(e), { cause: e });
} else if (e instanceof Error) { } else if (e instanceof Error) {
throw e; throw e;
} else { } else {
throw new Error(String(e)); throw new Error(String(e), { cause: e });
} }
} }
this.logger.succ(`Download finished: ${chalk.cyan(url)}`); this.logger.info(`Download finished: ${chalk.cyan(url)}`);
return { return {
filename, filename,
@ -122,7 +123,7 @@ export class DownloadService {
// Create temp file // Create temp file
const [path, cleanup] = await createTemp(); const [path, cleanup] = await createTemp();
this.logger.info(`text file: Temp file is ${path}`); this.logger.debug(`text file: Temp file is ${path}`);
try { try {
// write content at URL to temp file // write content at URL to temp file

View file

@ -9,8 +9,8 @@ export class StatusError extends Error {
public isClientError: boolean; public isClientError: boolean;
public isRetryable: boolean; public isRetryable: boolean;
constructor(message: string, statusCode: number, statusMessage?: string) { constructor(message: string, statusCode: number, statusMessage?: string, options?: ErrorOptions) {
super(message); super(message, options);
this.name = 'StatusError'; this.name = 'StatusError';
this.statusCode = statusCode; this.statusCode = statusCode;
this.statusMessage = statusMessage; this.statusMessage = statusMessage;