public async Task <bool> SaveToPlaylist(AddSongToPlaylistDto addSongToPlaylistDto, ProfileReadDto spotifyProfile) { var uri = $"spotify:track:{addSongToPlaylistDto.SongId}"; var accessToken = addSongToPlaylistDto.AccessToken; AppendAuthHeader(accessToken); var isPlaylistFound = await FindSpotifyPlaylist(accessToken, addSongToPlaylistDto.PlaylistId); if (!isPlaylistFound) { addSongToPlaylistDto.PlaylistId = await CreatePlaylist(addSongToPlaylistDto.AccessToken, spotifyProfile.SpotifyId); if (addSongToPlaylistDto.PlaylistId == null) { return(false); } await _spotiRepository.ConnectPlaylistToAccountAsync(spotifyProfile.SpotifyId, addSongToPlaylistDto.PlaylistId); } RemoveTrackFromSpotifyPlaylist(addSongToPlaylistDto.PlaylistId, uri, accessToken); using var response = await _client.PostAsync($"https://api.spotify.com/v1/playlists/{addSongToPlaylistDto.PlaylistId}/tracks?uris={uri}", null); if (response.IsSuccessStatusCode) { //Track was created in the playlist return(true); } //if status code 403 - error or playlist size is 10 000 return(false); }
public async Task <IActionResult> AddToPlaylist(AddSongToPlaylistDto addSongToPlaylistDto) { var spotifyProfile = (ProfileReadDto)HttpContext.Items["User"]; var playlistId = await _accountService.FindUserGetDatabasePlaylist(spotifyProfile); addSongToPlaylistDto.PlaylistId = playlistId; var isSuccessful = await _accountService.SaveToPlaylist(addSongToPlaylistDto, spotifyProfile); if (isSuccessful) { return(Ok()); } return(Forbid()); }