Skip to content

Commit

Permalink
Merge branch 'hotfix/3.2.12'
Browse files Browse the repository at this point in the history
  • Loading branch information
Ziut3k-dev committed Apr 4, 2024
2 parents d68cd1b + 95f72c0 commit f718e39
Show file tree
Hide file tree
Showing 4 changed files with 193 additions and 19 deletions.
101 changes: 84 additions & 17 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ declare namespace Cloudflare {
type ExistingDnsRecordByType<RecordType extends RecordTypes> =
& (RecordType extends 'MX' | 'URI' ? DnsRecordWithPriority
: RecordType extends 'SRV' ? SrvDnsRecord
: RecordType extends Exclude<RecordTypes, 'MX' | 'SRV' | 'URI'> ? DnsRecordWithoutPriority
: DnsRecord)
& {id: string};
: RecordType extends Exclude<RecordTypes, 'MX' | 'SRV' | 'URI'> ? DnsRecordWithoutPriority
: DnsRecord)
& { id: string };

export interface DNSRecords {
edit(zone_id: string, id: string, record: DnsRecord): ResponseObjectPromise;
Expand Down Expand Up @@ -147,19 +147,19 @@ declare namespace Cloudflare {

del(zone_id: string, id: string): ResponseObjectPromise;

add(zone_id: string, config: {pattern: string; script: string}): ResponseObjectPromise;
add(zone_id: string, config: { pattern: string; script: string }): ResponseObjectPromise;

edit(zone_id: string, id: string, config: {pattern: string; script: string}): ResponseObjectPromise;
edit(zone_id: string, id: string, config: { pattern: string; script: string }): ResponseObjectPromise;

read(zone_id: string, id: string): ResponseObjectPromise;
}

export interface EnterpriseZoneWorkersKVNamespaces {
edit(account_id: string, id: string, config: {title: string}): ResponseObjectPromise;
edit(account_id: string, id: string, config: { title: string }): ResponseObjectPromise;

browse(account_id: string): ResponseObjectPromise;

add(account_id: string, config: {title: string}): ResponseObjectPromise;
add(account_id: string, config: { title: string }): ResponseObjectPromise;

del(account_id: string, id: string): ResponseObjectPromise;
}
Expand Down Expand Up @@ -251,7 +251,7 @@ declare namespace Cloudflare {

add(zone: {
name: string;
action: {id: string};
action: { id: string };
jump_start?: boolean | undefined;
type?: 'full' | 'partial' | undefined;
}): ResponseObjectPromise;
Expand All @@ -260,7 +260,7 @@ declare namespace Cloudflare {
id: string,
zone: {
name: string;
action: {id: string};
action: { id: string };
jump_start?: boolean | undefined;
type?: 'full' | 'partial' | undefined;
},
Expand All @@ -272,9 +272,9 @@ declare namespace Cloudflare {
id: string,
params: {
files?:
| string[]
| {url: string; headers: {Origin: string; 'CF-IPCountry': string; 'CF-Device-Type': string}}
| undefined;
| string[]
| { url: string; headers: { Origin: string; 'CF-IPCountry': string; 'CF-Device-Type': string } }
| undefined;
tags?: string[] | undefined;
hosts?: string[] | undefined;
prefixes?: string[] | undefined;
Expand Down Expand Up @@ -364,11 +364,11 @@ declare namespace Cloudflare {
export interface ZoneWorkersRoutes {
browse(zone_id: string): ResponseObjectPromise;

edit(zone_id: string, id: string, config: {pattern: string; script: string}): ResponseObjectPromise;
edit(zone_id: string, id: string, config: { pattern: string; script: string }): ResponseObjectPromise;

read(zone_id: string, id: string): ResponseObjectPromise;

add(zone_id: string, config: {pattern: string; script: string}): ResponseObjectPromise;
add(zone_id: string, config: { pattern: string; script: string }): ResponseObjectPromise;

del(zone_id: string, id: string): ResponseObjectPromise;
}
Expand Down Expand Up @@ -400,7 +400,7 @@ declare namespace Cloudflare {
description?: string;
ref?: string;
};

type FirewallRule = {
id: string;
pasuse: boolean;
Expand All @@ -425,12 +425,79 @@ declare namespace Cloudflare {

read(zone_id: string, id: string): ResponseObjectPromise;

edit(zone_id: string, id: string, config: {value: string}): ResponseObjectPromise;
edit(zone_id: string, id: string, config: { value: string }): ResponseObjectPromise;

add(zone_id: string,rules:FirewallBody[]): ResponseObjectPromise;
add(zone_id: string, rules: FirewallBody[]): ResponseObjectPromise;

del(zone_id: string, id: string): ResponseCloudflareObject<FirewallRule>;
}
type Ruleset = {
description: string;
id: string;
kind: RulesetKind;
last_updated: string;
name: string;
phase: RulesetPhase;
version: string;
};
type RulesetKind = 'managed' | 'user' | 'zone' | 'custom';
type RulesetPhase = 'ddos_l4' |
'ddos_l7' |
'http_config_settings' |
'http_custom_errors' |
'http_log_custom_fields' |
'http_ratelimit' |
'http_request_cache_settings' |
'http_request_dynamic_redirect' |
'http_request_firewall_custom' |
'http_request_firewall_managed' |
'http_request_late_transform' |
'http_request_origin' |
'http_request_redirect' |
'http_request_sanitize' |
'http_request_sbfm' |
'http_request_select_configuration' |
'http_request_transform' |
'http_response_compression' |
'http_response_firewall_managed' |
'http_response_headers_transform' |
'magic_transit' |
'magic_transit_ids_managed' |
'magic_transit_managed';
type RulesetBody = {
description: string;
kind: RulesetKind;
name: string;
phase: RulesetPhase;
rules: {
action: 'allow' | 'block' | 'log' | 'skip';
action_parameters?: {
response?: {
status_code?: number;
content_type?: string;
body?: string;
}
description?: string;
enabled?: boolean;
expression: string;
loggings?: {
enabled: boolean;
}[];
ref?: string;
};
};
}
export interface Rulesets {
browse(zone_id: string): ResponseCloudflareObject<Ruleset>;

read(zone_id: string, ruleId: string): ResponseCloudflareObject<Ruleset>;

edit(zone_id: string, ruleId: string, rules: RulesetBody): ResponseObjectPromise;

add(zone_id: string, ruleId: string, rules: RulesetBody): ResponseObjectPromise;

del(zone_id: string, id: string): ResponseObjectPromise;
}
}

declare class Cloudflare {
Expand Down
3 changes: 2 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const EnterpriseZoneWorkersScripts = require('./lib/resources/EnterpriseZoneWork
const EnterpriseZoneWorkersRoutes = require('./lib/resources/EnterpriseZoneWorkersRoutes');
const EnterpriseZoneWorkersKVNamespaces = require('./lib/resources/EnterpriseZoneWorkersKVNamespaces');
const EnterpriseZoneWorkersKV = require('./lib/resources/EnterpriseZoneWorkersKV');

const Rulesets = require('./lib/resources/Rulesets');
class Cloudflare {
constructor(auth) {
const opts = {
Expand Down Expand Up @@ -52,6 +52,7 @@ class Cloudflare {
this.user = new User(this.client);
this.userTokens = new UserTokens(this.client);
this.zoneCustomHostNames = new ZoneCustomHostNames(this.client);
this.rulesets = new Rulesets(this.client);
}
}

Expand Down
106 changes: 106 additions & 0 deletions lib/resources/Rulesets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
'use strict';

const Resource = require('../Resource');

class Rulesets extends Resource {
constructor(apiClient) {
super(apiClient);
this.path = 'zones/:zoneId/rulesets';
this.hasBrokenPatch = true;
}

/**
* Allows for listing all the zones.
*
* @param {string} zoneId - The zone ID.
* @returns {Promise<Object>} The zone browse response object.
*/
async browse(zoneId) {
return this.apiClient.request(
{
method: 'GET',
uriPath: 'zones/:zoneId/rulesets',
params: {zoneId},
},
this
);
}

/**
* Allows for retrieving a specific zone.
*
* @param {string} zoneId
* @param {string} ruleId - The modified zone object.
* @returns {Promise<Object>} The zone response object.
*/
async read(zoneId, ruleId) {
return this.apiClient.request(
{
method: 'GET',
uriPath: 'zones/:zoneId/rulesets/:ruleId',
params: {zoneId, ruleId},
},
this
);
}

/**
* Allows for modifying a specific zone.
*
* @param {string} id - The zone ID.
* @param {string} ruleId - The rule ID.
* @param {Object} rule - The modified rule object.
* @returns {Promise<Object>} The zone response object.
*/
async edit(id, ruleId, rule) {
return this.apiClient.request(
{
method: 'PUT',
uriPath: 'zones/:id/rulesets/:ruleId',
data: rule,
params: {id, ruleId},
},
this
);
}

/**
* Allows for creating a new zone.
*
* @param {string} zoneId
* @param {string} ruleId
* @param {Object} zone - The new zone object.
* @returns {Promise<Object>} The zone response object.
*/
async add(zoneId, ruleId, rules) {
return this.apiClient.request(
{
method: 'POST',
uriPath: 'zones/:zoneId/rulesets/:ruleId',
data: rules,
params: {zoneId, ruleId},
},
this
);
}

/**
* Allows for removing a new zone.
*
* @param {string} zoneId - The zone ID to delete.
* @param {string} ruleId
* @returns {Promise<Object>} The zone response object.
*/
async del(zoneId, ruleId) {
return this.apiClient.request(
{
method: 'DELETE',
uriPath: 'zones/:zoneId/rulesets/:ruleId',
params: {zoneId, ruleId},
},
this
);
}
}

module.exports = Rulesets;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "api_cloudflare_client",
"version": "3.2.11",
"version": "3.2.12",
"publisher": "ziut3k-dev",
"description": "CloudFlare API client",
"author": "Krzysztof Włodarski <wlodarski.dvy@gmail.com>",
Expand Down

0 comments on commit f718e39

Please sign in to comment.