aboutsummaryrefslogtreecommitdiff
path: root/lib/VNLib.Data.Caching.Extensions/src/ApiModel/CacheSiteAdapter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNLib.Data.Caching.Extensions/src/ApiModel/CacheSiteAdapter.cs')
-rw-r--r--lib/VNLib.Data.Caching.Extensions/src/ApiModel/CacheSiteAdapter.cs38
1 files changed, 36 insertions, 2 deletions
diff --git a/lib/VNLib.Data.Caching.Extensions/src/ApiModel/CacheSiteAdapter.cs b/lib/VNLib.Data.Caching.Extensions/src/ApiModel/CacheSiteAdapter.cs
index 99acfd5..6edb912 100644
--- a/lib/VNLib.Data.Caching.Extensions/src/ApiModel/CacheSiteAdapter.cs
+++ b/lib/VNLib.Data.Caching.Extensions/src/ApiModel/CacheSiteAdapter.cs
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2023 Vaughn Nugent
+* Copyright (c) 2024 Vaughn Nugent
*
* Library: VNLib
* Package: VNLib.Data.Caching.Extensions
@@ -22,7 +22,9 @@
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
+using System;
using System.Net;
+using System.Security;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -39,6 +41,22 @@ namespace VNLib.Data.Caching.Extensions.ApiModel
/// </summary>
internal sealed class CacheSiteAdapter : RestSiteAdapterBase
{
+ /*
+ * Lazy to defer errors for debuggong
+ */
+ private static readonly Lazy<CacheSiteAdapter> _lazy = new(() => ConfigureAdapter(2));
+
+ internal static CacheSiteAdapter Instance => _lazy.Value;
+
+ private static CacheSiteAdapter ConfigureAdapter(int maxClients)
+ {
+ CacheSiteAdapter adapter = new(maxClients);
+ //Configure the site endpoints
+ adapter.BuildEndpoints(ServiceEndpoints.Definition);
+ return adapter;
+ }
+
+
protected override RestClientPool Pool { get; }
public CacheSiteAdapter(int maxClients)
@@ -55,7 +73,23 @@ namespace VNLib.Data.Caching.Extensions.ApiModel
}
public override void OnResponse(RestResponse response)
- { }
+ {
+ switch(response.StatusCode)
+ {
+ case HttpStatusCode.OK:
+ break;
+ case HttpStatusCode.Unauthorized:
+ throw new SecurityException("Unauthorized access to cache service");
+ case HttpStatusCode.Forbidden:
+ throw new SecurityException("Forbidden access to cache service");
+ case HttpStatusCode.NotFound:
+ throw new InvalidOperationException("Cache service not found");
+ case HttpStatusCode.InternalServerError:
+ throw new InvalidOperationException("Cache service internal error");
+ default:
+ throw new InvalidOperationException($"Cache service error: {response.StatusCode}");
+ }
+ }
public override Task WaitAsync(CancellationToken cancellation = default)
{