Spaces:
Paused
Paused
Upload 2 files
Browse files- src/main.rs +43 -1
src/main.rs
CHANGED
|
@@ -634,6 +634,8 @@ struct PairSession {
|
|
| 634 |
created_ms: u128,
|
| 635 |
access_token: Option<String>,
|
| 636 |
user_id: Option<String>,
|
|
|
|
|
|
|
| 637 |
error: Option<String>,
|
| 638 |
}
|
| 639 |
|
|
@@ -665,6 +667,8 @@ async fn pair_start(State(state): State<AppState>) -> impl IntoResponse {
|
|
| 665 |
created_ms,
|
| 666 |
access_token: None,
|
| 667 |
user_id: None,
|
|
|
|
|
|
|
| 668 |
error: None,
|
| 669 |
},
|
| 670 |
);
|
|
@@ -689,7 +693,7 @@ async fn pair_status(State(state): State<AppState>, Query(q): Query<PairStatusQu
|
|
| 689 |
if let Some(tok) = &sess.access_token {
|
| 690 |
return (
|
| 691 |
StatusCode::OK,
|
| 692 |
-
Json(json!({ "status": "ok", "access_token": tok, "user_id": sess.user_id })),
|
| 693 |
)
|
| 694 |
.into_response();
|
| 695 |
}
|
|
@@ -835,11 +839,49 @@ async fn pair_complete(State(state): State<AppState>, Form(f): Form<PairComplete
|
|
| 835 |
};
|
| 836 |
let uid = me.get("id").and_then(|x| x.as_i64()).map(|n| n.to_string());
|
| 837 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 838 |
{
|
| 839 |
let mut map = state.pair.write().unwrap();
|
| 840 |
if let Some(s) = map.get_mut(&code) {
|
| 841 |
s.access_token = Some(access_token);
|
| 842 |
s.user_id = uid;
|
|
|
|
|
|
|
| 843 |
s.error = None;
|
| 844 |
}
|
| 845 |
}
|
|
|
|
| 634 |
created_ms: u128,
|
| 635 |
access_token: Option<String>,
|
| 636 |
user_id: Option<String>,
|
| 637 |
+
email: Option<String>,
|
| 638 |
+
arl: Option<String>,
|
| 639 |
error: Option<String>,
|
| 640 |
}
|
| 641 |
|
|
|
|
| 667 |
created_ms,
|
| 668 |
access_token: None,
|
| 669 |
user_id: None,
|
| 670 |
+
email: None,
|
| 671 |
+
arl: None,
|
| 672 |
error: None,
|
| 673 |
},
|
| 674 |
);
|
|
|
|
| 693 |
if let Some(tok) = &sess.access_token {
|
| 694 |
return (
|
| 695 |
StatusCode::OK,
|
| 696 |
+
Json(json!({ "status": "ok", "access_token": tok, "user_id": sess.user_id, "email": sess.email, "arl": sess.arl })),
|
| 697 |
)
|
| 698 |
.into_response();
|
| 699 |
}
|
|
|
|
| 839 |
};
|
| 840 |
let uid = me.get("id").and_then(|x| x.as_i64()).map(|n| n.to_string());
|
| 841 |
|
| 842 |
+
let mut arl_out: Option<String> = None;
|
| 843 |
+
if let Ok(ud) = gw_light_call(&client, "deezer.getUserData", "null", json!({})).await {
|
| 844 |
+
let token = ud["checkForm"].as_str().unwrap_or("").to_string();
|
| 845 |
+
if !token.is_empty() {
|
| 846 |
+
match gw_light_call(&client, "user.getArl", &token, json!({})).await {
|
| 847 |
+
Ok(v) => {
|
| 848 |
+
if let Some(s) = v.as_str() {
|
| 849 |
+
if s.len() > 20 {
|
| 850 |
+
arl_out = Some(s.to_string());
|
| 851 |
+
}
|
| 852 |
+
}
|
| 853 |
+
}
|
| 854 |
+
Err(_) => {
|
| 855 |
+
let _ = gw_light_call(
|
| 856 |
+
&client,
|
| 857 |
+
"user.checkCredentials",
|
| 858 |
+
&token,
|
| 859 |
+
json!({
|
| 860 |
+
"login": email,
|
| 861 |
+
"password": pass_md5,
|
| 862 |
+
"checkFormLogin": token
|
| 863 |
+
}),
|
| 864 |
+
)
|
| 865 |
+
.await;
|
| 866 |
+
if let Ok(v2) = gw_light_call(&client, "user.getArl", &token, json!({})).await {
|
| 867 |
+
if let Some(s) = v2.as_str() {
|
| 868 |
+
if s.len() > 20 {
|
| 869 |
+
arl_out = Some(s.to_string());
|
| 870 |
+
}
|
| 871 |
+
}
|
| 872 |
+
}
|
| 873 |
+
}
|
| 874 |
+
}
|
| 875 |
+
}
|
| 876 |
+
}
|
| 877 |
+
|
| 878 |
{
|
| 879 |
let mut map = state.pair.write().unwrap();
|
| 880 |
if let Some(s) = map.get_mut(&code) {
|
| 881 |
s.access_token = Some(access_token);
|
| 882 |
s.user_id = uid;
|
| 883 |
+
s.email = Some(email);
|
| 884 |
+
s.arl = arl_out;
|
| 885 |
s.error = None;
|
| 886 |
}
|
| 887 |
}
|