Exemplo n.º 1
0
        public async Task <IActionResult> RunAsync(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "nonce")] HttpRequest req,
            ILogger log, CancellationToken cancellationToken)
        {
            try
            {
                var data = await req.DeserializeJsonBody <StoreNonceRequest>();

                var verificationQuery = new VerifyRequestQuery(data, req);
                var isVerified        = await mediator.Send(verificationQuery, cancellationToken);

                if (!isVerified)
                {
                    return(new UnauthorizedResult());
                }
                var command = new StoreNonceCommand(data.CovidPass);

                await mediator.Send(command, cancellationToken);

                var query      = new RetrieveNonceQuery(data.CovidPass);
                var nonceEntry = await mediator.Send(query, cancellationToken);

                return(new OkObjectResult(new StoreNonceResponse
                {
                    Nonce = nonceEntry.Nonce
                }));
            }
            catch (DomainException ex)
            {
                var errors = validation.ProcessErrors(ex);
                return(new BadRequestObjectResult(errors));
            }
        }
        public async Task <IActionResult> RunAsync([HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "presencecheck")]
                                                   HttpRequest req,
                                                   ILogger log, CancellationToken cancellationToken)
        {
            try
            {
                var data = await req.DeserializeJsonBody <UpdatePresenceCheckRequest>();

                var verificationQuery = new VerifyRequestQuery(data, req);
                var isVerified        = await mediator.Send(verificationQuery, cancellationToken);

                if (!isVerified)
                {
                    return(new UnauthorizedResult());
                }

                var command = new UpdatePresenceCheckCommand(data.ProfileId, data.DeviceId, data.CovidPass, data.Status, data.Nonce);
                await mediator.Send(command, cancellationToken);

                return(new OkObjectResult(new UpdatePresenceCheckResponse()));
            }
            catch (DomainException ex)
            {
                var errors = validation.ProcessErrors(ex);
                return(new BadRequestObjectResult(errors));
            }
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "areaexit")] HttpRequest req,
            ILogger log, CancellationToken cancellationToken)
        {
            try
            {
                var data = await req.DeserializeJsonBody <NotifyAreaExitRequest>();

                var verificationQuery = new VerifyRequestQuery(data, req);
                var isVerified        = await mediator.Send(verificationQuery, cancellationToken);

                if (!isVerified)
                {
                    return(new UnauthorizedResult());
                }

                var command = new NotifyAreaExitCommand(data.ProfileId, data.DeviceId, data.Severity, data.RecordTimestamp);
                await mediator.Send(command, cancellationToken);

                return(new OkResult());
            }
            catch (DomainException ex)
            {
                var errors = validation.ProcessErrors(ex);
                return(new BadRequestObjectResult(errors));
            }
        }
        public async Task <IActionResult> RunAsync([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "quarantine")]
                                                   HttpRequest req,
                                                   ILogger log, CancellationToken cancellationToken)
        {
            try
            {
                //
                if (!req.Query.TryGetValue("profileId", out var profileIdString))
                {
                    return(new BadRequestErrorMessageResult("Missing query param: profileId"));
                }

                if (!uint.TryParse(profileIdString, out var profileId))
                {
                    return(new BadRequestErrorMessageResult($"Bad query param type: profileId. Cannot be cast to {profileId.GetType()}"));
                }

                //
                if (!req.Query.TryGetValue("deviceId", out var deviceId))
                {
                    return(new BadRequestErrorMessageResult("Missing query param: deviceId"));
                }

                var data = new GetQuarantineRequest
                {
                    ProfileId = profileId,
                    DeviceId  = deviceId
                };

                var verificationQuery = new VerifyRequestQuery(data, req);
                var isVerified        = await mediator.Send(verificationQuery, cancellationToken);

                if (!isVerified)
                {
                    return(new UnauthorizedResult());
                }

                var query    = new GetQuarantineQuery(data.ProfileId, data.DeviceId);
                var response = await mediator.Send(query, cancellationToken);

                if (response == null)
                {
                    return(new NotFoundResult());
                }

                return(new OkObjectResult(response));
            }
            catch (DomainException ex)
            {
                var errors = validation.ProcessErrors(ex);
                return(new BadRequestObjectResult(errors));
            }
        }