public static async Task <BitcoinPriceUpdatedEvent> Run([TimerTrigger("0 */1 * * * *")] TimerInfo myTimer, ILogger log) { log.LogInformation($"C# Timer trigger function executed at: {DateTime.UtcNow}"); using (var httpClient = new HttpClient()) { var request = new HttpRequestMessage(HttpMethod.Get, BitcoinApiUrl); var response = await httpClient.SendAsync(request); if (response.StatusCode != System.Net.HttpStatusCode.OK) { throw new Exception($"Request to CoinDesk failed with {response.StatusCode}"); } var responseString = await response.Content.ReadAsStringAsync(); var bitcoinData = JsonConvert.DeserializeObject <BitcoinData>(responseString); var result = new BitcoinPriceUpdatedEvent() { RateUsd = bitcoinData.Bpi["USD"].Rate_float, Timestamp = DateTime.UtcNow }; log.LogInformation($"{result.RateUsd}@{result.Timestamp}"); return(result); } }
public static async Task <BitcoinPriceInfo> Run([QueueTrigger(nameof(BitcoinPriceUpdatedEvent), Connection = "AzureWebJobsStorage")] BitcoinPriceUpdatedEvent bitcoinPriceUpdatedEvent, ILogger log) { log.LogInformation($"Consuming price: {bitcoinPriceUpdatedEvent.RateUsd}@{bitcoinPriceUpdatedEvent.Timestamp}"); var usdToPlnRate = await GetCurrentNbpRate(); var bitcoinPlnPrice = Decimal.Round(usdToPlnRate * bitcoinPriceUpdatedEvent.RateUsd, 2); log.LogInformation($"Saving 1BTC = {bitcoinPlnPrice} PLN at {bitcoinPriceUpdatedEvent.Timestamp}"); var result = new BitcoinPriceInfo(bitcoinPriceUpdatedEvent.RateUsd, bitcoinPlnPrice, bitcoinPriceUpdatedEvent.Timestamp); return(result); }