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)); } }
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)); } }