Example #1
0
        static void Main(string[] args)
        {
            var filePath = ConfigurationManager.AppSettings["FileLocation"];

            if (!File.Exists(filePath))
            {
                Console.WriteLine("file does not exist.\n\nPress any key to exit...");
            }
            else if (Path.GetExtension(filePath) != ".csv")
            {
                Console.WriteLine("File is not in CSV format. Please provide CSV format file.\n\nPress any key to exit...");
            }
            else
            {
                var client        = new FixerClient();
                var fileProcessor = new FileProcessor(client, filePath);
                Console.WriteLine("Please note: If any row in CSV file provided by user contains some invalid data then that row will be skipped. Information related to invalid data will be provided at the last with row number.\n\n");
                Printer(fileProcessor.FileReader());

                if (fileProcessor.ErrorList != null && fileProcessor.ErrorList.Count > 0)
                {
                    foreach (var item in fileProcessor.ErrorList)
                    {
                        Console.WriteLine(item);
                    }
                }
            }
            Console.Read();
        }
Example #2
0
        private Interpreter CreateInterpreter(string text)
        {
            var connectionStringFactory = new TestConnectionStringFactory();
            var currencyService         = new CurrencyService(connectionStringFactory);
            var lexer             = new Lexer(text, currencyService);
            var tokenQueueFactory = new TokenQueueFactory();
            var parser            = new Parser(lexer, tokenQueueFactory);

            var coinMarketCapClient          = new CoinMarketCapClient();
            var fixerClient                  = new FixerClient();
            var currencyConverter            = new CurrencyConverter(coinMarketCapClient, fixerClient);
            var currencyAmountTokenConverter = new TokenConverter(currencyConverter, currencyService, coinMarketCapClient, fixerClient);

            return(new Interpreter(parser, currencyAmountTokenConverter));
        }
        static async Task Main(string[] args)
        {
            var updateCurencies = args.SingleOrDefault(a => a == "-u");

            var context = new RatesContextFactory().CreateDbContext(args);
            var api     = new FixerClient(new HttpClient());

            if (updateCurencies is not null)
            {
                var symbolsResponse = await api.GetSymbols();

                if (!symbolsResponse.Success)
                {
                    Console.WriteLine(symbolsResponse.Error.Info);
                    return;
                }

                await UpdateCurrencies(context, symbolsResponse.Content.Symbols);

                Console.WriteLine("Updated symbols");
            }

            var response = await api.GetLatest();

            if (!response.Success)
            {
                Console.WriteLine(response.Error.Info);
                return;
            }
            Console.WriteLine("Got latest rates");

            var currencies = await context.Currencies.ToListAsync();

            var rates = response.Content.Rates.Select(r => new Rate
            {
                Currency = currencies.SingleOrDefault(c => c.Symbol == r.Key) ?? new Currency {
                    Symbol = r.Key
                },
                Date      = response.Content.Date,
                Timestamp = response.Content.Timestamp,
                Value     = r.Value
            });

            context.AddRange(rates);
            await context.SaveChangesAsync();

            Console.WriteLine(rates.Count() + " rates saved");
        }
Example #4
0
        static async Task Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("Argument(s) missing (currency from, currency to, amount)");
                return;
            }
            var     currencyFrom = args[0]?.ToUpper();
            var     currencyTo   = args[1]?.ToUpper();
            decimal amount;

            try
            {
                amount = Convert.ToDecimal(args[2]);
            }
            catch (Exception e)
            {
                Console.WriteLine("Could not parse amount: " + e.Message);
                return;
            }

            using var api = new FixerClient(new HttpClient());

            var response = await api.GetLatest(currencyFrom, currencyTo);

            if (!response.Success)
            {
                Console.WriteLine(response.Error.Info);
                return;
            }

            var latest = response.Content;

            if (latest.Rates.Count != 2)
            {
                Console.WriteLine("One or more symbols not valid");
                return;
            }
            Console.WriteLine("Got latest rates");

            var converter       = new CurrencyConverter(latest.Rates);
            var convertedAmount = converter.Convert(currencyFrom, currencyTo, amount);

            Console.WriteLine($"{amount:0.00} {currencyFrom} is {convertedAmount:0.00} {currencyTo}");
        }
Example #5
0
 public FixerClientTest()
 {
     this.client = new FixerClient();
 }
Example #6
0
        static async Task Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

            if (args.Length < 3)
            {
                Console.WriteLine("Argument(s) missing (currency from, currency to, amount)");
                return;
            }
            var      currencyFrom = args[0]?.ToUpper();
            var      currencyTo   = args[1]?.ToUpper();
            decimal  amount;
            DateTime?date = null;

            try
            {
                amount = Convert.ToDecimal(args[2]);
                if (args.Length == 4)
                {
                    date = Convert.ToDateTime(args[3]);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return;
            }


            using var api = new FixerClient(new HttpClient());

            FixerResponse <RatesResponse> response;

            if (date is not null)
            {
                response = await api.GetHistorical((DateTime)date, currencyFrom, currencyTo);
            }
            else
            {
                response = await api.GetLatest(currencyFrom, currencyTo);
            }


            if (!response.Success)
            {
                Console.WriteLine(response.Error.Info);
                return;
            }

            if (response.Content.Rates.Count != 2)
            {
                Console.WriteLine("One or more currency symbols not valid");
                return;
            }

            if (date is not null)
            {
                Console.WriteLine($"Got rates from {(DateTime)date:yyyy-MM-dd}");
            }
            else
            {
                Console.WriteLine("Got latest rates");
            }

            var converter       = new CurrencyConverter(response.Content.Rates);
            var convertedAmount = converter.Convert(currencyFrom, currencyTo, amount);

            Console.WriteLine($"{amount:0.00} {currencyFrom} {(date.HasValue ? "was" : "is")} {convertedAmount:0.00} {currencyTo}");
        }