diff --git a/Cloudflare.Tests/CloudflareClientTests/DeleteAsyncTest.cs b/Cloudflare.Tests/CloudflareClientTests/DeleteAsyncTest.cs index 3a1f8a5..d280a36 100644 --- a/Cloudflare.Tests/CloudflareClientTests/DeleteAsyncTest.cs +++ b/Cloudflare.Tests/CloudflareClientTests/DeleteAsyncTest.cs @@ -110,6 +110,7 @@ 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); @@ -189,16 +190,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests Assert.IsTrue(response.Success); Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Messages); - Assert.IsNotNull(response.ResultInfo); + Assert.IsNull(response.ResultInfo); + Assert.IsNull(response.Timing); Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Messages.Count); - Assert.AreEqual(0, response.ResultInfo.Count); - Assert.AreEqual(0, response.ResultInfo.Page); - Assert.AreEqual(0, response.ResultInfo.PerPage); - Assert.AreEqual(0, response.ResultInfo.TotalCount); - Assert.AreEqual("This is an awesome text ;-)", response.Result); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); diff --git a/Cloudflare.Tests/CloudflareClientTests/GetAsyncTest.cs b/Cloudflare.Tests/CloudflareClientTests/GetAsyncTest.cs index 09caa52..5a46071 100644 --- a/Cloudflare.Tests/CloudflareClientTests/GetAsyncTest.cs +++ b/Cloudflare.Tests/CloudflareClientTests/GetAsyncTest.cs @@ -110,6 +110,7 @@ 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); @@ -210,16 +211,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests Assert.IsTrue(response.Success); Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Messages); - Assert.IsNotNull(response.ResultInfo); + Assert.IsNull(response.ResultInfo); + Assert.IsNull(response.Timing); Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Messages.Count); - Assert.AreEqual(0, response.ResultInfo.Count); - Assert.AreEqual(0, response.ResultInfo.Page); - Assert.AreEqual(0, response.ResultInfo.PerPage); - Assert.AreEqual(0, response.ResultInfo.TotalCount); - Assert.AreEqual("This is an awesome text ;-)", response.Result); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); diff --git a/Cloudflare.Tests/CloudflareClientTests/PatchAsyncTest.cs b/Cloudflare.Tests/CloudflareClientTests/PatchAsyncTest.cs index 2ed766c..44fd307 100644 --- a/Cloudflare.Tests/CloudflareClientTests/PatchAsyncTest.cs +++ b/Cloudflare.Tests/CloudflareClientTests/PatchAsyncTest.cs @@ -118,6 +118,7 @@ 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); @@ -170,6 +171,7 @@ 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); @@ -249,16 +251,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests Assert.IsTrue(response.Success); Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Messages); - Assert.IsNotNull(response.ResultInfo); + Assert.IsNull(response.ResultInfo); + Assert.IsNull(response.Timing); Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Messages.Count); - Assert.AreEqual(0, response.ResultInfo.Count); - Assert.AreEqual(0, response.ResultInfo.Page); - Assert.AreEqual(0, response.ResultInfo.PerPage); - Assert.AreEqual(0, response.ResultInfo.TotalCount); - Assert.AreEqual("This is an awesome text ;-)", response.Result); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); diff --git a/Cloudflare.Tests/CloudflareClientTests/PostAsyncTest.cs b/Cloudflare.Tests/CloudflareClientTests/PostAsyncTest.cs index 35c8268..21813b5 100644 --- a/Cloudflare.Tests/CloudflareClientTests/PostAsyncTest.cs +++ b/Cloudflare.Tests/CloudflareClientTests/PostAsyncTest.cs @@ -104,7 +104,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 }}", Encoding.UTF8, MediaTypeNames.Application.Json), + 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), }); var client = GetClient(); @@ -126,6 +126,11 @@ 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(); @@ -170,6 +175,7 @@ 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); @@ -221,6 +227,7 @@ 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); @@ -297,16 +304,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests Assert.IsTrue(response.Success); Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Messages); - Assert.IsNotNull(response.ResultInfo); + Assert.IsNull(response.ResultInfo); + Assert.IsNull(response.Timing); Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Messages.Count); - Assert.AreEqual(0, response.ResultInfo.Count); - Assert.AreEqual(0, response.ResultInfo.Page); - Assert.AreEqual(0, response.ResultInfo.PerPage); - Assert.AreEqual(0, response.ResultInfo.TotalCount); - Assert.AreEqual("This is an awesome text ;-)", response.Result); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); @@ -379,16 +382,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests Assert.IsTrue(response.Success); Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Messages); - Assert.IsNotNull(response.ResultInfo); + Assert.IsNull(response.ResultInfo); + Assert.IsNull(response.Timing); Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Messages.Count); - Assert.AreEqual(0, response.ResultInfo.Count); - Assert.AreEqual(0, response.ResultInfo.Page); - Assert.AreEqual(0, response.ResultInfo.PerPage); - Assert.AreEqual(0, response.ResultInfo.TotalCount); - Assert.AreEqual("This is an awesome text ;-)", response.Result); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); diff --git a/Cloudflare.Tests/CloudflareClientTests/PutAsyncTest.cs b/Cloudflare.Tests/CloudflareClientTests/PutAsyncTest.cs index e0d6e81..5bff2e6 100644 --- a/Cloudflare.Tests/CloudflareClientTests/PutAsyncTest.cs +++ b/Cloudflare.Tests/CloudflareClientTests/PutAsyncTest.cs @@ -297,16 +297,11 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests Assert.IsTrue(response.Success); Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Messages); - Assert.IsNotNull(response.ResultInfo); + Assert.IsNull(response.ResultInfo); Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Messages.Count); - Assert.AreEqual(0, response.ResultInfo.Count); - Assert.AreEqual(0, response.ResultInfo.Page); - Assert.AreEqual(0, response.ResultInfo.PerPage); - Assert.AreEqual(0, response.ResultInfo.TotalCount); - Assert.AreEqual("This is an awesome text ;-)", response.Result); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); diff --git a/Cloudflare/CloudflareClient.cs b/Cloudflare/CloudflareClient.cs index ee3a03f..5d553d3 100644 --- a/Cloudflare/CloudflareClient.cs +++ b/Cloudflare/CloudflareClient.cs @@ -248,7 +248,6 @@ namespace AMWD.Net.Api.Cloudflare return new CloudflareResponse { Success = true, - ResultInfo = new PaginationInfo(), Result = (TRes)cObj, }; } diff --git a/Cloudflare/Responses/CloudflareResponse.cs b/Cloudflare/Responses/CloudflareResponse.cs index 8073f99..03f1066 100644 --- a/Cloudflare/Responses/CloudflareResponse.cs +++ b/Cloudflare/Responses/CloudflareResponse.cs @@ -5,20 +5,9 @@ namespace AMWD.Net.Api.Cloudflare /// /// The base Cloudflare response. /// - public class CloudflareResponse + /// The result type. + public class CloudflareResponse { - /// - /// Information about the result of the request. - /// - [JsonProperty("result_info")] - public PaginationInfo? ResultInfo { get; set; } - - /// - /// Whether the API call was successful. - /// - [JsonProperty("success")] - public bool Success { get; set; } - /// /// Errors returned by the API call. /// @@ -30,18 +19,29 @@ namespace AMWD.Net.Api.Cloudflare /// [JsonProperty("messages")] public IReadOnlyList Messages { get; set; } = []; - } - /// - /// The base Cloudflare response with a result. - /// - /// The result type. - public class CloudflareResponse : CloudflareResponse - { + /// + /// Whether the API call was successful. + /// + [JsonProperty("success")] + public bool Success { get; set; } + /// /// The result of the API call. /// [JsonProperty("result")] public T? Result { get; set; } + + /// + /// Information about the result of the request. + /// + [JsonProperty("result_info")] + public PaginationInfo? ResultInfo { get; set; } + + /// + /// Information about the processing time of a request. + /// + [JsonProperty("timing")] + public RecordProcessTiming? Timing { get; set; } } } diff --git a/Cloudflare/Responses/PaginationInfo.cs b/Cloudflare/Responses/PaginationInfo.cs index 523666a..9d3f0c8 100644 --- a/Cloudflare/Responses/PaginationInfo.cs +++ b/Cloudflare/Responses/PaginationInfo.cs @@ -28,5 +28,11 @@ /// [JsonProperty("total_count")] public int TotalCount { get; set; } + + /// + /// Total number of pages of results. + /// + [JsonProperty("total_pages")] + public int TotalPages { get; set; } } } diff --git a/Cloudflare/Responses/RecordProcessTiming.cs b/Cloudflare/Responses/RecordProcessTiming.cs new file mode 100644 index 0000000..e231ba8 --- /dev/null +++ b/Cloudflare/Responses/RecordProcessTiming.cs @@ -0,0 +1,28 @@ +using System; + +namespace AMWD.Net.Api.Cloudflare +{ + /// + /// Information about the processing time of a file. + /// + public class RecordProcessTiming + { + /// + /// When the file parsing ended. + /// + [JsonProperty("end_time")] + public DateTime? EndTime { get; set; } + + /// + /// Processing time of the file in seconds. + /// + [JsonProperty("process_time")] + public int? ProcessTime { get; set; } + + /// + /// When the file parsing started. + /// + [JsonProperty("start_time")] + public DateTime? StartTime { get; set; } + } +}