public async Task <PlaylistActionResponse> PlaylistOperationAsync( MediaNamespace mediaNamespace, PlaylistActionType operation, PlaylistAction playlistAction) { Dictionary <string, string> requestParameters = FormatRequestParameters(); return(await ApiCallWithUserAuthorizationHeaderRefreshAsync( headers => PostAsync <PlaylistActionResponse, PlaylistAction>( Hostname, $"/1/content/{mediaNamespace}/collection/playlists/{operation}", playlistAction, new CancellationToken(false), requestParameters, headers))); }
private async Task <List <PlaylistActionResponse> > PerformPlaylistActions(List <PlaylistAction> playlistActions) { int totalTrackActions = 0; playlistActions.ForEach(a => { if (a.TrackActions != null) { totalTrackActions += a.TrackActions.Count; } else { totalTrackActions++; } }); List <PlaylistActionResponse> responses = new List <PlaylistActionResponse>(); int totalTrackActionsSoFar = 0; for (int i = 0; i < playlistActions.Count; i++) { PlaylistAction action = playlistActions[i]; PlaylistActionType operation = action.Name == null ? PlaylistActionType.Delete : PlaylistActionType.Create; PlaylistActionResponse response = await _client.PlaylistOperationAsync(MediaNamespace.music, operation, playlistActions[i]); responses.Add(response); if (response.Error == null) { if (action.TrackActions != null) { totalTrackActionsSoFar += action.TrackActions.Count; } _window.UpdateSyncProgress(100 * totalTrackActionsSoFar / totalTrackActions); } else { _window.WriteOutputLine($"Error when syncing: {response.Error.Description}"); } } return(responses); }
public async Task <PlaylistActionResponse> PlaylistOperationAsync(Namespace mediaNamespace, PlaylistActionType operation, PlaylistAction playlistAction) { Dictionary <string, string> requestParameters = await FormatRequestParametersAsync(); return(await PostWithRetryOnExpiredTokenAsync <PlaylistActionResponse, PlaylistAction>("/1/content/" + mediaNamespace + "/collection/playlists/" + operation, playlistAction, new CancellationToken(false), requestParameters)); }