예제 #1
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("Received log job request.");

            var claims = await _authenticationHelper.DecodeToken(req.Headers["Authorization"]);

            if (claims == null || !claims.Identity.IsAuthenticated)
            {
                log.LogInformation("Unauthorised request received.");
                return(new UnauthorizedResult());
            }

            NewJob newJob;

            try
            {
                newJob = JsonConvert.DeserializeObject <NewJob>(await req.ReadAsStringAsync());
            }
            catch (JsonException)
            {
                return(new BadRequestResult());
            }

            var val = new NewJobValidator();
            var res = await val.ValidateAsync(newJob);

            if (!res.IsValid)
            {
                log.LogInformation("Invalid request received.");
                return(new BadRequestResult());
            }

            var storeRes = await _shiftService.AddJob(claims.Identity.Name, newJob);

            if (storeRes)
            {
                return(new OkResult());
            }
            return(new BadRequestResult());
        }