diff options
author | Nick Steel <nick@nsteel.co.uk> | 2023-04-24 00:16:40 +0300 |
---|---|---|
committer | kingosticks <nick@nsteel.co.uk> | 2023-04-24 17:29:22 +0300 |
commit | 3d01c9b363875d8558a2a3931682dcc5f87e5e86 (patch) | |
tree | 61e17d6e0c7121e7a61cacf18096bf31d135ca1a /audio/spotify | |
parent | 8d6751c88d8a11680f89c232cef94ac918010871 (diff) |
spotify: check cached creds username before use
If a username was specified, only use cached credentials that match
that username.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1192>
Diffstat (limited to 'audio/spotify')
-rw-r--r-- | audio/spotify/src/common.rs | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/audio/spotify/src/common.rs b/audio/spotify/src/common.rs index f373af655..4465cec82 100644 --- a/audio/spotify/src/common.rs +++ b/audio/spotify/src/common.rs @@ -132,16 +132,31 @@ impl Settings { let cache = Cache::new(credentials_cache, None, files_cache, max_size)?; if let Some(cached_cred) = cache.credentials() { - gst::debug!(cat, obj: &src, "reuse credentials from cache",); - if let Ok((session, _credentials)) = Session::connect( - SessionConfig::default(), - cached_cred, - Some(cache.clone()), - true, - ) - .await - { - return Ok(session); + if !self.username.is_empty() && self.username != cached_cred.username { + gst::debug!( + cat, + obj: &src, + "ignore cached credentials for user {} which mismatch user {}", + cached_cred.username, + self.username + ); + } else { + gst::debug!( + cat, + obj: &src, + "reuse cached credentials for user {}", + cached_cred.username + ); + if let Ok((session, _credentials)) = Session::connect( + SessionConfig::default(), + cached_cred, + Some(cache.clone()), + true, + ) + .await + { + return Ok(session); + } } } |