Beispiel #1
0
        void ObtainAdvice(JObject response)
        {
            var adviceToken = response["advice"];

            if (adviceToken != null)
            {
                lastAdvice = adviceToken.ToObject <BayeuxAdvice>();
            }
        }
        /// <summary>
        /// Reads the response from given JSON object.
        /// </summary>
        public void Read(IJSonObject input)
        {
            _jsonResponse = input;

            // reset all fields to their default values:
            Channel    = null;
            ClientID   = null;
            Successful = false;
            Timestamp  = DateTime.MinValue;
            ID         = null;
            Data       = null;
            Error      = null;
            Advice     = null;
            Ext        = null;

            // stop processing, if there is no input data given:
            if (input == null)
            {
                return;
            }

            // now read the Bayeux mandatory fields:
            Channel = input["channel"].StringValue;
            if (!BayeuxChannel.IsValid(Channel))
            {
                throw new FormatException("Invalid channel format");
            }


            if (input.Contains("clientId"))
            {
                ClientID = input["clientId"].StringValue;
            }

            // for meta channels, this field is required,
            // however it's optional for others (like events)
            if (Channel.StartsWith("/meta"))
            {
                Successful = input["successful"].BooleanValue;
            }
            else
            {
                if (input.Contains("successful"))
                {
                    Successful = input["successful"].BooleanValue;
                }
            }

            // parse optional fields:
            if (input.Contains("timestamp"))
            {
                Timestamp = input["timestamp"].DateTimeValue;
            }
            if (input.Contains("id"))
            {
                ID = input["id"].StringValue;
            }
            if (input.Contains("data"))
            {
                Data = input["data"];
            }
            if (input.Contains("error"))
            {
                Error = new BayeuxError(input["error"].StringValue);
            }
            if (input.Contains("advice"))
            {
                Advice = new BayeuxAdvice(input["advice"]);
            }
            if (input.Contains("ext"))
            {
                Ext = input["ext"];
            }

            ReadOptionalFields(input);
        }
        /// <summary>
        /// Reads the response from given JSON object.
        /// </summary>
        public void Read(IJSonObject input)
        {
            _jsonResponse = input;

            // reset all fields to their default values:
            Channel = null;
            ClientID = null;
            Successful = false;
            Timestamp = DateTime.MinValue;
            ID = null;
            Data = null;
            Error = null;
            Advice = null;
            Ext = null;

            // stop processing, if there is no input data given:
            if (input == null)
                return;

            // now read the Bayeux mandatory fields:
            Channel = input["channel"].StringValue;
            if (!BayeuxChannel.IsValid(Channel))
                throw new FormatException("Invalid channel format");


            if (input.Contains("clientId"))
                ClientID = input["clientId"].StringValue;

            // for meta channels, this field is required,
            // however it's optional for others (like events)
            if (Channel.StartsWith("/meta"))
                Successful = input["successful"].BooleanValue;
            else
            {
                if (input.Contains("successful"))
                    Successful = input["successful"].BooleanValue;
            }

            // parse optional fields:
            if (input.Contains("timestamp"))
                Timestamp = input["timestamp"].DateTimeValue;
            if (input.Contains("id"))
                ID = input["id"].StringValue;
            if (input.Contains("data"))
                Data = input["data"];
            if (input.Contains("error"))
                Error = new BayeuxError(input["error"].StringValue);
            if (input.Contains("advice"))
                Advice = new BayeuxAdvice(input["advice"]);
            if (input.Contains("ext"))
                Ext = input["ext"];

            ReadOptionalFields(input);
        }