recycleactor commited on
Commit
a16b74d
·
verified ·
1 Parent(s): 6e726e5

Upload 2 files

Browse files
Files changed (1) hide show
  1. 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
  }