public async Task Send(BitmexWebsocketChannel toChannel, MultiplexingMessageBase multiplexingMessage)
        {
            var message = new List <object>
            {
                (int)multiplexingMessage.MessageType,
                toChannel.ChannelId,
                toChannel.ChannelName
            };

            if (multiplexingMessage.Payload != null)
            {
                message.Add(multiplexingMessage.Payload);
            }

            var serialized = BitmexJsonSerializer.Serialize(message);

            try
            {
                await _communicator.Send(serialized).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                Log.Error(e, L($"Exception while sending message '{serialized}'. Error: {e.Message}"));
                throw;
            }
        }
예제 #2
0
        public Task Send <T>(T request) where T : RequestBase
        {
            BmxValidations.ValidateInput(request, nameof(request));

            var serialized = request.IsRaw ?
                             request.OperationString :
                             BitmexJsonSerializer.Serialize(request);

            return(_communicator.Send(serialized));
        }
        public void Enum_String_CamelCase_Test()
        {
            var c = new MyClass()
            {
                MyEnum = MyEnum.TestValue
            };

            var str = BitmexJsonSerializer.Serialize(c);

            str.Should().Be("{\"myEnum\":\"testValue\"}");
        }
예제 #4
0
        /// <summary>
        /// Serializes request and sends message via websocket communicator.
        /// It logs and re-throws every exception.
        /// </summary>
        /// <param name="request">Request/message to be sent</param>
        public async Task Send <T>(T request) where T : RequestBase
        {
            try
            {
                BmxValidations.ValidateInput(request, nameof(request));

                var serialized = request.IsRaw ?
                                 request.OperationString :
                                 BitmexJsonSerializer.Serialize(request);
                await _communicator.Send(serialized).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                Log.Error(e, L($"Exception while sending message '{request}'. Error: {e.Message}"));
                throw;
            }
        }
        public override string ToQueryString()
        {
            var baseQuery    = base.ToQueryString();
            var filterValues = Filter == null
                ? string.Empty
                : $"filter={HttpUtility.UrlEncode(BitmexJsonSerializer.Serialize(Filter))}";
            var currentQuery = $"{string.Join("&", filterValues)}";

            if (string.IsNullOrWhiteSpace(baseQuery))
            {
                return(currentQuery);
            }
            if (string.IsNullOrWhiteSpace(currentQuery))
            {
                return(baseQuery);
            }
            if (!string.IsNullOrWhiteSpace(currentQuery) && !string.IsNullOrWhiteSpace(baseQuery))
            {
                return(baseQuery + "&" + currentQuery);
            }
            return(string.Empty);
        }
예제 #6
0
 public SubscriptionRequest(SubscriptionType subscriptionType, string symbol)
     : base(OperationType.subscribe, $"{BitmexJsonSerializer.Serialize(subscriptionType).Trim('"')}:{symbol}")
 {
     SubscriptionType = subscriptionType;
     Symbol = symbol;
 }
예제 #7
0
 public string ToJson()
 {
     return(BitmexJsonSerializer.Serialize(this, GetType()));
 }
예제 #8
0
 public override string GetContent()
 {
     return(BitmexJsonSerializer.Serialize(this, GetType()));
 }