import {LegacyOpenFlareBaseService} from './legacy-base.service'; import type { WAFIPGroup, WAFIPGroupAutoTestPayload, WAFIPGroupAutoTestResult, WAFIPGroupPayload, WAFIPGroupSyncResult, WAFRuleGroup, WAFRuleGroupPayload, WAFSiteRuleGroups, } from './types'; export class WafService extends LegacyOpenFlareBaseService { protected static readonly basePath = '/api/waf'; static async listRuleGroups(): Promise { return this.legacyGet('/rule-groups'); } static async getRuleGroup(id: number): Promise { return this.legacyGet(`/rule-groups/${id}`); } static async createRuleGroup(payload: WAFRuleGroupPayload): Promise { return this.legacyPost('/rule-groups', payload); } static async updateRuleGroup( id: number, payload: WAFRuleGroupPayload, ): Promise { return this.legacyPost(`/rule-groups/${id}/update`, payload); } static async deleteRuleGroup(id: number): Promise { return this.legacyPost(`/rule-groups/${id}/delete`); } static async updateRuleGroupSites(id: number, ids: number[]): Promise { return this.legacyPost(`/rule-groups/${id}/sites`, { ids }); } static async listSiteRuleGroups(routeId: number): Promise { return this.legacyGet(`/sites/${routeId}/rule-groups`); } static async updateSiteRuleGroups( routeId: number, ids: number[], ): Promise { return this.legacyPost(`/sites/${routeId}/rule-groups`, { ids, }); } static async listIPGroups(): Promise { return this.legacyGet('/ip-groups'); } static async getIPGroup(id: number): Promise { return this.legacyGet(`/ip-groups/${id}`); } static async createIPGroup(payload: WAFIPGroupPayload): Promise { return this.legacyPost('/ip-groups', payload); } static async updateIPGroup(id: number, payload: WAFIPGroupPayload): Promise { return this.legacyPost(`/ip-groups/${id}/update`, payload); } static async deleteIPGroup(id: number): Promise { return this.legacyPost(`/ip-groups/${id}/delete`); } static async testIPGroup( payload: WAFIPGroupAutoTestPayload, ): Promise { return this.legacyPost('/ip-groups/test', payload); } static async syncIPGroup(id: number): Promise { return this.legacyPost(`/ip-groups/${id}/sync`); } }