private async Task <IObservable <object> > Subscribe(FellowLibrary.Crawler.MarketProvidersConfiguration configuration,
                                                             ResolveEventStreamContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException();
            }

            var marketProvider = context.GetArgument <int?>("marketProvider");

            if (!marketProvider.HasValue)
            {
                throw new ArgumentNullException();
            }

            var marketProviderConfiguration = configuration.FirstOrDefault(x => x.ID == marketProvider.Value);

            if (marketProviderConfiguration == null)
            {
                throw new ArgumentException();
            }

            var tradingPair = context.GetArgument <String>("tradingPair");

            if (String.IsNullOrEmpty(tradingPair))
            {
                throw new ArgumentNullException();
            }

            IObservable <object> observable = await FellowLibrary.Crawler.TradeEntrySubscription.Start(marketProviderConfiguration, tradingPair);

            return(observable);
        }
 public MarketFellowSubscription(FellowLibrary.Crawler.MarketProvidersConfiguration configuration)
 {
     FieldSubscribeAsync <TradeEntryType>("tradeEntry",
                                          resolve: context => context.Source as FellowLibrary.Models.TradeEntry,
                                          subscribeAsync: context => Subscribe(configuration, context),
                                          arguments: new QueryArguments(new QueryArgument <IntGraphType>()
     {
         Name = "marketProvider"
     },
                                                                        new QueryArgument <StringGraphType>()
     {
         Name = "tradingPair"
     })
                                          );
 }
예제 #3
0
        public MarketFellowQuery(DatabaseContext storeProvider, HttpClient httpClient, FellowLibrary.Crawler.MarketProvidersConfiguration marketProviderConfiguration)
        {
            Field <ListGraphType <MarketProviderType> >("marketProviders",
                                                        resolve: context => marketProviderConfiguration.Select(x => new FellowLibrary.Models.MarketProvider()
            {
                ID = x.ID, Name = x.Name
            }));

            FieldAsync <ListGraphType <TradingPairType> >("tradingPairs",
                                                          arguments: new QueryArguments(new QueryArgument <IntGraphType>()
            {
                Name = "marketProvider"
            }),
                                                          resolve: context => GetTradingPairs(httpClient, marketProviderConfiguration, context));

            Field <ListGraphType <TradeEntryType> >("tradingEntries",
                                                    arguments: new QueryArguments(new QueryArgument <IntGraphType>()
            {
                Name = "marketProvider"
            },
                                                                                  new QueryArgument <StringGraphType>()
            {
                Name = "tradingPair"
            }),
                                                    resolve: context => GetTradeEntries(storeProvider, context));
        }