static public ExchangeCallback CreateCallback(IExchangeMarketData exchangeMarketData, IEventBus eventBus) { return((exchangeId, baseCurrency, quoteCurrency, info) => { WriteMarketData(exchangeId, baseCurrency, quoteCurrency, info, exchangeMarketData).Wait(); try { if (!String.IsNullOrEmpty(exchangeId)) { var @event = new ExchangeOrderBookUpdatedIntegrationEvent( Int32.Parse(exchangeId), baseCurrency, quoteCurrency, exchangeMarketData.GetMarketData(exchangeId, baseCurrency, quoteCurrency) ); eventBus.Publish(@event); //.Publish(new TimeForUpdateBalanceIntegrationEvent()); } } catch (Exception ex) { Debug.WriteLine("Publish Event: ExchangeOrderBookUpdatedIntegrationEvent. \n" + "Error message: " + ex.Message); } }); }
static public ExchangeCallback CreateDecodeCallback(IExchangeMarketData exchangeMarketData) { return((exchangeId, baseCurrency, quoteCurrency, info) => { WriteMarketData(exchangeId, baseCurrency, quoteCurrency, Decode(info), exchangeMarketData).Wait(); }); }
public WebsocketHostService(IWebsocketService websocketService, IOptions <ExchangeApiSetting> exchangeApiSetting, IExchangeMarketData exchangeMarketData, IExchangeBalanceData exchangeBalanceData, IExchangeApiClient exchangeApiClient) { _websocketService = websocketService; _exchangeApiSettings = exchangeApiSetting; _exchangeMarketData = exchangeMarketData; _exchangeBalanceData = exchangeBalanceData; _exchangeApiClient = exchangeApiClient; }
public WebsocketService(IExchangeMarketData exchangeMarketData, IEventBus eventBus) { //Injection _exchangeMarketData = exchangeMarketData ?? throw new ArgumentNullException(nameof(exchangeMarketData)); _eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus)); //Set delegates _updateAndDecodeExchangeState = CreateDecodeCallback(_exchangeMarketData); _updateExchangeState = CreateCallback(_exchangeMarketData, _eventBus); //Bittrex _hubConnection = new HubConnection("https://socket.bittrex.com/signalr"); _hubProxy = _hubConnection.CreateHubProxy("c2"); _hubConnection.Start().Wait(); //Binance _binanceHubConnection = new BinanceSocketClient(); //Bitstamp _bitstampHubConnection = new Pusher("de504dc5763aeef9ff52"); _bitstampHubConnection.Connect(); //Poloniex _poloniexHubConnection = new PoloniexChannel(); _poloniexHubConnection.ConnectAsync().Wait(); //Kucoin using (var client = new HttpClient()) { var tokenAcquireUri = "https://kitchen.kucoin.com/v1/bullet/usercenter/loginUser?protocol=websocket&encrypt=true"; using (HttpResponseMessage res = client.GetAsync(tokenAcquireUri).Result) { using (HttpContent content = res.Content) { var jRes = JObject.Parse( content.ReadAsStringAsync().Result ); var bulletToken = jRes["data"]["bulletToken"].ToString(); _kucoinHubConnection = new WebSocket( "wss://push1.kucoin.com/endpoint?bulletToken=" + bulletToken + "&format=json&resource=api"); _kucoinHubConnection.Connect(); var success = _kucoinHubConnection.Ping(); } } } }
private static async Task WriteMarketData(string exchangeId, string baseCurrency, string quoteCurrency, string data, IExchangeMarketData exchangeMarketData) { await Task.Run(() => { exchangeMarketData.WriteMarketData(exchangeId, baseCurrency, quoteCurrency, data); }); }
public ExchangeQueries(IExchangeMarketData exchangeMarketData) { //_connectionString = !string.IsNullOrWhiteSpace(constr) ? constr : throw new ArgumentNullException(nameof(constr)); _marketData = exchangeMarketData; }