Exemplo n.º 1
0
 public AvailableRateProvider(string id, string name, string url, RateSource source)
 {
     Id     = id;
     Name   = name;
     Url    = url;
     Source = source;
 }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
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");
        }
Exemplo n.º 5
0
 public ActionResult <double> Get(string movieId, RateSource source)
 {
     return(_service.GetRate(movieId, source));
 }
Exemplo n.º 6
0
 public RateContent(RateSource rateSource, RateContentValue rateContentValue)
 {
     RateSource = rateSource;
     Content = rateContentValue;
 }