/// <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)); }
/// <summary> /// Reports to the server that the user has stopped playing an item /// </summary> /// <param name="itemId">The item id.</param> /// <param name="userId">The user id.</param> /// <param name="positionTicks">The position ticks.</param> /// <returns>Task{UserItemDataDto}.</returns> /// <exception cref="System.ArgumentNullException">itemId</exception> public void ReportPlaybackStopped(string itemId, string userId, long?positionTicks, 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("PlaybackStopped", itemId + "|" + (positionTicks == null ? "" : positionTicks.Value.ToString(CultureInfo.InvariantCulture))); } var dict = new QueryStringDictionary(); dict.AddIfNotNull("positionTicks", positionTicks); var url = GetApiUrl("Users/" + userId + "/PlayingItems/" + itemId, dict); _httpClient.Delete(url, 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)); }