Added timing information to CloudflareResponse

This commit is contained in:
2024-11-08 17:11:32 +01:00
parent 935632df27
commit 42455e596b
9 changed files with 77 additions and 58 deletions

View File

@@ -110,6 +110,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); Assert.IsNotNull(response.Messages);
Assert.IsNull(response.ResultInfo); Assert.IsNull(response.ResultInfo);
Assert.IsNull(response.Timing);
Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Errors.Count);
Assert.AreEqual(0, response.Messages.Count); Assert.AreEqual(0, response.Messages.Count);
@@ -189,16 +190,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsTrue(response.Success); Assert.IsTrue(response.Success);
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); 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.Errors.Count);
Assert.AreEqual(0, response.Messages.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("This is an awesome text ;-)", response.Result);
Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);

View File

@@ -110,6 +110,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); Assert.IsNotNull(response.Messages);
Assert.IsNull(response.ResultInfo); Assert.IsNull(response.ResultInfo);
Assert.IsNull(response.Timing);
Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Errors.Count);
Assert.AreEqual(0, response.Messages.Count); Assert.AreEqual(0, response.Messages.Count);
@@ -210,16 +211,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsTrue(response.Success); Assert.IsTrue(response.Success);
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); 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.Errors.Count);
Assert.AreEqual(0, response.Messages.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("This is an awesome text ;-)", response.Result);
Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);

View File

@@ -118,6 +118,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); Assert.IsNotNull(response.Messages);
Assert.IsNull(response.ResultInfo); Assert.IsNull(response.ResultInfo);
Assert.IsNull(response.Timing);
Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Errors.Count);
Assert.AreEqual(0, response.Messages.Count); Assert.AreEqual(0, response.Messages.Count);
@@ -170,6 +171,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); Assert.IsNotNull(response.Messages);
Assert.IsNull(response.ResultInfo); Assert.IsNull(response.ResultInfo);
Assert.IsNull(response.Timing);
Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Errors.Count);
Assert.AreEqual(0, response.Messages.Count); Assert.AreEqual(0, response.Messages.Count);
@@ -249,16 +251,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsTrue(response.Success); Assert.IsTrue(response.Success);
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); 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.Errors.Count);
Assert.AreEqual(0, response.Messages.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("This is an awesome text ;-)", response.Result);
Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);

View File

@@ -104,7 +104,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
_httpHandlerMock.Responses.Enqueue(new HttpResponseMessage _httpHandlerMock.Responses.Enqueue(new HttpResponseMessage
{ {
StatusCode = HttpStatusCode.OK, 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(); var client = GetClient();
@@ -126,6 +126,11 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.AreEqual("some-string", response.Result.Str); Assert.AreEqual("some-string", response.Result.Str);
Assert.AreEqual(123, response.Result.Int); 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); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);
var callback = _httpHandlerMock.Callbacks.First(); var callback = _httpHandlerMock.Callbacks.First();
@@ -170,6 +175,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); Assert.IsNotNull(response.Messages);
Assert.IsNull(response.ResultInfo); Assert.IsNull(response.ResultInfo);
Assert.IsNull(response.Timing);
Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Errors.Count);
Assert.AreEqual(0, response.Messages.Count); Assert.AreEqual(0, response.Messages.Count);
@@ -221,6 +227,7 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); Assert.IsNotNull(response.Messages);
Assert.IsNull(response.ResultInfo); Assert.IsNull(response.ResultInfo);
Assert.IsNull(response.Timing);
Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Errors.Count);
Assert.AreEqual(0, response.Messages.Count); Assert.AreEqual(0, response.Messages.Count);
@@ -297,16 +304,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsTrue(response.Success); Assert.IsTrue(response.Success);
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); 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.Errors.Count);
Assert.AreEqual(0, response.Messages.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("This is an awesome text ;-)", response.Result);
Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);
@@ -379,16 +382,12 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsTrue(response.Success); Assert.IsTrue(response.Success);
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); 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.Errors.Count);
Assert.AreEqual(0, response.Messages.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("This is an awesome text ;-)", response.Result);
Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);

View File

@@ -297,16 +297,11 @@ namespace Cloudflare.Core.Tests.CloudflareClientTests
Assert.IsTrue(response.Success); Assert.IsTrue(response.Success);
Assert.IsNotNull(response.Errors); Assert.IsNotNull(response.Errors);
Assert.IsNotNull(response.Messages); Assert.IsNotNull(response.Messages);
Assert.IsNotNull(response.ResultInfo); Assert.IsNull(response.ResultInfo);
Assert.AreEqual(0, response.Errors.Count); Assert.AreEqual(0, response.Errors.Count);
Assert.AreEqual(0, response.Messages.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("This is an awesome text ;-)", response.Result);
Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count); Assert.AreEqual(1, _httpHandlerMock.Callbacks.Count);

View File

@@ -248,7 +248,6 @@ namespace AMWD.Net.Api.Cloudflare
return new CloudflareResponse<TRes> return new CloudflareResponse<TRes>
{ {
Success = true, Success = true,
ResultInfo = new PaginationInfo(),
Result = (TRes)cObj, Result = (TRes)cObj,
}; };
} }

View File

@@ -5,20 +5,9 @@ namespace AMWD.Net.Api.Cloudflare
/// <summary> /// <summary>
/// The base Cloudflare response. /// The base Cloudflare response.
/// </summary> /// </summary>
public class CloudflareResponse /// <typeparam name="T">The result type.</typeparam>
public class CloudflareResponse<T>
{ {
/// <summary>
/// Information about the result of the request.
/// </summary>
[JsonProperty("result_info")]
public PaginationInfo? ResultInfo { get; set; }
/// <summary>
/// Whether the API call was successful.
/// </summary>
[JsonProperty("success")]
public bool Success { get; set; }
/// <summary> /// <summary>
/// Errors returned by the API call. /// Errors returned by the API call.
/// </summary> /// </summary>
@@ -30,18 +19,29 @@ namespace AMWD.Net.Api.Cloudflare
/// </summary> /// </summary>
[JsonProperty("messages")] [JsonProperty("messages")]
public IReadOnlyList<ResponseInfo> Messages { get; set; } = []; public IReadOnlyList<ResponseInfo> Messages { get; set; } = [];
}
/// <summary> /// <summary>
/// The base Cloudflare response with a result. /// Whether the API call was successful.
/// </summary> /// </summary>
/// <typeparam name="T">The result type.</typeparam> [JsonProperty("success")]
public class CloudflareResponse<T> : CloudflareResponse public bool Success { get; set; }
{
/// <summary> /// <summary>
/// The result of the API call. /// The result of the API call.
/// </summary> /// </summary>
[JsonProperty("result")] [JsonProperty("result")]
public T? Result { get; set; } public T? Result { get; set; }
/// <summary>
/// Information about the result of the request.
/// </summary>
[JsonProperty("result_info")]
public PaginationInfo? ResultInfo { get; set; }
/// <summary>
/// Information about the processing time of a request.
/// </summary>
[JsonProperty("timing")]
public RecordProcessTiming? Timing { get; set; }
} }
} }

View File

@@ -28,5 +28,11 @@
/// </summary> /// </summary>
[JsonProperty("total_count")] [JsonProperty("total_count")]
public int TotalCount { get; set; } public int TotalCount { get; set; }
/// <summary>
/// Total number of pages of results.
/// </summary>
[JsonProperty("total_pages")]
public int TotalPages { get; set; }
} }
} }

View File

@@ -0,0 +1,28 @@
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; }
}
}