barkey/packages/backend/src/server/api/mastodon/MastodonLogger.ts
Hazelnoot 16f483d273 cleanup Mastodon API (resolves #804 and #865, partially resolves #492)
* Fix TS errors and warnings
* Fix ESLint errors and warnings
* Fix property typos in various places
* Fix property data conversion
* Add missing entity properties
* Normalize logging and reduce spam
* Check for missing request parameters
* Allow mastodon API to work with local debugging
* Safer error handling
* Fix quote-post detection
2025-02-08 13:17:34 -05:00

39 lines
1.1 KiB
TypeScript

/*
* SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { Injectable } from '@nestjs/common';
import Logger, { Data } from '@/logger.js';
import { LoggerService } from '@/core/LoggerService.js';
@Injectable()
export class MastodonLogger {
public readonly logger: Logger;
constructor(loggerService: LoggerService) {
this.logger = loggerService.getLogger('masto-api');
}
public error(endpoint: string, error: Data): void {
this.logger.error(`Error in mastodon API endpoint ${endpoint}:`, error);
}
}
export function getErrorData(error: unknown): Data {
if (error == null) return {};
if (typeof(error) === 'string') return error;
if (typeof(error) === 'object') {
if ('response' in error) {
if (typeof(error.response) === 'object' && error.response) {
if ('data' in error.response) {
if (typeof(error.response.data) === 'object' && error.response.data) {
return error.response.data as Record<string, unknown>;
}
}
}
}
return error as Record<string, unknown>;
}
return { error };
}