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" }) ); }
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)); }