Struct rspotify::AuthCodePkceSpotify
source · pub struct AuthCodePkceSpotify {
pub creds: Credentials,
pub oauth: OAuth,
pub config: Config,
pub token: Arc<Mutex<Option<Token>>>,
pub verifier: Option<String>,
/* private fields */
}
Expand description
The Authorization Code Flow with Proof Key for Code Exchange (PKCE) client for the Spotify API.
This flow is very similar to the regular Authorization Code Flow, so please
read AuthCodeSpotify
for more information about
it. The main difference in this case is that you can avoid storing your
client secret by generating a code verifier and a code challenge.
However, note that the refresh token obtained with PKCE will only work to
request the next one, after which it’ll become invalid.
There’s an example available to learn how to use this client.
Fields§
§creds: Credentials
§oauth: OAuth
§config: Config
§token: Arc<Mutex<Option<Token>>>
§verifier: Option<String>
The code verifier for the authentication process
Implementations§
source§impl AuthCodePkceSpotify
impl AuthCodePkceSpotify
sourcepub fn new(creds: Credentials, oauth: OAuth) -> Self
pub fn new(creds: Credentials, oauth: OAuth) -> Self
Builds a new AuthCodePkceSpotify
given a pair of client credentials
and OAuth information.
sourcepub fn from_token(token: Token) -> Self
pub fn from_token(token: Token) -> Self
Build a new AuthCodePkceSpotify
from an already generated token.
Note that once the token expires this will fail to make requests, as the
client credentials aren’t known.
sourcepub fn with_config(creds: Credentials, oauth: OAuth, config: Config) -> Self
pub fn with_config(creds: Credentials, oauth: OAuth, config: Config) -> Self
Same as Self::new
but with an extra parameter to configure the
client.
Returns the URL needed to authorize the current client as the first step in the authorization flow.
The parameter verifier_bytes
is the length of the randomly generated
code verifier. Note that it must be between 43 and 128. If None
is
given, a length of 43 will be used by default. See the official
docs or PKCE’s RFC for more information about the
code verifier.
Trait Implementations§
source§impl BaseClient for AuthCodePkceSpotify
impl BaseClient for AuthCodePkceSpotify
This client has access to the base methods.
fn get_http(&self) -> &HttpClient
source§fn get_token(&self) -> Arc<Mutex<Option<Token>>>
fn get_token(&self) -> Arc<Mutex<Option<Token>>>
Mutex
in order to allow interior
mutability. This is required so that the entire client doesn’t have to
be mutable (the token is accessed to from every endpoint).fn get_creds(&self) -> &Credentials
fn get_config(&self) -> &Config
source§fn refetch_token(&self) -> ClientResult<Option<Token>>
fn refetch_token(&self) -> ClientResult<Option<Token>>
source§fn auth_url(&self, url: &str) -> String
fn auth_url(&self, url: &str) -> String
source§fn auto_reauth(&self) -> ClientResult<()>
fn auto_reauth(&self) -> ClientResult<()>
source§fn refresh_token(&self) -> ClientResult<()>
fn refresh_token(&self) -> ClientResult<()>
source§fn write_token_cache(&self) -> ClientResult<()>
fn write_token_cache(&self) -> ClientResult<()>
source§fn fetch_access_token(
&self,
payload: &Form<'_>,
headers: Option<&Headers>
) -> ClientResult<Token>
fn fetch_access_token( &self, payload: &Form<'_>, headers: Option<&Headers> ) -> ClientResult<Token>
source§fn track(
&self,
track_id: TrackId<'_>,
market: Option<Market>
) -> ClientResult<FullTrack>
fn track( &self, track_id: TrackId<'_>, market: Option<Market> ) -> ClientResult<FullTrack>
source§fn tracks<'a>(
&self,
track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a,
market: Option<Market>
) -> ClientResult<Vec<FullTrack>>
fn tracks<'a>( &self, track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a, market: Option<Market> ) -> ClientResult<Vec<FullTrack>>
source§fn artist(&self, artist_id: ArtistId<'_>) -> ClientResult<FullArtist>
fn artist(&self, artist_id: ArtistId<'_>) -> ClientResult<FullArtist>
source§fn artists<'a>(
&self,
artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a
) -> ClientResult<Vec<FullArtist>>
fn artists<'a>( &self, artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a ) -> ClientResult<Vec<FullArtist>>
source§fn artist_albums<'a>(
&'a self,
artist_id: ArtistId<'a>,
include_groups: impl IntoIterator<Item = AlbumType> + Send + Copy + 'a,
market: Option<Market>
) -> Paginator<'_, ClientResult<SimplifiedAlbum>>
fn artist_albums<'a>( &'a self, artist_id: ArtistId<'a>, include_groups: impl IntoIterator<Item = AlbumType> + Send + Copy + 'a, market: Option<Market> ) -> Paginator<'_, ClientResult<SimplifiedAlbum>>
source§fn artist_albums_manual<'a>(
&self,
artist_id: ArtistId<'_>,
include_groups: impl IntoIterator<Item = AlbumType> + Send + 'a,
market: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SimplifiedAlbum>>
fn artist_albums_manual<'a>( &self, artist_id: ArtistId<'_>, include_groups: impl IntoIterator<Item = AlbumType> + Send + 'a, market: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SimplifiedAlbum>>
Self::artist_albums
.source§fn artist_top_tracks(
&self,
artist_id: ArtistId<'_>,
market: Option<Market>
) -> ClientResult<Vec<FullTrack>>
fn artist_top_tracks( &self, artist_id: ArtistId<'_>, market: Option<Market> ) -> ClientResult<Vec<FullTrack>>
source§fn album(
&self,
album_id: AlbumId<'_>,
market: Option<Market>
) -> ClientResult<FullAlbum>
fn album( &self, album_id: AlbumId<'_>, market: Option<Market> ) -> ClientResult<FullAlbum>
source§fn albums<'a>(
&self,
album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a,
market: Option<Market>
) -> ClientResult<Vec<FullAlbum>>
fn albums<'a>( &self, album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a, market: Option<Market> ) -> ClientResult<Vec<FullAlbum>>
source§fn search(
&self,
q: &str,
_type: SearchType,
market: Option<Market>,
include_external: Option<IncludeExternal>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<SearchResult>
fn search( &self, q: &str, _type: SearchType, market: Option<Market>, include_external: Option<IncludeExternal>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<SearchResult>
source§fn album_track<'a>(
&'a self,
album_id: AlbumId<'a>,
market: Option<Market>
) -> Paginator<'_, ClientResult<SimplifiedTrack>>
fn album_track<'a>( &'a self, album_id: AlbumId<'a>, market: Option<Market> ) -> Paginator<'_, ClientResult<SimplifiedTrack>>
source§fn album_track_manual(
&self,
album_id: AlbumId<'_>,
market: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SimplifiedTrack>>
fn album_track_manual( &self, album_id: AlbumId<'_>, market: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SimplifiedTrack>>
Self::album_track
.source§fn user(&self, user_id: UserId<'_>) -> ClientResult<PublicUser>
fn user(&self, user_id: UserId<'_>) -> ClientResult<PublicUser>
source§fn playlist(
&self,
playlist_id: PlaylistId<'_>,
fields: Option<&str>,
market: Option<Market>
) -> ClientResult<FullPlaylist>
fn playlist( &self, playlist_id: PlaylistId<'_>, fields: Option<&str>, market: Option<Market> ) -> ClientResult<FullPlaylist>
source§fn user_playlist(
&self,
user_id: UserId<'_>,
playlist_id: Option<PlaylistId<'_>>,
fields: Option<&str>
) -> ClientResult<FullPlaylist>
fn user_playlist( &self, user_id: UserId<'_>, playlist_id: Option<PlaylistId<'_>>, fields: Option<&str> ) -> ClientResult<FullPlaylist>
source§fn playlist_check_follow(
&self,
playlist_id: PlaylistId<'_>,
user_ids: &[UserId<'_>]
) -> ClientResult<Vec<bool>>
fn playlist_check_follow( &self, playlist_id: PlaylistId<'_>, user_ids: &[UserId<'_>] ) -> ClientResult<Vec<bool>>
source§fn get_a_show(
&self,
id: ShowId<'_>,
market: Option<Market>
) -> ClientResult<FullShow>
fn get_a_show( &self, id: ShowId<'_>, market: Option<Market> ) -> ClientResult<FullShow>
source§fn get_several_shows<'a>(
&self,
ids: impl IntoIterator<Item = ShowId<'a>> + Send + 'a,
market: Option<Market>
) -> ClientResult<Vec<SimplifiedShow>>
fn get_several_shows<'a>( &self, ids: impl IntoIterator<Item = ShowId<'a>> + Send + 'a, market: Option<Market> ) -> ClientResult<Vec<SimplifiedShow>>
source§fn get_shows_episodes<'a>(
&'a self,
id: ShowId<'a>,
market: Option<Market>
) -> Paginator<'_, ClientResult<SimplifiedEpisode>>
fn get_shows_episodes<'a>( &'a self, id: ShowId<'a>, market: Option<Market> ) -> Paginator<'_, ClientResult<SimplifiedEpisode>>
source§fn get_shows_episodes_manual(
&self,
id: ShowId<'_>,
market: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SimplifiedEpisode>>
fn get_shows_episodes_manual( &self, id: ShowId<'_>, market: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SimplifiedEpisode>>
Self::get_shows_episodes
.source§fn get_an_episode(
&self,
id: EpisodeId<'_>,
market: Option<Market>
) -> ClientResult<FullEpisode>
fn get_an_episode( &self, id: EpisodeId<'_>, market: Option<Market> ) -> ClientResult<FullEpisode>
source§fn get_several_episodes<'a>(
&self,
ids: impl IntoIterator<Item = EpisodeId<'a>> + Send + 'a,
market: Option<Market>
) -> ClientResult<Vec<FullEpisode>>
fn get_several_episodes<'a>( &self, ids: impl IntoIterator<Item = EpisodeId<'a>> + Send + 'a, market: Option<Market> ) -> ClientResult<Vec<FullEpisode>>
source§fn track_features(&self, track_id: TrackId<'_>) -> ClientResult<AudioFeatures>
fn track_features(&self, track_id: TrackId<'_>) -> ClientResult<AudioFeatures>
source§fn tracks_features<'a>(
&self,
track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a
) -> ClientResult<Option<Vec<AudioFeatures>>>
fn tracks_features<'a>( &self, track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a ) -> ClientResult<Option<Vec<AudioFeatures>>>
source§fn track_analysis(&self, track_id: TrackId<'_>) -> ClientResult<AudioAnalysis>
fn track_analysis(&self, track_id: TrackId<'_>) -> ClientResult<AudioAnalysis>
source§fn categories<'a>(
&'a self,
locale: Option<&'a str>,
country: Option<Market>
) -> Paginator<'_, ClientResult<Category>>
fn categories<'a>( &'a self, locale: Option<&'a str>, country: Option<Market> ) -> Paginator<'_, ClientResult<Category>>
source§fn categories_manual(
&self,
locale: Option<&str>,
country: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<Category>>
fn categories_manual( &self, locale: Option<&str>, country: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<Category>>
Self::categories
.source§fn category_playlists<'a>(
&'a self,
category_id: &'a str,
country: Option<Market>
) -> Paginator<'_, ClientResult<SimplifiedPlaylist>>
fn category_playlists<'a>( &'a self, category_id: &'a str, country: Option<Market> ) -> Paginator<'_, ClientResult<SimplifiedPlaylist>>
source§fn category_playlists_manual(
&self,
category_id: &str,
country: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SimplifiedPlaylist>>
fn category_playlists_manual( &self, category_id: &str, country: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SimplifiedPlaylist>>
Self::category_playlists
.source§fn featured_playlists(
&self,
locale: Option<&str>,
country: Option<Market>,
timestamp: Option<DateTime<Utc>>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<FeaturedPlaylists>
fn featured_playlists( &self, locale: Option<&str>, country: Option<Market>, timestamp: Option<DateTime<Utc>>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<FeaturedPlaylists>
source§fn new_releases(
&self,
country: Option<Market>
) -> Paginator<'_, ClientResult<SimplifiedAlbum>>
fn new_releases( &self, country: Option<Market> ) -> Paginator<'_, ClientResult<SimplifiedAlbum>>
source§fn new_releases_manual(
&self,
country: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SimplifiedAlbum>>
fn new_releases_manual( &self, country: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SimplifiedAlbum>>
Self::new_releases
.source§fn recommendations<'a>(
&self,
attributes: impl IntoIterator<Item = RecommendationsAttribute> + Send + 'a,
seed_artists: Option<impl IntoIterator<Item = ArtistId<'a>> + Send + 'a>,
seed_genres: Option<impl IntoIterator<Item = &'a str> + Send + 'a>,
seed_tracks: Option<impl IntoIterator<Item = TrackId<'a>> + Send + 'a>,
market: Option<Market>,
limit: Option<u32>
) -> ClientResult<Recommendations>
fn recommendations<'a>( &self, attributes: impl IntoIterator<Item = RecommendationsAttribute> + Send + 'a, seed_artists: Option<impl IntoIterator<Item = ArtistId<'a>> + Send + 'a>, seed_genres: Option<impl IntoIterator<Item = &'a str> + Send + 'a>, seed_tracks: Option<impl IntoIterator<Item = TrackId<'a>> + Send + 'a>, market: Option<Market>, limit: Option<u32> ) -> ClientResult<Recommendations>
source§fn playlist_items<'a>(
&'a self,
playlist_id: PlaylistId<'a>,
fields: Option<&'a str>,
market: Option<Market>
) -> Paginator<'_, ClientResult<PlaylistItem>>
fn playlist_items<'a>( &'a self, playlist_id: PlaylistId<'a>, fields: Option<&'a str>, market: Option<Market> ) -> Paginator<'_, ClientResult<PlaylistItem>>
source§fn playlist_items_manual(
&self,
playlist_id: PlaylistId<'_>,
fields: Option<&str>,
market: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<PlaylistItem>>
fn playlist_items_manual( &self, playlist_id: PlaylistId<'_>, fields: Option<&str>, market: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<PlaylistItem>>
Self::playlist_items
.source§fn user_playlists<'a>(
&'a self,
user_id: UserId<'a>
) -> Paginator<'_, ClientResult<SimplifiedPlaylist>>
fn user_playlists<'a>( &'a self, user_id: UserId<'a> ) -> Paginator<'_, ClientResult<SimplifiedPlaylist>>
source§fn user_playlists_manual(
&self,
user_id: UserId<'_>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SimplifiedPlaylist>>
fn user_playlists_manual( &self, user_id: UserId<'_>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SimplifiedPlaylist>>
Self::user_playlists
.source§impl Clone for AuthCodePkceSpotify
impl Clone for AuthCodePkceSpotify
source§fn clone(&self) -> AuthCodePkceSpotify
fn clone(&self) -> AuthCodePkceSpotify
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for AuthCodePkceSpotify
impl Debug for AuthCodePkceSpotify
source§impl Default for AuthCodePkceSpotify
impl Default for AuthCodePkceSpotify
source§fn default() -> AuthCodePkceSpotify
fn default() -> AuthCodePkceSpotify
source§impl OAuthClient for AuthCodePkceSpotify
impl OAuthClient for AuthCodePkceSpotify
This client includes user authorization, so it has access to the user
private endpoints in OAuthClient
.
source§fn request_token(&self, code: &str) -> ClientResult<()>
fn request_token(&self, code: &str) -> ClientResult<()>
Note that the code verifier must be set at this point, either manually
or with Self::get_authorize_url
. Otherwise, this function will
panic.
fn get_oauth(&self) -> &OAuth
source§fn read_token_cache(&self, allow_expired: bool) -> ClientResult<Option<Token>>
fn read_token_cache(&self, allow_expired: bool) -> ClientResult<Option<Token>>
source§fn parse_response_code(&self, url: &str) -> Option<String>
fn parse_response_code(&self, url: &str) -> Option<String>
code
parameter is not present, this will return None
.source§fn get_code_from_user(&self, url: &str) -> ClientResult<String>
fn get_code_from_user(&self, url: &str) -> ClientResult<String>
source§fn prompt_for_token(&self, url: &str) -> ClientResult<()>
fn prompt_for_token(&self, url: &str) -> ClientResult<()>
source§fn current_user_playlists(
&self
) -> Paginator<'_, ClientResult<SimplifiedPlaylist>>
fn current_user_playlists( &self ) -> Paginator<'_, ClientResult<SimplifiedPlaylist>>
source§fn current_user_playlists_manual(
&self,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SimplifiedPlaylist>>
fn current_user_playlists_manual( &self, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SimplifiedPlaylist>>
Self::current_user_playlists
.source§fn user_playlist_create(
&self,
user_id: UserId<'_>,
name: &str,
public: Option<bool>,
collaborative: Option<bool>,
description: Option<&str>
) -> ClientResult<FullPlaylist>
fn user_playlist_create( &self, user_id: UserId<'_>, name: &str, public: Option<bool>, collaborative: Option<bool>, description: Option<&str> ) -> ClientResult<FullPlaylist>
source§fn playlist_change_detail(
&self,
playlist_id: PlaylistId<'_>,
name: Option<&str>,
public: Option<bool>,
description: Option<&str>,
collaborative: Option<bool>
) -> ClientResult<String>
fn playlist_change_detail( &self, playlist_id: PlaylistId<'_>, name: Option<&str>, public: Option<bool>, description: Option<&str>, collaborative: Option<bool> ) -> ClientResult<String>
source§fn playlist_unfollow(&self, playlist_id: PlaylistId<'_>) -> ClientResult<()>
fn playlist_unfollow(&self, playlist_id: PlaylistId<'_>) -> ClientResult<()>
source§fn playlist_add_items<'a>(
&self,
playlist_id: PlaylistId<'_>,
items: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a,
position: Option<u32>
) -> ClientResult<PlaylistResult>
fn playlist_add_items<'a>( &self, playlist_id: PlaylistId<'_>, items: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a, position: Option<u32> ) -> ClientResult<PlaylistResult>
source§fn playlist_replace_items<'a>(
&self,
playlist_id: PlaylistId<'_>,
items: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a
) -> ClientResult<()>
fn playlist_replace_items<'a>( &self, playlist_id: PlaylistId<'_>, items: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn playlist_reorder_items(
&self,
playlist_id: PlaylistId<'_>,
range_start: Option<i32>,
insert_before: Option<i32>,
range_length: Option<u32>,
snapshot_id: Option<&str>
) -> ClientResult<PlaylistResult>
fn playlist_reorder_items( &self, playlist_id: PlaylistId<'_>, range_start: Option<i32>, insert_before: Option<i32>, range_length: Option<u32>, snapshot_id: Option<&str> ) -> ClientResult<PlaylistResult>
source§fn playlist_remove_all_occurrences_of_items<'a>(
&self,
playlist_id: PlaylistId<'_>,
track_ids: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a,
snapshot_id: Option<&str>
) -> ClientResult<PlaylistResult>
fn playlist_remove_all_occurrences_of_items<'a>( &self, playlist_id: PlaylistId<'_>, track_ids: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a, snapshot_id: Option<&str> ) -> ClientResult<PlaylistResult>
source§fn playlist_remove_specific_occurrences_of_items<'a>(
&self,
playlist_id: PlaylistId<'_>,
items: impl IntoIterator<Item = ItemPositions<'a>> + Send + 'a,
snapshot_id: Option<&str>
) -> ClientResult<PlaylistResult>
fn playlist_remove_specific_occurrences_of_items<'a>( &self, playlist_id: PlaylistId<'_>, items: impl IntoIterator<Item = ItemPositions<'a>> + Send + 'a, snapshot_id: Option<&str> ) -> ClientResult<PlaylistResult>
source§fn playlist_follow(
&self,
playlist_id: PlaylistId<'_>,
public: Option<bool>
) -> ClientResult<()>
fn playlist_follow( &self, playlist_id: PlaylistId<'_>, public: Option<bool> ) -> ClientResult<()>
source§fn me(&self) -> ClientResult<PrivateUser>
fn me(&self) -> ClientResult<PrivateUser>
source§fn current_user(&self) -> ClientResult<PrivateUser>
fn current_user(&self) -> ClientResult<PrivateUser>
source§fn current_user_playing_item(
&self
) -> ClientResult<Option<CurrentlyPlayingContext>>
fn current_user_playing_item( &self ) -> ClientResult<Option<CurrentlyPlayingContext>>
source§fn current_user_saved_albums(
&self,
market: Option<Market>
) -> Paginator<'_, ClientResult<SavedAlbum>>
fn current_user_saved_albums( &self, market: Option<Market> ) -> Paginator<'_, ClientResult<SavedAlbum>>
source§fn current_user_saved_albums_manual(
&self,
market: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SavedAlbum>>
fn current_user_saved_albums_manual( &self, market: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SavedAlbum>>
Self::current_user_saved_albums
.source§fn current_user_saved_tracks(
&self,
market: Option<Market>
) -> Paginator<'_, ClientResult<SavedTrack>>
fn current_user_saved_tracks( &self, market: Option<Market> ) -> Paginator<'_, ClientResult<SavedTrack>>
source§fn current_user_saved_tracks_manual(
&self,
market: Option<Market>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<SavedTrack>>
fn current_user_saved_tracks_manual( &self, market: Option<Market>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<SavedTrack>>
Self::current_user_saved_tracks
.source§fn current_user_followed_artists(
&self,
after: Option<&str>,
limit: Option<u32>
) -> ClientResult<CursorBasedPage<FullArtist>>
fn current_user_followed_artists( &self, after: Option<&str>, limit: Option<u32> ) -> ClientResult<CursorBasedPage<FullArtist>>
source§fn current_user_saved_tracks_delete<'a>(
&self,
track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a
) -> ClientResult<()>
fn current_user_saved_tracks_delete<'a>( &self, track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn current_user_saved_tracks_contains<'a>(
&self,
track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a
) -> ClientResult<Vec<bool>>
fn current_user_saved_tracks_contains<'a>( &self, track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a ) -> ClientResult<Vec<bool>>
source§fn current_user_saved_tracks_add<'a>(
&self,
track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a
) -> ClientResult<()>
fn current_user_saved_tracks_add<'a>( &self, track_ids: impl IntoIterator<Item = TrackId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn current_user_top_artists(
&self,
time_range: Option<TimeRange>
) -> Paginator<'_, ClientResult<FullArtist>>
fn current_user_top_artists( &self, time_range: Option<TimeRange> ) -> Paginator<'_, ClientResult<FullArtist>>
source§fn current_user_top_artists_manual(
&self,
time_range: Option<TimeRange>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<FullArtist>>
fn current_user_top_artists_manual( &self, time_range: Option<TimeRange>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<FullArtist>>
Self::current_user_top_artists
.source§fn current_user_top_tracks(
&self,
time_range: Option<TimeRange>
) -> Paginator<'_, ClientResult<FullTrack>>
fn current_user_top_tracks( &self, time_range: Option<TimeRange> ) -> Paginator<'_, ClientResult<FullTrack>>
source§fn current_user_top_tracks_manual(
&self,
time_range: Option<TimeRange>,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<FullTrack>>
fn current_user_top_tracks_manual( &self, time_range: Option<TimeRange>, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<FullTrack>>
Self::current_user_top_tracks
.source§fn current_user_recently_played(
&self,
limit: Option<u32>,
time_limit: Option<TimeLimits>
) -> ClientResult<CursorBasedPage<PlayHistory>>
fn current_user_recently_played( &self, limit: Option<u32>, time_limit: Option<TimeLimits> ) -> ClientResult<CursorBasedPage<PlayHistory>>
source§fn current_user_saved_albums_add<'a>(
&self,
album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a
) -> ClientResult<()>
fn current_user_saved_albums_add<'a>( &self, album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn current_user_saved_albums_delete<'a>(
&self,
album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a
) -> ClientResult<()>
fn current_user_saved_albums_delete<'a>( &self, album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn current_user_saved_albums_contains<'a>(
&self,
album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a
) -> ClientResult<Vec<bool>>
fn current_user_saved_albums_contains<'a>( &self, album_ids: impl IntoIterator<Item = AlbumId<'a>> + Send + 'a ) -> ClientResult<Vec<bool>>
source§fn user_follow_artists<'a>(
&self,
artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a
) -> ClientResult<()>
fn user_follow_artists<'a>( &self, artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn user_unfollow_artists<'a>(
&self,
artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a
) -> ClientResult<()>
fn user_unfollow_artists<'a>( &self, artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn user_artist_check_follow<'a>(
&self,
artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a
) -> ClientResult<Vec<bool>>
fn user_artist_check_follow<'a>( &self, artist_ids: impl IntoIterator<Item = ArtistId<'a>> + Send + 'a ) -> ClientResult<Vec<bool>>
source§fn user_follow_users<'a>(
&self,
user_ids: impl IntoIterator<Item = UserId<'a>> + Send + 'a
) -> ClientResult<()>
fn user_follow_users<'a>( &self, user_ids: impl IntoIterator<Item = UserId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn user_unfollow_users<'a>(
&self,
user_ids: impl IntoIterator<Item = UserId<'a>> + Send + 'a
) -> ClientResult<()>
fn user_unfollow_users<'a>( &self, user_ids: impl IntoIterator<Item = UserId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn current_playback<'a>(
&self,
country: Option<Market>,
additional_types: Option<impl IntoIterator<Item = &'a AdditionalType> + Send + 'a>
) -> ClientResult<Option<CurrentPlaybackContext>>
fn current_playback<'a>( &self, country: Option<Market>, additional_types: Option<impl IntoIterator<Item = &'a AdditionalType> + Send + 'a> ) -> ClientResult<Option<CurrentPlaybackContext>>
source§fn current_playing<'a>(
&'a self,
market: Option<Market>,
additional_types: Option<impl IntoIterator<Item = &'a AdditionalType> + Send + 'a>
) -> ClientResult<Option<CurrentlyPlayingContext>>
fn current_playing<'a>( &'a self, market: Option<Market>, additional_types: Option<impl IntoIterator<Item = &'a AdditionalType> + Send + 'a> ) -> ClientResult<Option<CurrentlyPlayingContext>>
source§fn current_user_queue(&self) -> ClientResult<CurrentUserQueue>
fn current_user_queue(&self) -> ClientResult<CurrentUserQueue>
source§fn transfer_playback(
&self,
device_id: &str,
play: Option<bool>
) -> ClientResult<()>
fn transfer_playback( &self, device_id: &str, play: Option<bool> ) -> ClientResult<()>
source§fn start_context_playback(
&self,
context_uri: PlayContextId<'_>,
device_id: Option<&str>,
offset: Option<Offset>,
position: Option<Duration>
) -> ClientResult<()>
fn start_context_playback( &self, context_uri: PlayContextId<'_>, device_id: Option<&str>, offset: Option<Offset>, position: Option<Duration> ) -> ClientResult<()>
source§fn start_uris_playback<'a>(
&self,
uris: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a,
device_id: Option<&str>,
offset: Option<Offset>,
position: Option<Duration>
) -> ClientResult<()>
fn start_uris_playback<'a>( &self, uris: impl IntoIterator<Item = PlayableId<'a>> + Send + 'a, device_id: Option<&str>, offset: Option<Offset>, position: Option<Duration> ) -> ClientResult<()>
source§fn pause_playback(&self, device_id: Option<&str>) -> ClientResult<()>
fn pause_playback(&self, device_id: Option<&str>) -> ClientResult<()>
source§fn resume_playback(
&self,
device_id: Option<&str>,
position: Option<Duration>
) -> ClientResult<()>
fn resume_playback( &self, device_id: Option<&str>, position: Option<Duration> ) -> ClientResult<()>
source§fn next_track(&self, device_id: Option<&str>) -> ClientResult<()>
fn next_track(&self, device_id: Option<&str>) -> ClientResult<()>
source§fn previous_track(&self, device_id: Option<&str>) -> ClientResult<()>
fn previous_track(&self, device_id: Option<&str>) -> ClientResult<()>
source§fn seek_track(
&self,
position: Duration,
device_id: Option<&str>
) -> ClientResult<()>
fn seek_track( &self, position: Duration, device_id: Option<&str> ) -> ClientResult<()>
source§fn repeat(
&self,
state: RepeatState,
device_id: Option<&str>
) -> ClientResult<()>
fn repeat( &self, state: RepeatState, device_id: Option<&str> ) -> ClientResult<()>
source§fn volume(
&self,
volume_percent: u8,
device_id: Option<&str>
) -> ClientResult<()>
fn volume( &self, volume_percent: u8, device_id: Option<&str> ) -> ClientResult<()>
source§fn shuffle(&self, state: bool, device_id: Option<&str>) -> ClientResult<()>
fn shuffle(&self, state: bool, device_id: Option<&str>) -> ClientResult<()>
source§fn add_item_to_queue(
&self,
item: PlayableId<'_>,
device_id: Option<&str>
) -> ClientResult<()>
fn add_item_to_queue( &self, item: PlayableId<'_>, device_id: Option<&str> ) -> ClientResult<()>
source§fn save_shows<'a>(
&self,
show_ids: impl IntoIterator<Item = ShowId<'a>> + Send + 'a
) -> ClientResult<()>
fn save_shows<'a>( &self, show_ids: impl IntoIterator<Item = ShowId<'a>> + Send + 'a ) -> ClientResult<()>
source§fn get_saved_show(&self) -> Paginator<'_, ClientResult<Show>>
fn get_saved_show(&self) -> Paginator<'_, ClientResult<Show>>
source§fn get_saved_show_manual(
&self,
limit: Option<u32>,
offset: Option<u32>
) -> ClientResult<Page<Show>>
fn get_saved_show_manual( &self, limit: Option<u32>, offset: Option<u32> ) -> ClientResult<Page<Show>>
Self::get_saved_show
.