private void WsClient_Subscribe <T>(string token, WsRequestMetaData.WsRequestMsgType requestType, T message) { WsRequestMetaData meta; byte[] msg; using (MemoryStream msgStream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(msgStream, message); msg = msgStream.ToArray(); } meta = new WsRequestMetaData { RequestType = requestType, Token = token }; WsRequest request = new WsRequest { Meta = meta, Msg = msg }; SendRequest(request); }
private void WsClient_Login(String key, String secret, int ttl) { byte[] msg; LoginRequest message = new LoginRequest { ExpireControl = new RequestExpired { Now = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds, Ttl = ttl }, ApiKey = key }; using (MemoryStream msgStream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(msgStream, message); msg = msgStream.ToArray(); } byte[] sign = ComputeHash(secret, msg); var meta = new WsRequestMetaData { RequestType = WsRequestMetaData.WsRequestMsgType.Login, Token = "Login request", Sign = sign }; WsRequest request = new WsRequest { Meta = meta, Msg = msg }; SendRequest(request); }
private void SendAuthMessage <T>(string secret, string token, WsRequestMetaData.WsRequestMsgType requestType, T message) { WsRequestMetaData meta; byte[] msg; using (MemoryStream msgStream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(msgStream, message); msg = msgStream.ToArray(); } byte[] sign = ComputeHash(secret, msg); meta = new WsRequestMetaData { RequestType = requestType, Token = token, Sign = sign }; WsRequest request = new WsRequest { Meta = meta, Msg = msg }; SendRequest(request); }
private BinaryData BuildRequest <T>(T?request, string token, WsRequestMsgType requestType, bool signed) where T : class { var result = new BinaryData(); result._buildData = () => { byte[] msg = Array.Empty <byte>(); var meta = new WsRequestMetaData() { RequestType = requestType, Token = token }; if (request is IExpireControl expireControl) { expireControl.ExpireControl = new RequestExpired { Now = DateTime.UtcNow, Ttl = _timeToLive }; } if (request != null) { using (MemoryStream msgStream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(msgStream, request); msg = msgStream.ToArray(); } } WsRequest wsRequest = new WsRequest() { Meta = meta, Msg = msg }; if (signed) { wsRequest.Meta.Sign = authProvider?.Sign(wsRequest.Msg); } using (var requestStream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(requestStream, wsRequest); return(System.Convert.ToBase64String(requestStream.ToArray())); } }; result.Token = token; return(result); }