-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSiteBasedResourceFunction.cs
More file actions
29 lines (25 loc) · 1.5 KB
/
SiteBasedResourceFunction.cs
File metadata and controls
29 lines (25 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using FluentValidation;
using Microsoft.AspNetCore.Http;
using Nhs.Appointments.Api.Auth;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Nhs.Appointments.Api.Models;
using System.Collections.Generic;
using Nhs.Appointments.Core.Users;
using Nhs.Appointments.Core.Helpers;
namespace Nhs.Appointments.Api.Functions.HttpFunctions;
public abstract class SiteBasedResourceFunction<TResponse>(IValidator<SiteBasedResourceRequest> validator, IUserContextProvider userContextProvider, ILogger logger, IMetricsRecorder metricsRecorder) : BaseApiFunction<SiteBasedResourceRequest, TResponse>(validator, userContextProvider, logger, metricsRecorder)
{
protected override Task<(IReadOnlyCollection<ErrorMessageResponseItem> errors, SiteBasedResourceRequest request)> ReadRequestAsync(HttpRequest req)
{
var requestedScope = req.Query.Keys.Contains("scope") ? req.Query["scope"].ToString() : "*";
var requestedIgnoreCache = req.Query.Keys.Contains("ignoreCache") && bool.Parse(req.Query["ignoreCache"]);
if (req.Query.Keys.Contains("site"))
{
var site = req.Query["site"];
return Task.FromResult((ErrorMessageResponseItem.None, new SiteBasedResourceRequest(site, requestedIgnoreCache, requestedScope)));
}
var siteId = RestUriHelper.GetResourceIdFromPath(req.Path.ToUriComponent(), "sites");
return Task.FromResult((ErrorMessageResponseItem.None, new SiteBasedResourceRequest(siteId, requestedIgnoreCache, requestedScope)));
}
}