Skip to content

Commit

Permalink
Merge pull request #53 from mrtristan/feature/firewall_fix
Browse files Browse the repository at this point in the history
Feature/firewall fix
  • Loading branch information
zingz0r authored May 4, 2022
2 parents 0b39c98 + 9129317 commit 0419018
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 15 deletions.
8 changes: 4 additions & 4 deletions CloudFlare.Client/Api/Zones/FirewallRules/FirewallRule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class FirewallRule
/// Filter
/// </summary>
[JsonProperty("filter")]
public IEnumerable<Filter> Filter { get; set; }
public Filter Filter { get; set; }

/// <summary>
/// List of products to bypass for a request when the bypass action is used.
Expand All @@ -39,7 +39,7 @@ public class FirewallRule
/// The priority of the rule to allow control of processing order. A lower number indicates high priority. If not provided, any rules with a priority will be sequenced before those without.
/// </summary>
[JsonProperty("priority")]
public string Priority { get; set; }
public int Priority { get; set; }

/// <summary>
/// Whether this firewall rule is currently paused.
Expand All @@ -63,12 +63,12 @@ public class FirewallRule
/// Created On
/// </summary>
[JsonProperty("created_on")]
public DateTime CreatedOn { get; set; }
public DateTime? CreatedOn { get; set; }

/// <summary>
/// Modified on
/// </summary>
[JsonProperty("modified_on")]
public DateTime ModifiedOn { get; set; }
public DateTime? ModifiedOn { get; set; }
}
}
24 changes: 18 additions & 6 deletions CloudFlare.Client/Client/Zones/FirewallRules.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using CloudFlare.Client.Api.Display;
using CloudFlare.Client.Api.Parameters;
using CloudFlare.Client.Api.Parameters.Endpoints;
using CloudFlare.Client.Api.Result;
using CloudFlare.Client.Api.Zones.FirewallRules;
using CloudFlare.Client.Contexts;
using CloudFlare.Client.Helpers;

namespace CloudFlare.Client.Client.Zones
{
Expand All @@ -21,28 +24,37 @@ public FirewallRules(IConnection connection)
}

/// <inheritdoc />
public async Task<CloudFlareResult<IEnumerable<FirewallRule>>> GetFirewallRulesAsync(string zoneId, CancellationToken cancellationToken = default)
public async Task<CloudFlareResult<IReadOnlyList<FirewallRule>>> GetAsync(string zoneId, UnOrderableDisplayOptions displayOptions = null, CancellationToken cancellationToken = default)
{
var builder = new ParameterBuilderHelper()
.InsertValue(Filtering.Page, displayOptions?.Page)
.InsertValue(Filtering.PerPage, displayOptions?.PerPage);

var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{ZoneEndpoints.FirewallRules}";
return await Connection.GetAsync<IEnumerable<FirewallRule>>(requestUri, cancellationToken).ConfigureAwait(false);
if (builder.ParameterCollection.HasKeys())
{
requestUri = $"{requestUri}?{builder.ParameterCollection}";
}

return await Connection.GetAsync<IReadOnlyList<FirewallRule>>(requestUri, cancellationToken).ConfigureAwait(false);
}

/// <inheritdoc />
public async Task<CloudFlareResult<FirewallRule>> GetFirewallRuleAsync(string zoneId, string id, CancellationToken cancellationToken = default)
public async Task<CloudFlareResult<IReadOnlyList<FirewallRule>>> GetAsync(string zoneId, string id, CancellationToken cancellationToken = default)
{
var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{ZoneEndpoints.FirewallRules}?id={id}";
return await Connection.GetAsync<FirewallRule>(requestUri, cancellationToken).ConfigureAwait(false);
return await Connection.GetAsync<IReadOnlyList<FirewallRule>>(requestUri, cancellationToken).ConfigureAwait(false);
}

/// <inheritdoc />
public async Task<CloudFlareResult<IEnumerable<FirewallRule>>> CreateFirewallRulesAsync(string zoneId, IEnumerable<FirewallRule> rules, CancellationToken cancellationToken = default)
public async Task<CloudFlareResult<IEnumerable<FirewallRule>>> CreateAsync(string zoneId, IEnumerable<FirewallRule> rules, CancellationToken cancellationToken = default)
{
var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{ZoneEndpoints.FirewallRules}";
return await Connection.PostAsync(requestUri, rules, cancellationToken).ConfigureAwait(false);
}

/// <inheritdoc />
public async Task<CloudFlareResult<FirewallRule>> DeleteFirewallRuleAsync(string zoneId, string ruleId, CancellationToken cancellationToken = default)
public async Task<CloudFlareResult<FirewallRule>> DeleteAsync(string zoneId, string ruleId, CancellationToken cancellationToken = default)
{
var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{ZoneEndpoints.FirewallRules}/{ruleId}";
return await Connection.DeleteAsync<FirewallRule>(requestUri, cancellationToken).ConfigureAwait(false);
Expand Down
13 changes: 8 additions & 5 deletions CloudFlare.Client/Client/Zones/IFirewallRules.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using CloudFlare.Client.Api.Display;
using CloudFlare.Client.Api.Result;
using CloudFlare.Client.Api.Zones.FirewallRules;

Expand All @@ -15,9 +16,10 @@ public interface IFirewallRules
/// Get Firewall Rules
/// </summary>
/// <param name="zoneId">Zone identifier</param>
/// <param name="displayOptions">Display options</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Firewall rules</returns>
Task<CloudFlareResult<IEnumerable<FirewallRule>>> GetFirewallRulesAsync(string zoneId, CancellationToken cancellationToken = default);
Task<CloudFlareResult<IReadOnlyList<FirewallRule>>> GetAsync(string zoneId, UnOrderableDisplayOptions displayOptions = null, CancellationToken cancellationToken = default);

/// <summary>
/// Get Firewall Rule By Id
Expand All @@ -26,7 +28,7 @@ public interface IFirewallRules
/// /// <param name="ruleId">Firewall rule identifier</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Firewall rule</returns>
Task<CloudFlareResult<FirewallRule>> GetFirewallRuleAsync(string zoneId, string ruleId, CancellationToken cancellationToken = default);
Task<CloudFlareResult<IReadOnlyList<FirewallRule>>> GetAsync(string zoneId, string ruleId, CancellationToken cancellationToken = default);

/// <summary>
/// Create Firewall Rules
Expand All @@ -35,15 +37,16 @@ public interface IFirewallRules
/// /// <param name="rules">List of firewall rules</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Created firewall rules</returns>
Task<CloudFlareResult<IEnumerable<FirewallRule>>> CreateFirewallRulesAsync(string zoneId, IEnumerable<FirewallRule> rules, CancellationToken cancellationToken = default);
Task<CloudFlareResult<IEnumerable<FirewallRule>>> CreateAsync(string zoneId, IEnumerable<FirewallRule> rules, CancellationToken cancellationToken = default);

/// <summary>
/// Delete Firewall Rule By Id
/// Delete Firewall Rule By Id.
/// Note: DELETE does not delete any filter related to the firewall rule. To delete the filter, it’s necessary to call the /filters API.
/// </summary>
/// <param name="zoneId">Zone identifier</param>
/// <param name="ruleId">Firewall rule identifier</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Deleted firewall rule</returns>
Task<CloudFlareResult<FirewallRule>> DeleteFirewallRuleAsync(string zoneId, string ruleId, CancellationToken cancellationToken = default);
Task<CloudFlareResult<FirewallRule>> DeleteAsync(string zoneId, string ruleId, CancellationToken cancellationToken = default);
}
}

0 comments on commit 0419018

Please sign in to comment.