public async Task UpdateTurnipPrices(Day day, int min, int max) { day ??= GetCurrentWeek()[(int)DateTime.Now.DayOfWeek]; var key = await SettingsService.GetPublicKey(); var turnipUpdate = new TurnipUpdate { AMPrice = day.PriceAM ?? 0, PMPrice = day.PricePM ?? 0, BuyPrice = day.BuyPrice ?? 0, Year = DateTime.Now.Year, DayOfYear = DateTime.Now.DayOfYear, PublicKey = key, TurnipUpdateTimeUTC = DateTime.UtcNow, MaxPrediction = max, MinPrediction = min }; var content = JsonConvert.SerializeObject(turnipUpdate); await PutAsync($"api/UpdateTurnipPrices?code={App.PutUpdateTurnipPricesKey}", content); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "put", Route = null)] HttpRequest req, [Table("User")] CloudTable cloudTable, ILogger log) { log.LogInformation($"C# HTTP trigger {nameof(UpdateTurnipPrices)} function processed a request."); var privateKey = Utils.ParseToken(req); if (privateKey == null) { return(new UnauthorizedResult()); } TurnipUpdate turnipUpdate = null; try { var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); turnipUpdate = JsonConvert.DeserializeObject <TurnipUpdate>(requestBody); } catch (Exception ex) { log.LogInformation("Unable to deserialize turnip update: " + ex.Message); } if (turnipUpdate == null || string.IsNullOrWhiteSpace(turnipUpdate.PublicKey)) { return(new BadRequestErrorMessageResult("Invalid data to process request")); } UserEntity userEntity = null; try { userEntity = await Utils.FindUserEntity(cloudTable, privateKey, turnipUpdate.PublicKey); } catch (Exception ex) { log.LogInformation($"User doesn't exist - Error {nameof(UpdateTurnipPrices)} - Error: " + ex.Message); //user does not exist? correct error? return(new BadRequestErrorMessageResult("Unable to locate your user account.")); } if (userEntity == null) { return(new BadRequestErrorMessageResult("Unable to locate your user account.")); } userEntity.AMPrice = turnipUpdate.AMPrice; userEntity.PMPrice = turnipUpdate.PMPrice; userEntity.BuyPrice = turnipUpdate.BuyPrice; userEntity.TurnipUpdateDayOfYear = turnipUpdate.DayOfYear; userEntity.TurnipUpdateYear = turnipUpdate.Year; userEntity.TurnipUpdateTimeUTC = turnipUpdate.TurnipUpdateTimeUTC; userEntity.MaxPrediction = turnipUpdate.MaxPrediction; userEntity.MinPrediction = turnipUpdate.MinPrediction; try { await Utils.MergeUserEntity(cloudTable, userEntity); } catch (Exception ex) { log.LogError("Unable to merge user entity: " + ex.Message); return(new InternalServerErrorResult()); } return(new OkObjectResult("User Turnip Prices Updated")); }