Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }