Example #1
0
        public async Task <ConvertResponse> Convert(ConvertRequest request)
        {
            try
            {
                FindCurrencyRequest finCurrencyRequest = new FindCurrencyRequest
                {
                    Currencies = new CurrencyIdentifier[] { request.From, request.To }
                };

                var findCurrencyResponse = await currencyService.FindCurrency(finCurrencyRequest);

                if (findCurrencyResponse.Success)
                {
                    var from = findCurrencyResponse.Currencies[0];
                    var to   = findCurrencyResponse.Currencies[1];

                    var value = from.ConverterToOtherCurrency(to, request.Amount);

                    return(new ConvertResponse
                    {
                        Success = true,
                        Amount = request.Amount,
                        From = from,
                        To = to,
                        Value = value
                    });
                }
                return(new ConvertResponse
                {
                    Success = false,
                    Error = findCurrencyResponse.Error
                });
            }
            catch (Exception e)
            {
                return(new ConvertResponse
                {
                    Success = false,
                    Error = new Error
                    {
                        Message = e.Message,
                        Type = "Unspected"
                    }
                });
            }
        }
Example #2
0
        public async Task <FindCurrencyResponse> FindCurrency(FindCurrencyRequest request)
        {
            try
            {
                var client = CreateHttpClient();

                var query = HttpUtility.ParseQueryString(string.Empty);
                query["access_key"] = configuration.AccessKey;
                query["currencies"] = string.Join(@",", request.Currencies.Select(c => c.Code));
                var queryString = query.ToString();

                var httpRequest = new HttpRequestMessage(HttpMethod.Get, $"live?{queryString}");

                var response = await client.SendAsync(httpRequest);

                var body = await GetBodyContent <CurrencyLayerLiveCurrencyResponse>(response);

                return(new FindCurrencyResponse
                {
                    Success = body.Success,
                    Currencies = body.Error != null ? null :
                                 body.Quotes.Select(q => CreateCurrencyByQuoteAndIdentifiers(q, request.Currencies)).ToArray(),
                    Error = body.Error == null ? null : new Error
                    {
                        Type = body.Error.Type,
                        Message = body.Error.Info
                    },
                });
            }
            catch (Exception e)
            {
                return(new FindCurrencyResponse
                {
                    Success = false,
                    Error = new Error
                    {
                        Type = "Unspected",
                        Message = e.Message
                    },
                });
            }
        }