mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
core: make it easier to change declared OS
This commit is contained in:
parent
29f3345030
commit
0fbd19b521
2 changed files with 14 additions and 7 deletions
|
@ -16,17 +16,17 @@ pub struct SessionConfig {
|
||||||
pub autoplay: Option<bool>,
|
pub autoplay: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for SessionConfig {
|
impl SessionConfig {
|
||||||
fn default() -> SessionConfig {
|
pub(crate) fn default_for_os(os: &str) -> Self {
|
||||||
let device_id = uuid::Uuid::new_v4().as_hyphenated().to_string();
|
let device_id = uuid::Uuid::new_v4().as_hyphenated().to_string();
|
||||||
let client_id = match std::env::consts::OS {
|
let client_id = match os {
|
||||||
"android" => ANDROID_CLIENT_ID,
|
"android" => ANDROID_CLIENT_ID,
|
||||||
"ios" => IOS_CLIENT_ID,
|
"ios" => IOS_CLIENT_ID,
|
||||||
_ => KEYMASTER_CLIENT_ID,
|
_ => KEYMASTER_CLIENT_ID,
|
||||||
}
|
}
|
||||||
.to_owned();
|
.to_owned();
|
||||||
|
|
||||||
SessionConfig {
|
Self {
|
||||||
client_id,
|
client_id,
|
||||||
device_id,
|
device_id,
|
||||||
proxy: None,
|
proxy: None,
|
||||||
|
@ -37,6 +37,12 @@ impl Default for SessionConfig {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for SessionConfig {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self::default_for_os(std::env::consts::OS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Hash, PartialOrd, Ord, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, Hash, PartialOrd, Ord, PartialEq, Eq)]
|
||||||
pub enum DeviceType {
|
pub enum DeviceType {
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
|
|
|
@ -190,9 +190,10 @@ impl SpClient {
|
||||||
// on macOS and Windows. On Android and iOS we can send a platform-specific client ID and are
|
// on macOS and Windows. On Android and iOS we can send a platform-specific client ID and are
|
||||||
// then presented with a hash cash challenge. On Linux, we have to pass the old keymaster ID.
|
// then presented with a hash cash challenge. On Linux, we have to pass the old keymaster ID.
|
||||||
// We delegate most of this logic to `SessionConfig`.
|
// We delegate most of this logic to `SessionConfig`.
|
||||||
let client_id = match OS {
|
let os = OS;
|
||||||
|
let client_id = match os {
|
||||||
"macos" | "windows" => self.session().client_id(),
|
"macos" | "windows" => self.session().client_id(),
|
||||||
_ => SessionConfig::default().client_id,
|
os => SessionConfig::default_for_os(os).client_id,
|
||||||
};
|
};
|
||||||
client_data.client_id = client_id;
|
client_data.client_id = client_id;
|
||||||
|
|
||||||
|
@ -207,7 +208,7 @@ impl SpClient {
|
||||||
let os_version = sys.os_version().unwrap_or_else(|| String::from("0"));
|
let os_version = sys.os_version().unwrap_or_else(|| String::from("0"));
|
||||||
let kernel_version = sys.kernel_version().unwrap_or_else(|| String::from("0"));
|
let kernel_version = sys.kernel_version().unwrap_or_else(|| String::from("0"));
|
||||||
|
|
||||||
match OS {
|
match os {
|
||||||
"windows" => {
|
"windows" => {
|
||||||
let os_version = os_version.parse::<f32>().unwrap_or(10.) as i32;
|
let os_version = os_version.parse::<f32>().unwrap_or(10.) as i32;
|
||||||
let kernel_version = kernel_version.parse::<i32>().unwrap_or(21370);
|
let kernel_version = kernel_version.parse::<i32>().unwrap_or(21370);
|
||||||
|
|
Loading…
Reference in a new issue