import { OpenFlareBaseService } from './base.service'; import type { AccessLogCleanupPayload, AccessLogCleanupResult, AccessLogFilters, AccessLogIPSummaryFilters, AccessLogIPSummaryList, AccessLogIPTrend, AccessLogIPTrendFilters, AccessLogList, FoldedAccessLogFilters, FoldedAccessLogIPFilters, FoldedAccessLogIPList, FoldedAccessLogList, } from './types'; function buildSearchParams(filters: object): Record { const params: Record = {}; Object.entries( filters as Record, ).forEach(([key, value]) => { if (value === undefined || value === null || value === '') return; params[key] = value; }); return params; } export class AccessLogService extends OpenFlareBaseService { protected static override readonly basePath: string = '/api/v1/d/access-logs'; static list(filters: AccessLogFilters = {}): Promise { return this.get('/', buildSearchParams(filters)); } static listFolds( filters: FoldedAccessLogFilters, ): Promise { return this.get('/folds', buildSearchParams(filters)); } static listFoldIPs( filters: FoldedAccessLogIPFilters, ): Promise { return this.get( '/folds/ip-summary', buildSearchParams(filters), ); } static listIPSummaries( filters: AccessLogIPSummaryFilters = {}, ): Promise { return this.get( '/ip-summary', buildSearchParams(filters), ); } static getIPTrend( filters: AccessLogIPTrendFilters, ): Promise { return this.get( '/ip-summary/trend', buildSearchParams(filters), ); } static cleanup( payload: AccessLogCleanupPayload, ): Promise { return this.post('/cleanup', payload); } }