/// <summary>
        /// Registers the device for push notifications.
        /// </summary>
        /// <param name="deviceId">The device id.</param>
        /// <param name="uri">The URI.</param>
        /// <param name="sendTileUpdate">The send tile update.</param>
        /// <param name="sendToastUpdate">The send toast update.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">deviceType
        /// or
        /// deviceId</exception>
        public Task RegisterDeviceAsync(string deviceId, string uri, bool?sendTileUpdate = null, bool?sendToastUpdate = null)
        {
            if (string.IsNullOrEmpty(deviceId))
            {
                throw new ArgumentNullException("deviceId");
            }

            var dict = new QueryStringDictionary
            {
                { "deviceid", deviceId },
                { "url", uri },
                { "devicetype", "WindowsPhone8" }
            };

            if (sendTileUpdate.HasValue)
            {
                dict.Add("sendlivetile", sendTileUpdate.Value);
            }
            if (sendToastUpdate.HasValue)
            {
                dict.Add("sendtoast", sendToastUpdate.Value);
            }

            var url = GetApiUrl("PushNotification/Devices", dict);

            return(PostAsync <EmptyRequestResult>(url, new Dictionary <string, string>()));
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     List of parameters for this request object.
        /// </summary>
        /// <returns></returns>
        protected virtual QueryStringDictionary GetParameterList()
        {
            var parameters = new QueryStringDictionary();

            if (string.IsNullOrEmpty(this.Language))
            {
                this.Language = "en-US";
            }

            parameters.Add("language", this.Language);
            parameters.Add("format", this.Format.ToNullableString());
            return(parameters);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Reports playback progress to the server
        /// </summary>
        /// <param name="itemId">The item id.</param>
        /// <param name="userId">The user id.</param>
        /// <param name="positionTicks">The position ticks.</param>
        /// <param name="isPaused">if set to <c>true</c> [is paused].</param>
        /// <returns>Task{UserItemDataDto}.</returns>
        /// <exception cref="System.ArgumentNullException">itemId</exception>
        public void ReportPlaybackProgress(string itemId, string userId, long?positionTicks, bool isPaused, Action <bool> onResponse)
        {
            if (string.IsNullOrEmpty(itemId))
            {
                throw new ArgumentNullException("itemId");
            }

            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException("userId");
            }

            if (WebSocketConnection != null && WebSocketConnection.IsOpen)
            {
                WebSocketConnection.Send("PlaybackProgress", itemId + "|" + (positionTicks == null ? "" : positionTicks.Value.ToString(CultureInfo.InvariantCulture)) + "|" + isPaused.ToString().ToLower());
            }

            var dict = new QueryStringDictionary();

            dict.AddIfNotNull("positionTicks", positionTicks);
            dict.Add("isPaused", isPaused);

            var url = GetApiUrl("Users/" + userId + "/PlayingItems/" + itemId + "/Progress", dict);

            Post <EmptyRequestResult>(url, new Dictionary <string, string>(), x => onResponse(true), x => onResponse(false));
        }
        private string GetImageUrl(string baseUrl, ImageOptions options, QueryStringDictionary queryParams)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            if (queryParams == null)
            {
                throw new ArgumentNullException("queryParams");
            }

            if (options.ImageIndex.HasValue)
            {
                baseUrl += "/" + options.ImageIndex.Value;
            }

            queryParams.AddIfNotNull("Width", options.Width);
            queryParams.AddIfNotNull("Height", options.Height);
            queryParams.AddIfNotNull("MaxWidth", options.MaxWidth);
            queryParams.AddIfNotNull("MaxHeight", options.MaxHeight);
            queryParams.AddIfNotNull("Quality", options.Quality ?? ImageQuality);

            queryParams.AddIfNotNull("Tag", options.Tag);

            queryParams.AddIfNotNull("CropWhitespace", options.CropWhitespace);
            queryParams.Add("EnableImageEnhancers", options.EnableImageEnhancers);

            return(GetApiUrl(baseUrl, queryParams));
        }
        /// <summary>
        /// Updates the device async.
        /// </summary>
        /// <param name="deviceId">The device id.</param>
        /// <param name="sendTileUpdate">The send tile update.</param>
        /// <param name="sendToastUpdate">The send toast update.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">deviceId</exception>
        public Task UpdateDeviceAsync(string deviceId, bool?sendTileUpdate = null, bool?sendToastUpdate = null)
        {
            if (string.IsNullOrEmpty(deviceId))
            {
                throw new ArgumentNullException("deviceId");
            }

            var dict = new QueryStringDictionary();

            if (sendTileUpdate.HasValue)
            {
                dict.Add("sendlivetile", sendTileUpdate.Value);
            }
            if (sendToastUpdate.HasValue)
            {
                dict.Add("sendtoast", sendToastUpdate.Value);
            }

            var url = GetApiUrl("PushNotification/Devices/" + deviceId, dict);

            return(PostAsync <EmptyRequestResult>(url, new Dictionary <string, string>()));
        }
        protected override List<BaseItem> GetCachedChildren()
        {
            var parms = new QueryStringDictionary { { "userId", Kernel.CurrentUser.ApiId }, {"Limit", 200} };
            parms.Add("Fields", MB3ApiRepository.StandardFields.Select(f => f.ToString()));
            var url = Kernel.ApiClient.GetApiUrl("Shows/Upcoming", parms);

            using (var stream = Kernel.ApiClient.GetSerializedStream(url))
            {
                var result = Kernel.ApiClient.DeserializeFromStream<ItemsResult>(stream);
                OurChildren = result.Items.Select(i => Kernel.Instance.MB3ApiRepository.GetItem(i, i.Type)).Where(i => i != null).ToList();
                return OurChildren;
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Registers the device for push notifications.
        /// </summary>
        /// <param name="deviceId">The device id.</param>
        /// <param name="uri">The URI.</param>
        /// <param name="sendTileUpdate">The send tile update.</param>
        /// <param name="sendToastUpdate">The send toast update.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">deviceType
        /// or
        /// deviceId</exception>
        public Task RegisterDeviceAsync(string deviceId, string uri, bool? sendTileUpdate = null, bool? sendToastUpdate = null)
        {
            if (string.IsNullOrEmpty(deviceId))
            {
                throw new ArgumentNullException("deviceId");
            }

            var dict = new QueryStringDictionary
                           {
                               {"deviceid", deviceId},
                               {"url", uri},
                               {"devicetype", "WindowsPhone8"}
                           };

            if (sendTileUpdate.HasValue)
                dict.Add("sendlivetile", sendTileUpdate.Value);
            if (sendToastUpdate.HasValue)
                dict.Add("sendtoast", sendToastUpdate.Value);

            var url = GetApiUrl("PushNotification/Devices", dict);

            return PostAsync<EmptyRequestResult>(url, new Dictionary<string, string>());
        }
        protected override List <BaseItem> GetCachedChildren()
        {
            var parms = new QueryStringDictionary {
                { "userId", Kernel.CurrentUser.ApiId }, { "Limit", 200 }
            };

            parms.Add("Fields", MB3ApiRepository.StandardFields.Select(f => f.ToString()));
            var url = Kernel.ApiClient.GetApiUrl("Shows/Upcoming", parms);

            using (var stream = Kernel.ApiClient.GetSerializedStream(url))
            {
                var result = Kernel.ApiClient.DeserializeFromStream <ItemsResult>(stream);
                OurChildren = result.Items.Select(i => Kernel.Instance.MB3ApiRepository.GetItem(i, i.Type)).Where(i => i != null).ToList();
                return(OurChildren);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        ///     Converts this object's parameters to a query string dictionary.
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        public static QueryStringDictionary ToDictionary(this object source)
        {
            var dictionary = new QueryStringDictionary();
            var properties = source.GetType().GetRuntimeProperties();

            foreach (var property in properties)
            {
                var key   = property.Name.ToLower();
                var value = property.GetValue(source, null);

                if (!string.IsNullOrEmpty(key) && value != null)
                {
                    dictionary.Add(key, value);
                }
            }

            return(dictionary);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Updates the device async.
        /// </summary>
        /// <param name="deviceId">The device id.</param>
        /// <param name="sendTileUpdate">The send tile update.</param>
        /// <param name="sendToastUpdate">The send toast update.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">deviceId</exception>
        public Task UpdateDeviceAsync(string deviceId, bool? sendTileUpdate = null, bool? sendToastUpdate = null)
        {
            if (string.IsNullOrEmpty(deviceId))
            {
                throw new ArgumentNullException("deviceId");
            }

            var dict = new QueryStringDictionary();

            if (sendTileUpdate.HasValue)
                dict.Add("sendlivetile", sendTileUpdate.Value);
            if (sendToastUpdate.HasValue)
                dict.Add("sendtoast", sendToastUpdate.Value);

            var url = GetApiUrl("PushNotification/Devices/" + deviceId, dict);

            return PostAsync<EmptyRequestResult>(url, new Dictionary<string, string>());
        }