.Net Core 2.1 library project which serve TCMB currency data.
- Language Code: C#
- Fluent Interface Pattern is implemented on this project.
- Test project implemented on Xunit.
CurrencyService _currencyService = new CurrencyService();
var currencyList = _currencyService.Initialize(inputDate).GetList();//inputDate is optional.
//When a currency list is requested for special date, fill the inputDate param
var USDCurrency = _currencyService.Initialize().Filter(x => x.Code.Equals("USD")).GetFirst();
var NameStartSCurrencyList = _currencyService.Initialize().Order(x => x.Code, SortOrder.Descending)//result list
.Filter(x => x.Code.StartsWith("S")).GetList();
var export = _currencyService.Initialize().Filter(x => x.Code.StartsWith("S"))//export xml, json or csv
.Order(x => x.Code, SortOrder.Ascending).Export(ExportType.Xml);
- The reason I use "Fluent Interface Pattern" is to be able to use sorting and filtering operations easily.
- When you initialize the service , you can do sort or filter action on currency list.
- When you want to get result list , then call GetList() function after the sort, filter or initialize command.
- If you want to export result like Json, Xml or Csv , then call Export(ExportType parameter) function after the sort, filter or initialize command.
- If you send public holiday on Turkey or weekend(Saturday and Sunday) date , you will get exception like "The date specified may be a weekend or a public holiday!"
Execute this command on cmd for running all test
dotnet test .\TCMBCurrencyService\Test\Test.csproj
public class Currency
{
public string Name { get; }
public string Code { get; }
public string CrossRateName { get; }
public double ForexBuying { get; }
public double ForexSelling { get; }
public double BanknoteBuying { get; }
public double BanknoteSelling { get; }
public double CrossRateUSD { get; }
public double CrossRateOther { get; }
}