コード例 #1
0
ファイル: LivecoinClient.cs プロジェクト: docpillman/OsEngine
        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);
        }
コード例 #2
0
ファイル: LivecoinClient.cs プロジェクト: docpillman/OsEngine
        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);
        }
コード例 #3
0
ファイル: LivecoinClient.cs プロジェクト: docpillman/OsEngine
        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);
        }
コード例 #4
0
        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);
        }