public AvailableRateProvider(string id, string name, string url, RateSource source) { Id = id; Name = name; Url = url; Source = source; }
private async Task GetRatesAsync( RateSource rateSource, ICollector <RateEntity> queueCollector, ILogger logger ) { var rateDefinitions = Rate.FetchAll(); if (!_ratesServices.TryGetValue(rateSource, out var service)) { throw new ArgumentException($"No service available for rate source {rateSource}"); } // chose rates for this source var rateLookups = rateDefinitions.Where(r => r.Source == rateSource); // fetch rates var rates = await service.GetRates(rateLookups); // save to table storage & send queue message logger.LogInformation($"Got {rates.Count()} rates. Saving to storage."); foreach (var rate in rates) { await rate.SaveAsync(); queueCollector.Add(rate); var rateHistory = new RateHistory(rate.Ticker, rate.Value); await rateHistory.SaveAsync(); } }
public double GetRate(string movieId, RateSource source) { switch (source) { case RateSource.Average: return(5); case RateSource.IMDB: return(7.3); case RateSource.Kinopoisk: return(3.2); } return(0.0); }
public async Task <string> GetRate(RateSource source, [Parent] Movie movie) { var url = $"{BaseUrl}/{movie.MovieId}/{source}"; var request = new HttpRequestMessage(HttpMethod.Get, url); try { var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); if (response.IsSuccessStatusCode) { Console.WriteLine("The request to the rate service is done"); return(await response.Content.ReadAsStringAsync()); } } catch (Exception ex) { Console.WriteLine($"Rate getting ended with an error {ex}"); } return("0.0"); }
public ActionResult <double> Get(string movieId, RateSource source) { return(_service.GetRate(movieId, source)); }
public RateContent(RateSource rateSource, RateContentValue rateContentValue) { RateSource = rateSource; Content = rateContentValue; }