public BaseTest() { const string token = ""; Client = new HftApiClient("https://hft-apiv2-grpc.lykke.com:443"); Headers = new Metadata { { "Authorization", $"Bearer {token}" } }; }
public GetOrderTest(ITestOutputHelper testOutputHelper) { _testOutputHelper = testOutputHelper; const string token = ""; _client = new HftApiClient("https://hft-apiv2-grpc.lykke.com:443"); _headers = new Metadata { { "Authorization", $"Bearer {token}" } }; }
static async Task Main(string[] args) { var appArguments = TryGetAppArguments(args); if (appArguments == null) { return; } if (appArguments.StreamName == StreamName.Orderbooks && string.IsNullOrEmpty(appArguments.StreamKey)) { Console.WriteLine($"Stream key is required for orderbook stream"); return; } if (appArguments.StreamName.OneOf(StreamName.Balances, StreamName.Orders, StreamName.Trades) && string.IsNullOrEmpty(appArguments.Token)) { Console.WriteLine($"Token is required for {appArguments.StreamName.ToString()} stream"); return; } var client = new HftApiClient(appArguments.GrpcUrl); var headers = new Metadata(); if (!string.IsNullOrEmpty(appArguments.Token)) { headers.Add("Authorization", $"Bearer {appArguments.Token}"); } while (true) { try { switch (appArguments.StreamName) { case StreamName.Prices: { Console.WriteLine("Get price updates...."); var prices = client.PublicService.GetPriceUpdates(new Empty()); await foreach (var item in prices.ResponseStream.ReadAllAsync()) { Console.WriteLine($"{JsonConvert.SerializeObject(item)}"); } } break; case StreamName.Tickers: { Console.WriteLine("Get ticker updates...."); var tickers = client.PublicService.GetTickerUpdates(new Empty()); await foreach (var item in tickers.ResponseStream.ReadAllAsync()) { Console.WriteLine($"{JsonConvert.SerializeObject(item)}"); } } break; case StreamName.Orderbooks: { Console.WriteLine($"Get orderbook updates for asset pair: {appArguments.StreamKey}"); using var orderbooks = client.PublicService.GetOrderbookUpdates(new OrderbookUpdatesRequest { AssetPairId = appArguments.StreamKey }); await foreach (var item in orderbooks.ResponseStream.ReadAllAsync()) { Console.WriteLine($"{JsonConvert.SerializeObject(item)}"); } Console.WriteLine("test"); } break; case StreamName.Balances: { Console.WriteLine($"Get balance updates...."); using var orderbooks = client.PrivateService.GetBalanceUpdates(new Empty(), headers); await foreach (var item in orderbooks.ResponseStream.ReadAllAsync()) { Console.WriteLine($"{JsonConvert.SerializeObject(item.Balances)}"); } } break; case StreamName.Orders: { Console.WriteLine($"Get order updates...."); using var orders = client.PrivateService.GetOrderUpdates(new Empty(), headers); await foreach (var item in orders.ResponseStream.ReadAllAsync()) { Console.WriteLine($"{JsonConvert.SerializeObject(item.Orders)}"); } } break; case StreamName.Trades: { Console.WriteLine($"Get trade updates...."); using var orders = client.PrivateService.GetTradeUpdates(new Empty(), headers); await foreach (var item in orders.ResponseStream.ReadAllAsync()) { Console.WriteLine($"{JsonConvert.SerializeObject(item.Trades)}"); } } break; default: throw new ArgumentOutOfRangeException(); } Console.WriteLine("End of stream"); } catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled) { Console.WriteLine("Stream cancelled."); } catch (RpcException ex) when(ex.StatusCode == StatusCode.Internal) { Console.WriteLine($"Internal error: {ex.StatusCode}; {ex.Message}"); } catch (RpcException ex) { Console.WriteLine($"RpcException. {ex.Status}; {ex.StatusCode}"); Console.WriteLine(ex.ToString()); } catch (Exception ex) { Console.WriteLine($"exception: {ex.GetType().Name}"); Console.WriteLine(ex.ToString()); } await Task.Delay(5000); } }