Reorganize, shared entities from TypeScript SDK
https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
|
||||
namespace Cloudflare.Core.Tests.Auth
|
||||
{
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using System.Net.Http;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
|
||||
namespace Cloudflare.Core.Tests.Auth
|
||||
{
|
||||
|
||||
@@ -6,17 +6,18 @@
|
||||
<IsPackable>false</IsPackable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
<CollectCoverage>true</CollectCoverage>
|
||||
<CoverletOutputFormat>Cobertura</CoverletOutputFormat>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
|
||||
<PackageReference Include="coverlet.msbuild" Version="6.0.4">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||
<PackageReference Include="Moq" Version="4.20.72" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.9.1" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.9.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Reflection;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using Moq;
|
||||
using Moq.Protected;
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
@@ -11,7 +9,6 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using Moq;
|
||||
using Moq.Protected;
|
||||
|
||||
@@ -110,7 +107,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
@@ -191,7 +187,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
@@ -11,7 +9,6 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using Moq;
|
||||
using Moq.Protected;
|
||||
|
||||
@@ -110,7 +107,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
@@ -212,7 +208,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
@@ -11,7 +9,6 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using Moq;
|
||||
using Moq.Protected;
|
||||
|
||||
@@ -118,7 +115,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
@@ -171,7 +167,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
@@ -252,7 +247,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
@@ -11,7 +9,6 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using Moq;
|
||||
using Moq.Protected;
|
||||
|
||||
@@ -104,7 +101,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
_httpHandlerMock.Responses.Enqueue(new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent(@"{""success"": true, ""errors"": [], ""messages"": [], ""result"": { ""string"": ""some-string"", ""integer"": 123 }, ""timing"": {""end_time"": ""2014-03-01T12:20:01Z"", ""process_time"": 1, ""start_time"": ""2014-03-01T12:20:00Z""}}", Encoding.UTF8, MediaTypeNames.Application.Json),
|
||||
Content = new StringContent(@"{""success"": true, ""errors"": [], ""messages"": [], ""result"": { ""string"": ""some-string"", ""integer"": 123 }}", Encoding.UTF8, MediaTypeNames.Application.Json),
|
||||
});
|
||||
|
||||
var client = GetClient();
|
||||
@@ -126,11 +123,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.AreEqual("some-string", response.Result.Str);
|
||||
Assert.AreEqual(123, response.Result.Int);
|
||||
|
||||
Assert.IsNotNull(response.Timing);
|
||||
Assert.AreEqual("01.03.2014 12:20:00", response.Timing.StartTime?.ToString("dd.MM.yyyy HH:mm:ss"));
|
||||
Assert.AreEqual("01.03.2014 12:20:01", response.Timing.EndTime?.ToString("dd.MM.yyyy HH:mm:ss"));
|
||||
Assert.AreEqual(1, response.Timing.ProcessTime);
|
||||
|
||||
Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);
|
||||
|
||||
var callback = _httpHandlerMock.Callbacks.First();
|
||||
@@ -175,7 +167,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
@@ -227,7 +218,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
@@ -305,7 +295,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
@@ -383,7 +372,6 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
|
||||
Assert.IsNotNull(response.Errors);
|
||||
Assert.IsNotNull(response.Messages);
|
||||
Assert.IsNull(response.ResultInfo);
|
||||
Assert.IsNull(response.Timing);
|
||||
|
||||
Assert.AreEqual(0, response.Errors.Count);
|
||||
Assert.AreEqual(0, response.Messages.Count);
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
@@ -11,7 +9,6 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AMWD.Net.Api.Cloudflare;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
using Moq;
|
||||
using Moq.Protected;
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Cloudflare.Tests.Extensions
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOutOfRangeExceptionForValidateId()
|
||||
{
|
||||
// Arrange
|
||||
@@ -43,7 +43,7 @@ namespace Cloudflare.Tests.Extensions
|
||||
// Act
|
||||
id.ValidateCloudflareId();
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Assert - ArgumentException
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -54,7 +54,7 @@ namespace Cloudflare.Tests.Extensions
|
||||
public void ShouldThrowArgumentExceptionForValidateId(string id)
|
||||
{
|
||||
// Arrange
|
||||
|
||||
|
||||
// Act
|
||||
id.ValidateCloudflareId();
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace Cloudflare.Tests.Extensions
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOutOfRangeExceptionForValidateName()
|
||||
{
|
||||
// Arrange
|
||||
@@ -98,7 +98,7 @@ namespace Cloudflare.Tests.Extensions
|
||||
// Act
|
||||
name.ValidateCloudflareName();
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Assert - ArgumentException
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -142,5 +142,31 @@ namespace Cloudflare.Tests.Extensions
|
||||
|
||||
// Assert - ArgumentException
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(null)]
|
||||
[DataRow("SomeExampleString")]
|
||||
public void ShouldValidateLength(string str)
|
||||
{
|
||||
// Arrange
|
||||
|
||||
// Act
|
||||
str.ValidateLength(30, nameof(str));
|
||||
|
||||
// Assert - no exception thrown
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForValidateLength()
|
||||
{
|
||||
// Arrange
|
||||
string str = "SomeExampleString";
|
||||
|
||||
// Act
|
||||
str.ValidateLength(10, nameof(str));
|
||||
|
||||
// Assert - ArgumentException
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare.Auth
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Implements the interface to authenticate using an API key and email address.
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare.Auth
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Implements the interface to authenticate using an API token.
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AMWD.Net.Api.Cloudflare
|
||||
/// <summary>
|
||||
/// Gets or sets the default timeout for the API.
|
||||
/// </summary>
|
||||
public virtual TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(60);
|
||||
public virtual TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(100);
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the maximum number of retries for the API.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0;net6.0</TargetFrameworks>
|
||||
|
||||
<NrtTagMatch>v[0-9]*</NrtTagMatch>
|
||||
<NrtRevisionFormat>{semvertag:main}{!:-dev}</NrtRevisionFormat>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
@@ -10,15 +10,11 @@
|
||||
<CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/AM-WD/cloudflare-api.git</RepositoryUrl>
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
|
||||
<PackageIcon>package-icon.png</PackageIcon>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
<PackageTags>cloudflare api</PackageTags>
|
||||
<PackageProjectUrl>https://developers.cloudflare.com/api</PackageProjectUrl>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
|
||||
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
@@ -33,7 +29,8 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Only build package for tagged releases or Debug on CI (only dev NuGet feed) -->
|
||||
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(CI_COMMIT_TAG)', '^v[0-9.]+')) or ('$(Configuration)' == 'Debug' and '$(GITLAB_CI)' == 'true')">
|
||||
<!--<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(CI_COMMIT_TAG)', '^v[0-9.]+')) or ('$(Configuration)' == 'Debug' and '$(GITLAB_CI)' == 'true')">-->
|
||||
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(CI_COMMIT_TAG)', '^v[0-9.]+')) or ('$(Configuration)' == 'Debug')">
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -51,6 +48,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(SolutionDir)/package-icon.png" Pack="true" PackagePath="/" />
|
||||
<None Include="$(SolutionDir)/LICENSE.txt" Pack="true" PackagePath="/" />
|
||||
<None Include="README.md" Pack="true" PackagePath="/" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
@@ -10,7 +8,6 @@ using System.Security.Authentication;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AMWD.Net.Api.Cloudflare.Auth;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
|
||||
37
Cloudflare/Enums/CertificateCA.cs
Normal file
37
Cloudflare/Enums/CertificateCA.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// The Certificate Authority that will issue the certificate.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L110">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum CertificateCA
|
||||
{
|
||||
/// <summary>
|
||||
/// DigiCert.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "digicert")]
|
||||
DigiCert = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Google.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "google")]
|
||||
Google = 2,
|
||||
|
||||
/// <summary>
|
||||
/// Let's Encrypt.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "lets_encrypt")]
|
||||
LetsEncrypt = 3,
|
||||
|
||||
/// <summary>
|
||||
/// SSL.com.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "ssl_com")]
|
||||
SslCom = 4
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Whether to match all search requirements or at least one (any).
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum FilterMatchType
|
||||
{
|
||||
/// <summary>
|
||||
/// Match all search requirements.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "all")]
|
||||
All = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Match at least one search requirement.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "any")]
|
||||
Any = 2,
|
||||
}
|
||||
}
|
||||
37
Cloudflare/Enums/RenewFrequency.cs
Normal file
37
Cloudflare/Enums/RenewFrequency.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A frequency at which to renew subscriptions, etc.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L730">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum RenewFrequency
|
||||
{
|
||||
/// <summary>
|
||||
/// Weekly
|
||||
/// </summary>
|
||||
[EnumMember(Value = "weekly")]
|
||||
Weekly = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Monthly
|
||||
/// </summary>
|
||||
[EnumMember(Value = "monthly")]
|
||||
Monthly = 2,
|
||||
|
||||
/// <summary>
|
||||
/// Quarterly
|
||||
/// </summary>
|
||||
[EnumMember(Value = "quarterly")]
|
||||
Quarterly = 3,
|
||||
|
||||
/// <summary>
|
||||
/// Yearly
|
||||
/// </summary>
|
||||
[EnumMember(Value = "yearly")]
|
||||
Yearly = 4
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// The direction to sort the entity.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L698">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum SortDirection
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
@@ -25,15 +24,10 @@ namespace AMWD.Net.Api.Cloudflare
|
||||
if (string.IsNullOrWhiteSpace(id))
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
|
||||
if (id.Length > 32)
|
||||
throw new ArgumentOutOfRangeException(nameof(id));
|
||||
id.ValidateLength(32, nameof(id));
|
||||
|
||||
if (!_idCheckRegex.IsMatch(id))
|
||||
throw new ArgumentException("Invalid Cloudflare ID", nameof(id));
|
||||
|
||||
// TODO: It seems like Cloudflare IDs are GUIDs - should be verified.
|
||||
//if (!Guid.TryParse(id, out _))
|
||||
// throw new ArgumentException("Invalid Cloudflare ID", nameof(id));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -50,8 +44,7 @@ namespace AMWD.Net.Api.Cloudflare
|
||||
if (string.IsNullOrWhiteSpace(name))
|
||||
throw new ArgumentNullException(nameof(name));
|
||||
|
||||
if (name.Length > 253)
|
||||
throw new ArgumentOutOfRangeException(nameof(name));
|
||||
name.ValidateLength(253, nameof(name));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -68,5 +61,18 @@ namespace AMWD.Net.Api.Cloudflare
|
||||
if (!_emailCheckRegex.IsMatch(emailAddress))
|
||||
throw new ArgumentException("Invalid email address", nameof(emailAddress));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate the length of a string.
|
||||
/// </summary>
|
||||
/// <param name="str">The string to check.</param>
|
||||
/// <param name="length">The max. length.</param>
|
||||
/// <param name="paramName">The name of the parameter to check.</param>
|
||||
/// <exception cref="ArgumentException">The <paramref name="str"/> is longer than <paramref name="length"/>.</exception>
|
||||
public static void ValidateLength(this string str, int length, string paramName)
|
||||
{
|
||||
if (str?.Length > length)
|
||||
throw new ArgumentException($"The value of '{paramName}' is too long. Only {length} characters are allowed.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System.Net.Http;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare.Auth
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the interface to add authentication information.
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents filter options defined via query parameters.
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Base implementation of an account.
|
||||
/// </summary>
|
||||
public class AccountBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Identifier
|
||||
/// </summary>
|
||||
// <= 32 characters
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The name of the account.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
}
|
||||
182
Cloudflare/Models/AuditLog.cs
Normal file
182
Cloudflare/Models/AuditLog.cs
Normal file
@@ -0,0 +1,182 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// An audit log entry.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L10">Source</see>
|
||||
/// </summary>
|
||||
public class AuditLog
|
||||
{
|
||||
/// <summary>
|
||||
/// A string that uniquely identifies the audit log.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The action that was performed.
|
||||
/// </summary>
|
||||
[JsonProperty("action")]
|
||||
public AuditLogAction? Action { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The actor that performed the action.
|
||||
/// </summary>
|
||||
[JsonProperty("actor")]
|
||||
public AuditLogActor? Actor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The source of the event.
|
||||
/// </summary>
|
||||
[JsonProperty("interface")]
|
||||
public string? Interface { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// An object which can lend more context to the action being logged.
|
||||
/// This is a flexible value and varies between different actions.
|
||||
/// </summary>
|
||||
[JsonProperty("metadata")]
|
||||
public object? MetaData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The new value of the resource that was modified.
|
||||
/// </summary>
|
||||
[JsonProperty("newValue")]
|
||||
public string? NewValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The value of the resource before it was modified.
|
||||
/// </summary>
|
||||
[JsonProperty("oldValue")]
|
||||
public string? OldValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The owner of the resource that was modified.
|
||||
/// </summary>
|
||||
[JsonProperty("owner")]
|
||||
public AuditLogOwner? Owner { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The resource that was modified.
|
||||
/// </summary>
|
||||
[JsonProperty("resource")]
|
||||
public AuditLogResource? Resource { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A UTC RFC3339 timestamp that specifies when the action being logged occured.
|
||||
/// </summary>
|
||||
[JsonProperty("when")]
|
||||
public DateTime? When { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The action that was performed.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L52">Soruce</see>
|
||||
/// </summary>
|
||||
public class AuditLogAction
|
||||
{
|
||||
/// <summary>
|
||||
/// A boolean that indicates if the action attempted was successful.
|
||||
/// </summary>
|
||||
[JsonProperty("result")]
|
||||
public bool? Result { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A short string that describes the action that was performed.
|
||||
/// </summary>
|
||||
[JsonProperty("type")]
|
||||
public string? Type { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The actor that performed the action.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L64">Source</see>
|
||||
/// </summary>
|
||||
public class AuditLogActor
|
||||
{
|
||||
/// <summary>
|
||||
/// The ID of the actor that performed the action.
|
||||
/// If a user performed the action, this will be the user's ID.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The email of the user that performed the action.
|
||||
/// </summary>
|
||||
[JsonProperty("email")]
|
||||
public string? Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The IP address of the request that performed the action.
|
||||
/// </summary>
|
||||
[JsonProperty("ip")]
|
||||
public string? IpAddress { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The type of actor, whether a User, Cloudflare Admin, or an Automated System.
|
||||
/// </summary>
|
||||
[JsonProperty("type")]
|
||||
public AuditLogActorType? Type { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The type of actor.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L84">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum AuditLogActorType
|
||||
{
|
||||
/// <summary>
|
||||
/// User interaction.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "user")]
|
||||
User = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Cloudflare admin interaction.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "admin")]
|
||||
Admin = 2,
|
||||
|
||||
/// <summary>
|
||||
/// Cloudflare automated system interaction.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "Cloudflare")]
|
||||
Cloudflare = 3
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The owner of the resource that was modified.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L87">Source</see>
|
||||
/// </summary>
|
||||
public class AuditLogOwner
|
||||
{
|
||||
/// <summary>
|
||||
/// Identifier.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The resource that was modified.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L94">Source</see>
|
||||
/// </summary>
|
||||
public class AuditLogResource
|
||||
{
|
||||
/// <summary>
|
||||
/// An identifier for the resource that was affected by the action.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A short string that describes the resource that was affected by the action.
|
||||
/// </summary>
|
||||
[JsonProperty("type")]
|
||||
public string? Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// The base Cloudflare response.
|
||||
/// Derived from <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L616">Source: Result</see>
|
||||
/// </summary>
|
||||
public class CloudflareResponse
|
||||
{
|
||||
@@ -24,12 +23,6 @@ namespace AMWD.Net.Api.Cloudflare
|
||||
/// </summary>
|
||||
[JsonProperty("success")]
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Information about the processing time of a request.
|
||||
/// </summary>
|
||||
[JsonProperty("timing")]
|
||||
public RecordProcessTiming? Timing { get; set; }
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
229
Cloudflare/Models/CloudflareTunnel.cs
Normal file
229
Cloudflare/Models/CloudflareTunnel.cs
Normal file
@@ -0,0 +1,229 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A Cloudflare Tunnel that connects your origin to Cloudflare's edge.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L132">Source</see>
|
||||
/// </summary>
|
||||
public class CloudflareTunnel
|
||||
{
|
||||
/// <summary>
|
||||
/// UUID of the tunnel.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Cloudflare account ID.
|
||||
/// </summary>
|
||||
[JsonProperty("account_tag")]
|
||||
public string? AccountTag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Active connections.
|
||||
/// </summary>
|
||||
[JsonProperty("connections")]
|
||||
[Obsolete("This field will start returning an empty array. To fetch the connections of a given tunnel, please use the dedicated endpoint '/accounts/{account_id}/{tunnel_type}/{tunnel_id}/connections'.")]
|
||||
public IReadOnlyCollection<CloudflareTunnelConnection>? Connections { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp of when the tunnel established at least one connection to Cloudflare's edge.
|
||||
/// If <see langword="null"/>, the tunnel is inactive.
|
||||
/// </summary>
|
||||
[JsonProperty("conns_active_at")]
|
||||
public DateTime? ConnectionsActiveAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp of when the tunnel became inactive (no connections to Cloudflare's edge).
|
||||
/// If <see langword="null"/>, the tunnel is active.
|
||||
/// </summary>
|
||||
[JsonProperty("conns_inactive_at")]
|
||||
public DateTime? ConnectionsInactiveAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp of when the resource was created.
|
||||
/// </summary>
|
||||
[JsonProperty("created_at")]
|
||||
public DateTime? CreatedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp of when the resource was deleted.
|
||||
/// If <see langword="null"/>, the resource has not been deleted.
|
||||
/// </summary>
|
||||
[JsonProperty("deleted_at")]
|
||||
public DateTime? DeletedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Metadata associated with the tunnel.
|
||||
/// </summary>
|
||||
[JsonProperty("metadata")]
|
||||
public object? MetaData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A user-friendly name for a tunnel.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// If <see langword="true"/>, the tunnel can be configured remotely from the Zero Trust dashboard.
|
||||
/// If <see langword="false"/>, the tunnel must be configured locally on the origin machine.
|
||||
/// </summary>
|
||||
[JsonProperty("remote_config")]
|
||||
public bool? RemoteConfiguration { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The status of the tunnel.
|
||||
/// </summary>
|
||||
[JsonProperty("status")]
|
||||
public CloudflareTunnelStatus? Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The type of tunnel.
|
||||
/// </summary>
|
||||
[JsonProperty("tun_type")]
|
||||
public CloudflareTunnelType? TunType { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A connection to Cloudflare's edge.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L204">Source</see>
|
||||
/// </summary>
|
||||
public class CloudflareTunnelConnection
|
||||
{
|
||||
/// <summary>
|
||||
/// UUID of the Cloudflare Tunnel connection.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// UUID of the Cloudflare Tunnel connector.
|
||||
/// </summary>
|
||||
[JsonProperty("client_id")]
|
||||
public string? ClientId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The cloudflared version used to establish this connection.
|
||||
/// </summary>
|
||||
[JsonProperty("client_version")]
|
||||
public string? ClientVersion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The Cloudflare data center used for this connection.
|
||||
/// </summary>
|
||||
[JsonProperty("colo_name")]
|
||||
public string? ColocationName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Cloudflare continues to track connections for several minutes after they disconnect.
|
||||
/// This is an optimization to improve latency and reliability of reconnecting.
|
||||
/// <br/>
|
||||
/// If <see langword="true"/>, the connection has disconnected but is still being tracked.
|
||||
/// If <see langword="false"/>, the connection is actively serving traffic.
|
||||
/// </summary>
|
||||
[JsonProperty("is_pending_reconnect")]
|
||||
public bool? IsPendingReconnect { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp of when the connection was established.
|
||||
/// </summary>
|
||||
[JsonProperty("opened_at")]
|
||||
public DateTime? OpenedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The public IP address of the host running cloudflared.
|
||||
/// </summary>
|
||||
[JsonProperty("origin_ip")]
|
||||
public string? OriginIp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// UUID of the Cloudflare Tunnel connection.
|
||||
/// </summary>
|
||||
[JsonProperty("uuid")]
|
||||
public string? UUID { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The status of the tunnel.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L195">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum CloudflareTunnelStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// The tunnel has never been run.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "inactive")]
|
||||
Inactive = 1,
|
||||
|
||||
/// <summary>
|
||||
/// The tunnel is active and able to serve traffic but in an unhealthy state.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "degraded")]
|
||||
Degraded = 2,
|
||||
|
||||
/// <summary>
|
||||
/// The tunnel is active and able to serve traffic.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "healthy")]
|
||||
Healthy = 3,
|
||||
|
||||
/// <summary>
|
||||
/// The tunnel can not serve traffic as it has no connections to the Cloudflare Edge.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "down")]
|
||||
Down = 4
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The type of tunnel.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L200">Source</see>
|
||||
/// </summary>
|
||||
public enum CloudflareTunnelType
|
||||
{
|
||||
/// <summary>
|
||||
/// Cloudflared.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "cfd_tunnel")]
|
||||
Cloudflared = 1,
|
||||
|
||||
/// <summary>
|
||||
/// WARP Connector.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "warp_connector")]
|
||||
WarpConnector = 2,
|
||||
|
||||
/// <summary>
|
||||
/// WARP.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "warp")]
|
||||
Warp = 3,
|
||||
|
||||
/// <summary>
|
||||
/// Magic WAN.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "magic")]
|
||||
MagicWAN = 4,
|
||||
|
||||
/// <summary>
|
||||
/// IPsec.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "ip_sec")]
|
||||
IpSec = 5,
|
||||
|
||||
/// <summary>
|
||||
/// GRE.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "gre")]
|
||||
Gre = 6,
|
||||
|
||||
/// <summary>
|
||||
/// CNI.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "cni")]
|
||||
Cni = 7
|
||||
}
|
||||
}
|
||||
46
Cloudflare/Models/ErrorData.cs
Normal file
46
Cloudflare/Models/ErrorData.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// An error message.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L250">Source</see>
|
||||
/// </summary>
|
||||
public class ErrorData
|
||||
{
|
||||
/// <summary>
|
||||
/// The error code.
|
||||
/// </summary>
|
||||
[JsonProperty("code")]
|
||||
public int? Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A link to documentation about the error.
|
||||
/// </summary>
|
||||
[JsonProperty("documentation_url")]
|
||||
public string? DocumentationUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The error message.
|
||||
/// </summary>
|
||||
[JsonProperty("message")]
|
||||
public string? Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The source of the error.
|
||||
/// </summary>
|
||||
[JsonProperty("source")]
|
||||
public ErrorDataSource? Source { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The source of the error.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L261">Source</see>
|
||||
/// </summary>
|
||||
public class ErrorDataSource
|
||||
{
|
||||
/// <summary>
|
||||
/// The pointer to the source of the error.
|
||||
/// </summary>
|
||||
[JsonProperty("pointer")]
|
||||
public string? Pointer { get; set; }
|
||||
}
|
||||
}
|
||||
15
Cloudflare/Models/Identifier.cs
Normal file
15
Cloudflare/Models/Identifier.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A Cloudflare identifier.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L266">Source</see>
|
||||
/// </summary>
|
||||
public class Identifier
|
||||
{
|
||||
/// <summary>
|
||||
/// Identifier.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
}
|
||||
}
|
||||
21
Cloudflare/Models/LoadBalancerPreview.cs
Normal file
21
Cloudflare/Models/LoadBalancerPreview.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A load balancer preview.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L273">Source</see>
|
||||
/// </summary>
|
||||
public class LoadBalancerPreview
|
||||
{
|
||||
/// <summary>
|
||||
/// Monitored pool IDs mapped to their respective names.
|
||||
/// </summary>
|
||||
[JsonProperty("pools")]
|
||||
public IDictionary<string, string>? Pools { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Preview ID.
|
||||
/// </summary>
|
||||
[JsonProperty("preview_id")]
|
||||
public string? PreviewId { get; set; }
|
||||
}
|
||||
}
|
||||
321
Cloudflare/Models/Member.cs
Normal file
321
Cloudflare/Models/Member.cs
Normal file
@@ -0,0 +1,321 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A Cloudflare member.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L282">Source</see>
|
||||
/// </summary>
|
||||
public class Member
|
||||
{
|
||||
/// <summary>
|
||||
/// Membership identifier tag.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Access policy for the membership.
|
||||
/// </summary>
|
||||
[JsonProperty("policies")]
|
||||
public IReadOnlyCollection<MemberPolicy>? Policies { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Roles assigned to this Member.
|
||||
/// </summary>
|
||||
[JsonProperty("roles")]
|
||||
public IReadOnlyCollection<Role>? Roles { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A member's status in the account.
|
||||
/// </summary>
|
||||
[JsonProperty("status")]
|
||||
public MemberStatus? Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Details of the user associated to the membership.
|
||||
/// </summary>
|
||||
[JsonProperty("user")]
|
||||
public MemberUser? User { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A member's access policy.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L310">Source</see>
|
||||
/// </summary>
|
||||
public class MemberPolicy
|
||||
{
|
||||
/// <summary>
|
||||
/// Policy identifier.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Allow or deny operations against the resources.
|
||||
/// </summary>
|
||||
[JsonProperty("access")]
|
||||
public MemberPolicyAccess? Access { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A set of permission groups that are specified to the policy.
|
||||
/// </summary>
|
||||
[JsonProperty("permission_groups")]
|
||||
public IReadOnlyCollection<MemberPolicyPermissionGroup>? PermissionGroups { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A list of resource groups that the policy applies to.
|
||||
/// </summary>
|
||||
[JsonProperty("resource_groups")]
|
||||
public IReadOnlyCollection<MemberPolicyResourceGroup>? ResourceGroups { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A member's status.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L301">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum MemberStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// The member has accepted the invitation.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "accepted")]
|
||||
Accepted = 1,
|
||||
|
||||
/// <summary>
|
||||
/// The member has not yet accepted the invitation.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "pending")]
|
||||
Pending = 2
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A member's policy access.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L319">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum MemberPolicyAccess
|
||||
{
|
||||
/// <summary>
|
||||
/// Allow operations against the resource.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "allow")]
|
||||
Allow = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Deny operations against the resource.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "deny")]
|
||||
Deny = 2
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A member's permission group.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L337">Source</see>
|
||||
/// </summary>
|
||||
public class MemberPolicyPermissionGroup
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MemberPolicyPermissionGroup"/> class.
|
||||
/// </summary>
|
||||
/// <param name="id">Identifier of the permission group.</param>
|
||||
public MemberPolicyPermissionGroup(string id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identifier of the permission group.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Attributes associated to the permission group.
|
||||
/// </summary>
|
||||
[JsonProperty("meta")]
|
||||
public MemberPolicyPermissionGroupMeta? Meta { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Name of the permission group.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attributes associated to the permission group.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L358">Source</see>
|
||||
/// </summary>
|
||||
public class MemberPolicyPermissionGroupMeta
|
||||
{
|
||||
/// <summary>
|
||||
/// The key of the attribute.
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string? Key { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The value of the attribute.
|
||||
/// </summary>
|
||||
[JsonProperty("value")]
|
||||
public string? Value { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A group of scoped resources.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L368">Source</see>
|
||||
/// </summary>
|
||||
public class MemberPolicyResourceGroup
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MemberPolicyResourceGroup"/> class.
|
||||
/// </summary>
|
||||
/// <param name="id">Identifier of the resource group.</param>
|
||||
public MemberPolicyResourceGroup(string id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identifier of the resource group.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The scope associated to the resource group.
|
||||
/// </summary>
|
||||
[JsonProperty("scope")]
|
||||
public IReadOnlyCollection<MemberPolicyResourceGroupScope> Scope { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Attributes associated to the resource group.
|
||||
/// </summary>
|
||||
[JsonProperty("meta")]
|
||||
public MemberPolicyResourceGroupMeta? Meta { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Name of the resource group.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attributes associated to the resource group.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L394">Source</see>
|
||||
/// </summary>
|
||||
public class MemberPolicyResourceGroupScope
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MemberPolicyResourceGroupScope"/> class.
|
||||
/// </summary>
|
||||
/// <param name="key">Combination of pre-defined resource name and identifier.</param>
|
||||
public MemberPolicyResourceGroupScope(string key)
|
||||
{
|
||||
Key = key;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This is a combination of pre-defined resource name and identifier (like Account ID etc.)
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string Key { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A list of scope objects for additional context.
|
||||
/// </summary>
|
||||
[JsonProperty("objects")]
|
||||
public IReadOnlyCollection<MemberPolicyResourceGroupScopeObject> Objects { get; set; } = [];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A scope object for additional context.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L412">Source</see>
|
||||
/// </summary>
|
||||
public class MemberPolicyResourceGroupScopeObject
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MemberPolicyResourceGroupScopeObject"/> class.
|
||||
/// </summary>
|
||||
/// <param name="key">Combination of pre-defined resource name and identifier.</param>
|
||||
public MemberPolicyResourceGroupScopeObject(string key)
|
||||
{
|
||||
Key = key;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This is a combination of pre-defined resource name and identifier (like Zone ID etc.)
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string Key { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attributes associated to the resource group.
|
||||
/// </summary>
|
||||
public class MemberPolicyResourceGroupMeta
|
||||
{
|
||||
/// <summary>
|
||||
/// The key of the attribute.
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string? Key { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The value of the attribute.
|
||||
/// </summary>
|
||||
[JsonProperty("value")]
|
||||
public string? Value { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Details of the user associated to the membership.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L435">Source</see>
|
||||
/// </summary>
|
||||
public class MemberUser
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MemberUser"/> class.
|
||||
/// </summary>
|
||||
/// <param name="email">The contact email address of the user.</param>
|
||||
public MemberUser(string email)
|
||||
{
|
||||
Email = email;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The contact email address of the user.
|
||||
/// </summary>
|
||||
[JsonProperty("email")]
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Identifier.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User's first name.
|
||||
/// </summary>
|
||||
[JsonProperty("first_name")]
|
||||
public string? FirstName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User's last name.
|
||||
/// </summary>
|
||||
[JsonProperty("last_name")]
|
||||
public string? LastName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indicates whether two-factor authentication is enabled for the user account.
|
||||
/// Does not apply to API authentication.
|
||||
/// </summary>
|
||||
[JsonProperty("two_factor_authentication_enabled")]
|
||||
public bool? TwoFactorAuthEnabled { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Cloudflare pagination information.
|
||||
/// Information about pagination.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L464">Source</see>
|
||||
/// </summary>
|
||||
public class PaginationInfo
|
||||
{
|
||||
@@ -9,30 +10,24 @@
|
||||
/// Total number of results for the requested service.
|
||||
/// </summary>
|
||||
[JsonProperty("count")]
|
||||
public int Count { get; set; }
|
||||
public int? Count { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Current page within paginated list of results.
|
||||
/// </summary>
|
||||
[JsonProperty("page")]
|
||||
public int Page { get; set; }
|
||||
public int? Page { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Number of results per page of results.
|
||||
/// </summary>
|
||||
[JsonProperty("per_page")]
|
||||
public int PerPage { get; set; }
|
||||
public int? PerPage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Total results available without any search parameters.
|
||||
/// </summary>
|
||||
[JsonProperty("total_count")]
|
||||
public int TotalCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Total number of pages of results.
|
||||
/// </summary>
|
||||
[JsonProperty("total_pages")]
|
||||
public int TotalPages { get; set; }
|
||||
public int? TotalCount { get; set; }
|
||||
}
|
||||
}
|
||||
21
Cloudflare/Models/PermissionGrant.cs
Normal file
21
Cloudflare/Models/PermissionGrant.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A permission grant.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L488">Source</see>
|
||||
/// </summary>
|
||||
public class PermissionGrant
|
||||
{
|
||||
/// <summary>
|
||||
/// Whether the member can read the resource.
|
||||
/// </summary>
|
||||
[JsonProperty("read")]
|
||||
public bool? CanRead { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the member can write to the resource.
|
||||
/// </summary>
|
||||
[JsonProperty("write")]
|
||||
public bool? CanWrite { get; set; }
|
||||
}
|
||||
}
|
||||
122
Cloudflare/Models/RatePlan.cs
Normal file
122
Cloudflare/Models/RatePlan.cs
Normal file
@@ -0,0 +1,122 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// The rate plan applied to the subscription.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L503">Source</see>
|
||||
/// </summary>
|
||||
public class RatePlan
|
||||
{
|
||||
/// <summary>
|
||||
/// The ID of the rate plan.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public RatePlanId? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The currency applied to the rate plan subscription.
|
||||
/// </summary>
|
||||
[JsonProperty("currency")]
|
||||
public string? Currency { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether this rate plan is managed externally from Cloudflare.
|
||||
/// </summary>
|
||||
[JsonProperty("externally_managed")]
|
||||
public bool? ExternallyManaged { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether a rate plan is enterprise-based (or newly adopted term contract).
|
||||
/// </summary>
|
||||
[JsonProperty("is_contract")]
|
||||
public bool? IsContract { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The full name of the rate plan.
|
||||
/// </summary>
|
||||
[JsonProperty("public_name")]
|
||||
public string? PublicName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The scope that this rate plan applies to.
|
||||
/// </summary>
|
||||
[JsonProperty("scope")]
|
||||
public string? Scope { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The list of sets this rate plan applies to.
|
||||
/// </summary>
|
||||
[JsonProperty("sets")]
|
||||
public IReadOnlyCollection<string>? Sets { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Available rate plan ids.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L507">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum RatePlanId
|
||||
{
|
||||
/// <summary>
|
||||
/// The free rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "free")]
|
||||
Free = 1,
|
||||
|
||||
/// <summary>
|
||||
/// The lite rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "lite")]
|
||||
Lite = 2,
|
||||
|
||||
/// <summary>
|
||||
/// The pro rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "pro")]
|
||||
Pro = 3,
|
||||
|
||||
/// <summary>
|
||||
/// The pro+ rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "pro_plus")]
|
||||
ProPlus = 4,
|
||||
|
||||
/// <summary>
|
||||
/// The business rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "business")]
|
||||
Business = 5,
|
||||
|
||||
/// <summary>
|
||||
/// The enterprise rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "enterprise")]
|
||||
Enterprise = 6,
|
||||
|
||||
/// <summary>
|
||||
/// The partners free rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "partners_free")]
|
||||
PartnersFree = 7,
|
||||
|
||||
/// <summary>
|
||||
/// The partners pro rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "partners_pro")]
|
||||
PartnersPro = 8,
|
||||
|
||||
/// <summary>
|
||||
/// The partners business rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "partners_business")]
|
||||
PartnersBusiness = 9,
|
||||
|
||||
/// <summary>
|
||||
/// The partners enterprise rate plan.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "partners_enterprise")]
|
||||
PartnersEnterprise = 10
|
||||
}
|
||||
}
|
||||
57
Cloudflare/Models/ResponseInfo.cs
Normal file
57
Cloudflare/Models/ResponseInfo.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A response info.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L600">Source</see>
|
||||
/// </summary>
|
||||
public class ResponseInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ResponseInfo"/> class.
|
||||
/// </summary>
|
||||
/// <param name="code">The response code.</param>
|
||||
/// <param name="message">The response message.</param>
|
||||
public ResponseInfo(int code, string message)
|
||||
{
|
||||
Code = code;
|
||||
Message = message;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The response code.
|
||||
/// </summary>
|
||||
[JsonProperty("code")]
|
||||
public int Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The response message.
|
||||
/// </summary>
|
||||
[JsonProperty("message")]
|
||||
public string Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The documentation URL.
|
||||
/// </summary>
|
||||
[JsonProperty("documentation_url")]
|
||||
public string? DocumentationUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The response source.
|
||||
/// </summary>
|
||||
[JsonProperty("source")]
|
||||
public ResponseInfoSource? Source { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A response info source.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L611">Source</see>
|
||||
/// </summary>
|
||||
public class ResponseInfoSource
|
||||
{
|
||||
/// <summary>
|
||||
/// The pointer.
|
||||
/// </summary>
|
||||
[JsonProperty("pointer")]
|
||||
public string? Pointer { get; set; }
|
||||
}
|
||||
}
|
||||
127
Cloudflare/Models/Role.cs
Normal file
127
Cloudflare/Models/Role.cs
Normal file
@@ -0,0 +1,127 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A Cloudflare role.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L641">Source</see>
|
||||
/// </summary>
|
||||
public class Role
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Role"/> class.
|
||||
/// </summary>
|
||||
/// <param name="id">Role identifier tag.</param>
|
||||
/// <param name="name">Role name.</param>
|
||||
/// <param name="description">Description of role's permissions.</param>
|
||||
/// <param name="permissions">Permissions.</param>
|
||||
public Role(string id, string name, string description, RolePermissions permissions)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
Description = description;
|
||||
Permissions = permissions;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Role identifier tag.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Description of role's permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Role name.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Role permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("permissions")]
|
||||
public RolePermissions Permissions { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Role permissions.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L661">Source</see>
|
||||
/// </summary>
|
||||
public class RolePermissions
|
||||
{
|
||||
/// <summary>
|
||||
/// Analytics permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("analytics")]
|
||||
public PermissionGrant? Analytics { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Billing permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("billing")]
|
||||
public PermissionGrant? Billing { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Cache Purge permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("cache_purge")]
|
||||
public PermissionGrant? CachePurge { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DNS permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("dns")]
|
||||
public PermissionGrant? Dns { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DNS Records permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("dns_records")]
|
||||
public PermissionGrant? DnsRecords { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Load Balancer permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("lb")]
|
||||
public PermissionGrant? LoadBalancer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Logs permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("logs")]
|
||||
public PermissionGrant? Logs { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Organization permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("organization")]
|
||||
public PermissionGrant? Organization { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// SSL permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("ssl")]
|
||||
public PermissionGrant? Ssl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// WAF permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("waf")]
|
||||
public PermissionGrant? WebApplicationFirewall { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Zone Settings permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("zone_settings")]
|
||||
public PermissionGrant? ZoneSettings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Zones permissions.
|
||||
/// </summary>
|
||||
[JsonProperty("zones")]
|
||||
public PermissionGrant? Zones { get; set; }
|
||||
}
|
||||
}
|
||||
110
Cloudflare/Models/Subscription.cs
Normal file
110
Cloudflare/Models/Subscription.cs
Normal file
@@ -0,0 +1,110 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A Cloudflare subscription.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L705">Source</see>
|
||||
/// </summary>
|
||||
public class Subscription
|
||||
{
|
||||
/// <summary>
|
||||
/// Subscription identifier tag.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The monetary unit in which pricing information is displayed.
|
||||
/// </summary>
|
||||
[JsonProperty("currency")]
|
||||
public string? Currency { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The end of the current period and also when the next billing is due.
|
||||
/// </summary>
|
||||
[JsonProperty("current_period_end")]
|
||||
public DateTime? CurrentPeriodEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the current billing period started.
|
||||
/// </summary>
|
||||
[JsonProperty("current_period_start")]
|
||||
public DateTime? CurrentPeriodStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How often the subscription is renewed automatically.
|
||||
/// </summary>
|
||||
[JsonProperty("frequency")]
|
||||
public RenewFrequency? Frequency { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The price of the subscription that will be billed, in US dollars.
|
||||
/// </summary>
|
||||
[JsonProperty("price")]
|
||||
public decimal? Price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The rate plan applied to the subscription.
|
||||
/// </summary>
|
||||
[JsonProperty("rate_plan")]
|
||||
public RatePlan? RatePlan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The state that the subscription is in.
|
||||
/// </summary>
|
||||
[JsonProperty("state")]
|
||||
public SubscriptionState? State { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The state that the subscription is in.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L745">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum SubscriptionState
|
||||
{
|
||||
/// <summary>
|
||||
/// The subscription is in the trial period.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "Trial")]
|
||||
Trial = 1,
|
||||
|
||||
/// <summary>
|
||||
/// The subscription is provisioned.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "Provisioned")]
|
||||
Provisioned = 2,
|
||||
|
||||
/// <summary>
|
||||
/// The subscription is paid.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "Paid")]
|
||||
Paid = 3,
|
||||
|
||||
/// <summary>
|
||||
/// The subscription is awaiting payment.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "AwaitingPayment")]
|
||||
AwaitingPayment = 4,
|
||||
|
||||
/// <summary>
|
||||
/// The subscription is cancelled.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "Cancelled")]
|
||||
Cancelled = 5,
|
||||
|
||||
/// <summary>
|
||||
/// The subscription has failed.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "Failed")]
|
||||
Failed = 6,
|
||||
|
||||
/// <summary>
|
||||
/// The subscription has expired.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "Expired")]
|
||||
Expired = 7
|
||||
}
|
||||
}
|
||||
33
Cloudflare/Models/SubscriptionComponent.cs
Normal file
33
Cloudflare/Models/SubscriptionComponent.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A component value for a subscription.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L751">Source</see>
|
||||
/// </summary>
|
||||
public class SubscriptionComponent
|
||||
{
|
||||
/// <summary>
|
||||
/// The default amount assigned.
|
||||
/// </summary>
|
||||
[JsonProperty("default")]
|
||||
public int? Default { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The name of the component value.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The unit price for the component value.
|
||||
/// </summary>
|
||||
[JsonProperty("price")]
|
||||
public decimal? Price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The amount of the component value assigned.
|
||||
/// </summary>
|
||||
[JsonProperty("value")]
|
||||
public int? Value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,27 +1,21 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Base implementation of an owner.
|
||||
/// A simple zone object. May have null properties if not a zone subscription.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L776">Source</see>
|
||||
/// </summary>
|
||||
public class OwnerBase
|
||||
public class SubscriptionZone
|
||||
{
|
||||
/// <summary>
|
||||
/// Identifier.
|
||||
/// </summary>
|
||||
// <= 32 characters
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Name of the owner.
|
||||
/// The domain name.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The type of owner.
|
||||
/// </summary>
|
||||
[JsonProperty("type")]
|
||||
public string? Type { get; set; }
|
||||
}
|
||||
}
|
||||
123
Cloudflare/Models/Token.cs
Normal file
123
Cloudflare/Models/Token.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A token.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L788">Source</see>
|
||||
/// </summary>
|
||||
public class Token
|
||||
{
|
||||
/// <summary>
|
||||
/// Token identifier tag.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Token condition.
|
||||
/// </summary>
|
||||
[JsonProperty("condition")]
|
||||
public TokenCondition? Condition { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The expiration time on or after which the JWT MUST NOT be accepted for processing.
|
||||
/// </summary>
|
||||
[JsonProperty("created_on")]
|
||||
public DateTime? ExpiresOn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The time on which the token was created.
|
||||
/// </summary>
|
||||
public DateTime? IssuedOn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Last time the token was used.
|
||||
/// </summary>
|
||||
public DateTime? LastUsedOn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Last time the token was modified.
|
||||
/// </summary>
|
||||
public DateTime? ModifiedOn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Token name.
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The time before which the token MUST NOT be accepted for processing.
|
||||
/// </summary>
|
||||
public DateTime? NotBefore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// List of access policies assigned to the token.
|
||||
/// </summary>
|
||||
public IReadOnlyCollection<TokenPolicy>? Policies { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Status of the token.
|
||||
/// </summary>
|
||||
public TokenStatus? Status { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Token condition.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L839">Source</see>
|
||||
/// </summary>
|
||||
public class TokenCondition
|
||||
{
|
||||
/// <summary>
|
||||
/// Client IP restrictions.
|
||||
/// </summary>
|
||||
[JsonProperty("request_ip")]
|
||||
public TokenConditionRequestIP? RequestIp { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Client IP restrictions.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L850">Source</see>
|
||||
/// </summary>
|
||||
public class TokenConditionRequestIP
|
||||
{
|
||||
/// <summary>
|
||||
/// List of IPv4/IPv6 CIDR addresses.
|
||||
/// </summary>
|
||||
[JsonProperty("in")]
|
||||
public IReadOnlyCollection<string>? Allowed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// List of IPv4/IPv6 CIDR addresses.
|
||||
/// </summary>
|
||||
[JsonProperty("not_in")]
|
||||
public IReadOnlyCollection<string>? Denied { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Status of the token.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L835">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum TokenStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// The token is active.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "active")]
|
||||
Active = 1,
|
||||
|
||||
/// <summary>
|
||||
/// The token is disabled.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "disabled")]
|
||||
Disabled = 2,
|
||||
|
||||
/// <summary>
|
||||
/// The token is expired.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "expired")]
|
||||
Expired = 3
|
||||
}
|
||||
}
|
||||
120
Cloudflare/Models/TokenPolicy.cs
Normal file
120
Cloudflare/Models/TokenPolicy.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A token policy.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L874">Source</see>
|
||||
/// </summary>
|
||||
public class TokenPolicy
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="TokenPolicy"/> class.
|
||||
/// </summary>
|
||||
/// <param name="id">Policy identifier.</param>
|
||||
/// <param name="effect">Allow or deny operations against the resources.</param>
|
||||
public TokenPolicy(string id, TokenPolicyEffect effect)
|
||||
{
|
||||
Id = id;
|
||||
Effect = effect;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Policy identifier.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Allow or deny operations against the resources.
|
||||
/// </summary>
|
||||
[JsonProperty("effect")]
|
||||
public TokenPolicyEffect Effect { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A set of permission groups that are specified to the policy.
|
||||
/// </summary>
|
||||
[JsonProperty("permission_groups")]
|
||||
public IReadOnlyCollection<TokenPolicyPermissionGroup> PermissionGroups { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// A list of resource names that the policy applies to.
|
||||
/// </summary>
|
||||
[JsonProperty("resources")]
|
||||
public IDictionary<string, string> Resources { get; set; } = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Allow or deny operations against the resources.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L883">Source</see>
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum TokenPolicyEffect
|
||||
{
|
||||
/// <summary>
|
||||
/// Allow operations against the resources.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "allow")]
|
||||
Allow = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Deny operations against the resources.
|
||||
/// </summary>
|
||||
[EnumMember(Value = "deny")]
|
||||
Deny = 2
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A named group of permissions that map to a group of operations against resources.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L901">Source</see>
|
||||
/// </summary>
|
||||
public class TokenPolicyPermissionGroup
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="TokenPolicyPermissionGroup"/> class.
|
||||
/// </summary>
|
||||
/// <param name="id">Identifier of the permission group.</param>
|
||||
public TokenPolicyPermissionGroup(string id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identifier of the permission group.
|
||||
/// </summary>
|
||||
[JsonProperty("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Attributes associated to the permission group.
|
||||
/// </summary>
|
||||
[JsonProperty("meta")]
|
||||
public TokenPolicyPermissionGroupMeta? Meta { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Name of the permission group.
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attributes associated to the permission group.
|
||||
/// <see href="https://github.com/cloudflare/cloudflare-typescript/blob/v4.4.1/src/resources/shared.ts#L922">Source</see>
|
||||
/// </summary>
|
||||
public class TokenPolicyPermissionGroupMeta
|
||||
{
|
||||
/// <summary>
|
||||
/// Key.
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string? Key { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Value.
|
||||
/// </summary>
|
||||
[JsonProperty("value")]
|
||||
public string? Value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// Information about the processing time of a file.
|
||||
/// </summary>
|
||||
public class RecordProcessTiming
|
||||
{
|
||||
/// <summary>
|
||||
/// When the file parsing ended.
|
||||
/// </summary>
|
||||
[JsonProperty("end_time")]
|
||||
public DateTime? EndTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Processing time of the file in seconds.
|
||||
/// </summary>
|
||||
[JsonProperty("process_time")]
|
||||
public int? ProcessTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the file parsing started.
|
||||
/// </summary>
|
||||
[JsonProperty("start_time")]
|
||||
public DateTime? StartTime { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
namespace AMWD.Net.Api.Cloudflare
|
||||
{
|
||||
/// <summary>
|
||||
/// A Cloudflare response information.
|
||||
/// </summary>
|
||||
public class ResponseInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// The message code.
|
||||
/// </summary>
|
||||
[JsonProperty("code")]
|
||||
public int Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The message.
|
||||
/// </summary>
|
||||
[JsonProperty("message")]
|
||||
public string? Message { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,14 @@
|
||||
<PropertyGroup>
|
||||
<LangVersion>12.0</LangVersion>
|
||||
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/AM-WD/cloudflare-api.git</RepositoryUrl>
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
|
||||
<Title>Modular Cloudflare API implementation in .NET</Title>
|
||||
<Company>AM.WD</Company>
|
||||
<Authors>Andreas Müller</Authors>
|
||||
<Copyright>© {copyright:2024-} AM.WD</Copyright>
|
||||
<Copyright>© {copyright:2025-} AM.WD</Copyright>
|
||||
|
||||
<PublicKey>0024000004800000940000000602000000240000525341310004000001000100a96b0435a48fcae5d097c19c0c3a312d0316c1217a7d5984236f430625510dfdbedc3ffdaea7b3bad77adbe5d85cecdd788a43cd02a8a4950313587bbcb804ff2ef68346f9d6a79f79338e4f12293f216df0536d2b05ab7977b6c50946a42422cb1ddc109c0151a3d65fbe636ce6734070fb6e3eaf000a33ac6a36cab5292ed1</PublicKey>
|
||||
</PropertyGroup>
|
||||
@@ -18,5 +22,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
|
||||
<Using Include="Newtonsoft.Json"/>
|
||||
<Using Include="System"/>
|
||||
<Using Include="System.Collections.Generic"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<NrtTagMatch>zones/v[0-9]*</NrtTagMatch>
|
||||
|
||||
<PackageId>AMWD.Net.API.Cloudflare.Zones</PackageId>
|
||||
<PackageTags>cloudflare api zones</PackageTags>
|
||||
@@ -9,8 +10,8 @@
|
||||
<AssemblyName>amwd-cloudflare-zones</AssemblyName>
|
||||
<RootNamespace>AMWD.Net.Api.Cloudflare.Zones</RootNamespace>
|
||||
|
||||
<Product>Cloudflare API - Zones</Product>
|
||||
<Description>Zone management features of the Cloudflare API</Description>
|
||||
<Product>Cloudflare API - Domain/Zone Management</Product>
|
||||
<Description>The Domain/Zone Management section of the Cloudflare API.</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Only build package for tagged releases or Debug on CI (only dev NuGet feed) -->
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Cloudflare API for .NET | Zones
|
||||
|
||||
With this extension package, you'll get all features available to manage a Zone on Cloudflare.
|
||||
This package contains the feature set of the _Domain/Zone Management_ section of the Cloudflare API.
|
||||
|
||||
## Methods
|
||||
## Implemented Methods
|
||||
|
||||
### Zone
|
||||
|
||||
|
||||
@@ -7,14 +7,10 @@
|
||||
<CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/AM-WD/cloudflare-api.git</RepositoryUrl>
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
|
||||
<PackageIcon>package-icon.png</PackageIcon>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
<PackageProjectUrl>https://developers.cloudflare.com/api</PackageProjectUrl>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
|
||||
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
@@ -39,6 +35,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(SolutionDir)/package-icon.png" Pack="true" PackagePath="/" />
|
||||
<None Include="$(SolutionDir)/LICENSE.txt" Pack="true" PackagePath="/" />
|
||||
<None Include="README.md" Pack="true" PackagePath="/" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -50,6 +47,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(Configuration)' == 'Release'">
|
||||
<!-- This package version has to be updated whenever the base API implementation changes. -->
|
||||
<PackageReference Include="AMWD.Net.API.Cloudflare" Version="0.1.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
|
||||
|
||||
@@ -34,8 +34,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{5AF54083-1
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cloudflare.Zones", "Extensions\Cloudflare.Zones\Cloudflare.Zones.csproj", "{290D0987-D295-4DBD-9090-14D3DED63281}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTests", "UnitTests", "{A31B4929-190B-4AB8-984B-E284BB159F04}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
UnitTests\Directory.Build.props = UnitTests\Directory.Build.props
|
||||
@@ -43,7 +41,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTests", "UnitTests", "{
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cloudflare.Tests", "Cloudflare.Tests\Cloudflare.Tests.csproj", "{2491D707-E845-49DF-8D94-0154AAD36E42}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cloudflare.Zones.Tests", "UnitTests\Cloudflare.Zones.Tests\Cloudflare.Zones.Tests.csproj", "{835705E5-D9F9-4236-9E25-898A851C8165}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cloudflare.Zones", "Extensions\Cloudflare.Zones\Cloudflare.Zones.csproj", "{82ADFF73-94FF-44D0-8239-A8FF5809A600}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cloudflare.Zones.Tests", "UnitTests\Cloudflare.Zones.Tests\Cloudflare.Zones.Tests.csproj", "{592B8AA2-9888-407B-98A4-CCD68A1C7C9A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@@ -55,18 +55,18 @@ Global
|
||||
{9D98650A-01CC-44B1-AC1E-D6323E1777C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9D98650A-01CC-44B1-AC1E-D6323E1777C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9D98650A-01CC-44B1-AC1E-D6323E1777C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{290D0987-D295-4DBD-9090-14D3DED63281}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{290D0987-D295-4DBD-9090-14D3DED63281}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{290D0987-D295-4DBD-9090-14D3DED63281}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{290D0987-D295-4DBD-9090-14D3DED63281}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2491D707-E845-49DF-8D94-0154AAD36E42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2491D707-E845-49DF-8D94-0154AAD36E42}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2491D707-E845-49DF-8D94-0154AAD36E42}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2491D707-E845-49DF-8D94-0154AAD36E42}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{835705E5-D9F9-4236-9E25-898A851C8165}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{835705E5-D9F9-4236-9E25-898A851C8165}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{835705E5-D9F9-4236-9E25-898A851C8165}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{835705E5-D9F9-4236-9E25-898A851C8165}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{82ADFF73-94FF-44D0-8239-A8FF5809A600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{82ADFF73-94FF-44D0-8239-A8FF5809A600}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{82ADFF73-94FF-44D0-8239-A8FF5809A600}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{82ADFF73-94FF-44D0-8239-A8FF5809A600}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{592B8AA2-9888-407B-98A4-CCD68A1C7C9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{592B8AA2-9888-407B-98A4-CCD68A1C7C9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{592B8AA2-9888-407B-98A4-CCD68A1C7C9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{592B8AA2-9888-407B-98A4-CCD68A1C7C9A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -75,8 +75,8 @@ Global
|
||||
{BA35336B-7640-4C0C-B93E-06BDC1EE1872} = {5D69F102-CF03-4175-8C59-D457450B28E0}
|
||||
{E72A0B89-A37E-4BB3-B2EF-26AB24D3D716} = {5D69F102-CF03-4175-8C59-D457450B28E0}
|
||||
{5AF54083-1A93-4C43-B36C-EDD9E5DE0695} = {5D69F102-CF03-4175-8C59-D457450B28E0}
|
||||
{290D0987-D295-4DBD-9090-14D3DED63281} = {EE760850-ED97-4493-B0AE-326289A60145}
|
||||
{835705E5-D9F9-4236-9E25-898A851C8165} = {A31B4929-190B-4AB8-984B-E284BB159F04}
|
||||
{82ADFF73-94FF-44D0-8239-A8FF5809A600} = {EE760850-ED97-4493-B0AE-326289A60145}
|
||||
{592B8AA2-9888-407B-98A4-CCD68A1C7C9A} = {A31B4929-190B-4AB8-984B-E284BB159F04}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {A465B60D-C946-4381-835C-29303EA4FAD1}
|
||||
|
||||
Reference in New Issue
Block a user