Exemplo n.º 1
0
        /// <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));
        }