import {LegacyOpenFlareBaseService} from './legacy-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 LegacyOpenFlareBaseService { protected static override readonly basePath = '/api/access-logs'; static list(filters: AccessLogFilters = {}): Promise { return this.legacyGet('/', buildSearchParams(filters)); } static listFolds( filters: FoldedAccessLogFilters, ): Promise { return this.legacyGet( '/folds', buildSearchParams(filters), ); } static listFoldIPs( filters: FoldedAccessLogIPFilters, ): Promise { return this.legacyGet( '/folds/ip-summary', buildSearchParams(filters), ); } static listIPSummaries( filters: AccessLogIPSummaryFilters = {}, ): Promise { return this.legacyGet( '/ip-summary', buildSearchParams(filters), ); } static getIPTrend( filters: AccessLogIPTrendFilters, ): Promise { return this.legacyGet( '/ip-summary/trend', buildSearchParams(filters), ); } static cleanup( payload: AccessLogCleanupPayload, ): Promise { return this.legacyPost('/cleanup', payload); } }