示例#1
0
        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));
        }