public async Task <IEnumerable <string> > Handle(DataSetRequest message)
        {
            var container = new DataSetContainer(_dataSetResolver, message.Properties);

            container.AddRange(DataSetTypes);

            var messages = await container.Execute(container.DatasetsByType.Keys.First(t => t.FullName == message.DataSet));

            return(messages);
        }
        public async Task <StockData> GetStockDataAsync(string stockId, string stockExchange, DateTime fromDate, DateTime toDate)
        {
            HttpClient client     = new HttpClient();
            string     baseUrl    = $"https://www.quandl.com/api/v3/datasets/{stockExchange}/{stockId}.json";
            var        uriBuilder = new UriBuilder(baseUrl);

            var query = HttpUtility.ParseQueryString(uriBuilder.Query);

            if (fromDate != null)
            {
                query["start_date"] = fromDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
            }

            if (toDate != null)
            {
                query["end_date"] = toDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
            }

            query["api_key"] = ApiKey;
            uriBuilder.Query = query.ToString();

            HttpResponseMessage response = await client.GetAsync(uriBuilder.ToString());

            if (!response.IsSuccessStatusCode)
            {
                return(null);
            }

            string jsonText = await response.Content.ReadAsStringAsync();

            DataSetContainer dataSetContainer = JsonConvert.DeserializeObject <DataSetContainer>(jsonText);

            StockData stockData = new StockData
            {
                Id            = dataSetContainer.dataset.DatasetCode,
                Name          = dataSetContainer.dataset.Name,
                Description   = dataSetContainer.dataset.Description,
                StockExchange = dataSetContainer.dataset.DatabaseCode,
                TimeSeries    = new List <TimeSeriesItem>()
            };

            stockData.TimeSeries = ExtractTimeSeriesData(dataSetContainer.dataset);

            return(stockData);
        }
 static DataSetRequestHandler()
 {
     DataSetTypes = DataSetContainer.DiscoverDataSets();
 }
 static TestDataController()
 {
     DataSetTypes = DataSetContainer.DiscoverDataSets();
 }