public static bool TryHandle(string response, Subject <OrdersResponse> subject)
        {
            if (!FtxJsonSerializer.ContainsValue(response, "orders"))
            {
                return(false);
            }

            var parsed = FtxJsonSerializer.Deserialize <OrdersResponse>(response);

            subject.OnNext(parsed);
            return(true);
        }
Exemplo n.º 2
0
        internal static bool TryHandle(string response, ISubject <OrderBookUpdateResponse> subject, string topicName)
        {
            if (!FtxJsonSerializer.ContainsValue(response, topicName) ||
                !FtxJsonSerializer.ContainsValue(response, "orderbook"))
            {
                return(false);
            }

            var parsed = FtxJsonSerializer.Deserialize <OrderBookUpdateResponse>(response);

            subject.OnNext(parsed);
            return(true);
        }
        internal static bool TryHandle(string response, Subject <ErrorResponse> subject)
        {
            if (!FtxJsonSerializer.ContainsProperty(response, "error"))
            {
                return(false);
            }

            var error = JsonSerializer.Deserialize <ErrorResponse>(response);

            Log.Error($"Error received - message: {error.Msg}, code: {error.Code}");
            subject.OnNext(error);
            return(true);
        }
        internal static bool TryHandle(string response, ISubject <SubscribedResponse> subject)
        {
            if (!FtxJsonSerializer.ContainsValue(response, "subscribed") &&
                !FtxJsonSerializer.ContainsValue(response, "unsubscribed"))
            {
                return(false);
            }

            var parsed = FtxJsonSerializer.Deserialize <SubscribedResponse>(response);

            subject.OnNext(parsed);
            return(true);
        }
        internal static bool TryHandle(string response, ISubject <MarketsResponse> subject)
        {
            // if (!FtxJsonSerializer.ContainsValue(response, "partial") ||
            //     !FtxJsonSerializer.ContainsValue(response, "markets"))
            if (!FtxJsonSerializer.ContainsValue(response, "markets"))
            {
                return(false);
            }

            var parsed = FtxJsonSerializer.Deserialize <MarketsResponse>(response);

            subject.OnNext(parsed);

            return(true);
        }
        /// <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 void Send <T>(T request) where T : RequestBase
        {
            try
            {
                FtxValidations.ValidateInput(request, nameof(request));

                var serialized = FtxJsonSerializer.Serialize(request);
                _communicator.Send(serialized);
            }
            catch (Exception e)
            {
                Log.Error(e, L($"Exception while sending message '{request}'. Error: {e.Message}"));
                throw;
            }
        }