/// <summary> /// Get all NASDAQ and other symbols handler. /// </summary> /// <param name="request">The query.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>String.</returns> public async Task <GetAllSymbolsNasdaq.Result> Handle(GetAllSymbolsNasdaq.Query request, CancellationToken cancellationToken) { var nasdaqSymbolTask = this.GetItemsAsync <NasdaqSymbol>( uri: NasdaqListedUri, csvConfiguration: CsvConfigurationPipe, cancellationToken: cancellationToken, createItem: (csv) => { return(new NasdaqSymbol( symbol: csv[0].Trim(), securityName: csv[1].Trim(), marketCategory: csv.GetField <char>(2), testIssue: Parse.Boolean(csv[3]), financialStatus: csv.GetField <char>(4), roundLotSize: csv.GetField <int>(5), etf: Parse.Boolean(csv[6]), nextShares: Parse.Boolean(csv[7]))); }); var otherSymbolTask = this.GetItemsAsync <OtherSymbol>( uri: OtherListedUri, csvConfiguration: CsvConfigurationPipe, cancellationToken: cancellationToken, createItem: (csv) => { return(new OtherSymbol( actSymbol: csv[0].Trim(), securityName: csv[1].Trim(), exchange: csv.GetField <char>(2), cqsSymbol: csv[3].Trim(), etf: Parse.Boolean(csv[4]), roundLotSize: csv.GetField <int>(5), testIssue: Parse.Boolean(csv[6]), nasdaqSymbol: csv[7].Trim())); }); await Task.WhenAll(nasdaqSymbolTask, otherSymbolTask); return(new GetAllSymbolsNasdaq.Result( nasdaqSymbols: nasdaqSymbolTask.Result.Item1, nasdaqSymbolsFileCreationTime: nasdaqSymbolTask.Result.Item2, otherSymbols: otherSymbolTask.Result.Item1, otherSymbolsFileCreationTime: otherSymbolTask.Result.Item2)); }