Beispiel #1
0
        /// <summary>
        /// This method is used to retrieve the public settings, such as Site Name.
        /// It accepts a date as the first and only parameter which causes the results to be an object that
        /// contains the updated and removed settings after the provided time.
        /// </summary>
        /// <returns>The time after which settings should be returned.</returns>
        /// <param name="since">Since.</param>
        public async Task <CollectionDiff <KeyValuePair <string, object> > > GetPublicSettingsSince(DateTime since)
        {
            var res = await _meteor.CallWithResult("public-settings/get", new object[] { new Dictionary <string, object>()
                                                                                         {
                                                                                             { "$date", TypeUtils.DateTimeToTimestamp(since) }
                                                                                         } });

            CollectionDiff <KeyValuePair <string, object> > output = new CollectionDiff <KeyValuePair <string, object> >();


            if (res == null)
            {
                return(output);
            }

            var result = res["result"];

            if (result == null)
            {
                return(output);
            }

            var updates   = result["update"] != null ? (result as JObject)["update"] as JArray : null;
            var additions = result["add"] != null ? (result as JObject)["add"] as JArray : null;
            var removes   = result["remove"] != null ? (result as JObject)["remove"] as JArray : null;

            if (additions != null)
            {
                foreach (var channelTok in additions)
                {
                    output.Added.Add(TypeUtils.ParseKeyValuePair(channelTok as JObject));
                }
            }

            if (updates != null)
            {
                foreach (var channelTok in updates)
                {
                    output.Updated.Add(TypeUtils.ParseKeyValuePair(channelTok as JObject));
                }
            }

            if (removes != null)
            {
                foreach (var channelTok in removes)
                {
                    output.Removed.Add(TypeUtils.ParseKeyValuePair(channelTok as JObject));
                }
            }

            return(output);
        }
        private CollectionDiff <Subscription> ProcessSubscriptions(JObject obj)
        {
            CollectionDiff <Subscription> subscriptions = new CollectionDiff <Subscription>();
            var result = obj["result"];

            if (result == null)
            {
                return(subscriptions);
            }

            var updates   = result["update"] != null ? (result as JObject)["update"] as JArray : null;
            var additions = result["add"] != null ? (result as JObject)["add"] as JArray : null;
            var removes   = result["remove"] != null ? (result as JObject)["remove"] as JArray : null;

            if (additions != null)
            {
                foreach (var channelTok in additions)
                {
                    subscriptions.Added.Add(Subscription.Parse(channelTok as JObject));
                }
            }

            if (updates != null)
            {
                foreach (var channelTok in updates)
                {
                    subscriptions.Updated.Add(Subscription.Parse(channelTok as JObject));
                }
            }

            if (removes != null)
            {
                foreach (var channelTok in removes)
                {
                    subscriptions.Removed.Add(Subscription.Parse(channelTok as JObject));
                }
            }

            return(subscriptions);
        }
        private CollectionDiff <Room> ProcessRooms(JObject obj)
        {
            CollectionDiff <Room> rooms = new CollectionDiff <Room>();
            var result = obj["result"];

            if (result == null)
            {
                return(rooms);
            }

            var updates   = result["update"] != null ? (result as JObject)["update"] as JArray : null;
            var additions = result["add"] != null ? (result as JObject)["add"] as JArray : null;
            var removes   = result["remove"] != null ? (result as JObject)["remove"] as JArray : null;

            if (additions != null)
            {
                foreach (var channelTok in additions)
                {
                    rooms.Added.Add(Room.Parse(_meteor, channelTok as JObject));
                }
            }

            if (updates != null)
            {
                foreach (var channelTok in updates)
                {
                    rooms.Updated.Add(Room.Parse(_meteor, channelTok as JObject));
                }
            }

            if (removes != null)
            {
                foreach (var channelTok in removes)
                {
                    rooms.Removed.Add(Room.Parse(_meteor, channelTok as JObject));
                }
            }

            return(rooms);
        }