예제 #1
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequestMessage req,
            ILogger log,
            CancellationToken cancellationToken)
        {
            var authHeader = req.Headers.Authorization;

            if (authHeader == null)
            {
                log.LogWarning("Missing or invalid authorization header!");
                return(new UnauthorizedResult());
            }

            bool isAuthorized = await authService.ValidateTokenAsync(authHeader.Parameter, cancellationToken);

            if (!isAuthorized)
            {
                log.LogWarning("Unauthorized call.");
                return(new UnauthorizedResult());
            }

            var command = new GetQuarantineListQuery();
            var result  = await mediator.Send(command, cancellationToken);

            return(new OkObjectResult(result));
        }
예제 #2
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequestMessage req,
            ILogger log,
            CancellationToken cancellationToken)
        {
            var qs = req.RequestUri.ParseQueryString();

            var allKeys = qs.AllKeys;

            if (!allKeys.Contains("apiKey"))
            {
                return(new BadRequestErrorMessageResult("Missing query param: apiKey"));
            }

            var apiKey = qs["apiKey"];

            bool isAuthorized = apiKey == Environment.GetEnvironmentVariable("NcziApiKey");

            if (!isAuthorized)
            {
                log.LogWarning("Unauthorized call.");
                return(new UnauthorizedResult());
            }

            var from    = DateTime.Parse(qs["since"]);
            var command = new GetQuarantineListQuery(from);
            var result  = await mediator.Send(command, cancellationToken);

            return(new OkObjectResult(result));
        }