diff --git a/src/ReC.Client/Api/BaseCrudApi.cs b/src/ReC.Client/Api/BaseCrudApi.cs
index a6c4cbe..3728b11 100644
--- a/src/ReC.Client/Api/BaseCrudApi.cs
+++ b/src/ReC.Client/Api/BaseCrudApi.cs
@@ -2,6 +2,7 @@ using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -20,15 +21,30 @@ namespace ReC.Client.Api
///
protected readonly string ResourcePath;
+ ///
+ /// An optional logger used to record API call outcomes. May be .
+ ///
+#if NETFRAMEWORK
+ protected readonly ILogger Logger;
+#else
+ protected readonly ILogger? Logger;
+#endif
+
///
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
/// The base resource path for the API endpoint.
- protected BaseCrudApi(HttpClient http, string resourcePath)
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ protected BaseCrudApi(HttpClient http, string resourcePath, ILogger logger = null)
+#else
+ protected BaseCrudApi(HttpClient http, string resourcePath, ILogger? logger = null)
+#endif
{
Http = http ?? throw new ArgumentNullException(nameof(http));
ResourcePath = resourcePath ?? throw new ArgumentNullException(nameof(resourcePath));
+ Logger = logger;
}
///
@@ -43,7 +59,7 @@ namespace ReC.Client.Api
using (var content = ReCClientHelpers.ToJsonContent(payload))
using (var resp = await Http.PostAsync(ResourcePath, content, cancel))
{
- await ReCClientHelpers.EnsureSuccessAsync(resp, cancel).ConfigureAwait(false);
+ await ReCClientHelpers.HandleResponseAsync(resp, Logger, cancel).ConfigureAwait(false);
}
}
@@ -60,7 +76,7 @@ namespace ReC.Client.Api
using (var content = ReCClientHelpers.ToJsonContent(payload))
using (var resp = await Http.PutAsync($"{ResourcePath}/{id}", content, cancel))
{
- await ReCClientHelpers.EnsureSuccessAsync(resp, cancel).ConfigureAwait(false);
+ await ReCClientHelpers.HandleResponseAsync(resp, Logger, cancel).ConfigureAwait(false);
}
}
@@ -79,7 +95,7 @@ namespace ReC.Client.Api
})
using (var resp = await Http.SendAsync(request, cancel))
{
- await ReCClientHelpers.EnsureSuccessAsync(resp, cancel).ConfigureAwait(false);
+ await ReCClientHelpers.HandleResponseAsync(resp, Logger, cancel).ConfigureAwait(false);
}
}
}
diff --git a/src/ReC.Client/Api/CommonApi.cs b/src/ReC.Client/Api/CommonApi.cs
index aea3cdf..d66b01b 100644
--- a/src/ReC.Client/Api/CommonApi.cs
+++ b/src/ReC.Client/Api/CommonApi.cs
@@ -1,6 +1,7 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -13,7 +14,12 @@ namespace ReC.Client.Api
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
- public CommonApi(HttpClient http) : base(http, "api/Common")
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ public CommonApi(HttpClient http, ILogger logger = null) : base(http, "api/Common", logger)
+#else
+ public CommonApi(HttpClient http, ILogger? logger = null) : base(http, "api/Common", logger)
+#endif
{
}
}
diff --git a/src/ReC.Client/Api/EndpointAuthApi.cs b/src/ReC.Client/Api/EndpointAuthApi.cs
index 287d6d0..14fb041 100644
--- a/src/ReC.Client/Api/EndpointAuthApi.cs
+++ b/src/ReC.Client/Api/EndpointAuthApi.cs
@@ -1,6 +1,7 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -13,7 +14,12 @@ namespace ReC.Client.Api
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
- public EndpointAuthApi(HttpClient http) : base(http, "api/EndpointAuth")
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ public EndpointAuthApi(HttpClient http, ILogger logger = null) : base(http, "api/EndpointAuth", logger)
+#else
+ public EndpointAuthApi(HttpClient http, ILogger? logger = null) : base(http, "api/EndpointAuth", logger)
+#endif
{
}
}
diff --git a/src/ReC.Client/Api/EndpointParamsApi.cs b/src/ReC.Client/Api/EndpointParamsApi.cs
index ac7b781..f02224b 100644
--- a/src/ReC.Client/Api/EndpointParamsApi.cs
+++ b/src/ReC.Client/Api/EndpointParamsApi.cs
@@ -1,6 +1,7 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -13,7 +14,12 @@ namespace ReC.Client.Api
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
- public EndpointParamsApi(HttpClient http) : base(http, "api/EndpointParams")
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ public EndpointParamsApi(HttpClient http, ILogger logger = null) : base(http, "api/EndpointParams", logger)
+#else
+ public EndpointParamsApi(HttpClient http, ILogger? logger = null) : base(http, "api/EndpointParams", logger)
+#endif
{
}
}
diff --git a/src/ReC.Client/Api/EndpointsApi.cs b/src/ReC.Client/Api/EndpointsApi.cs
index cc8634e..0d70339 100644
--- a/src/ReC.Client/Api/EndpointsApi.cs
+++ b/src/ReC.Client/Api/EndpointsApi.cs
@@ -1,6 +1,7 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -13,7 +14,12 @@ namespace ReC.Client.Api
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
- public EndpointsApi(HttpClient http) : base(http, "api/Endpoints")
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ public EndpointsApi(HttpClient http, ILogger logger = null) : base(http, "api/Endpoints", logger)
+#else
+ public EndpointsApi(HttpClient http, ILogger? logger = null) : base(http, "api/Endpoints", logger)
+#endif
{
}
}
diff --git a/src/ReC.Client/Api/ProfileApi.cs b/src/ReC.Client/Api/ProfileApi.cs
index a2f6827..ea174e5 100644
--- a/src/ReC.Client/Api/ProfileApi.cs
+++ b/src/ReC.Client/Api/ProfileApi.cs
@@ -1,6 +1,7 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -13,7 +14,12 @@ namespace ReC.Client.Api
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
- public ProfileApi(HttpClient http) : base(http, "api/Profile")
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ public ProfileApi(HttpClient http, ILogger logger = null) : base(http, "api/Profile", logger)
+#else
+ public ProfileApi(HttpClient http, ILogger? logger = null) : base(http, "api/Profile", logger)
+#endif
{
}
diff --git a/src/ReC.Client/Api/RecActionApi.cs b/src/ReC.Client/Api/RecActionApi.cs
index 53d9a20..6aed328 100644
--- a/src/ReC.Client/Api/RecActionApi.cs
+++ b/src/ReC.Client/Api/RecActionApi.cs
@@ -1,6 +1,7 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -13,7 +14,12 @@ namespace ReC.Client.Api
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
- public RecActionApi(HttpClient http) : base(http, "api/RecAction")
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ public RecActionApi(HttpClient http, ILogger logger = null) : base(http, "api/RecAction", logger)
+#else
+ public RecActionApi(HttpClient http, ILogger? logger = null) : base(http, "api/RecAction", logger)
+#endif
{
}
@@ -30,7 +36,7 @@ namespace ReC.Client.Api
using (content)
using (var resp = await Http.PostAsync($"{ResourcePath}/invoke/{profileId}", content, cancellationToken))
{
- await ReCClientHelpers.EnsureSuccessAsync(resp, cancellationToken).ConfigureAwait(false);
+ await ReCClientHelpers.HandleResponseAsync(resp, Logger, cancellationToken).ConfigureAwait(false);
}
}
diff --git a/src/ReC.Client/Api/ResultApi.cs b/src/ReC.Client/Api/ResultApi.cs
index 37dca07..abced0c 100644
--- a/src/ReC.Client/Api/ResultApi.cs
+++ b/src/ReC.Client/Api/ResultApi.cs
@@ -1,6 +1,7 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace ReC.Client.Api
{
@@ -13,7 +14,12 @@ namespace ReC.Client.Api
/// Initializes a new instance of the class.
///
/// The HTTP client used for requests.
- public ResultApi(HttpClient http) : base(http, "api/Result")
+ /// An optional logger used to record API call outcomes.
+#if NETFRAMEWORK
+ public ResultApi(HttpClient http, ILogger logger = null) : base(http, "api/Result", logger)
+#else
+ public ResultApi(HttpClient http, ILogger? logger = null) : base(http, "api/Result", logger)
+#endif
{
}