recycleactor commited on
Commit
e4cd48a
·
verified ·
1 Parent(s): f618c33

Upload main.rs

Browse files
Files changed (1) hide show
  1. src/main.rs +72 -34
src/main.rs CHANGED
@@ -1605,46 +1605,84 @@ async fn pair_complete(State(state): State<AppState>, Form(f): Form<PairComplete
1605
  Err(e) => oauth_err = Some(e),
1606
  }
1607
 
1608
- if let Ok(ud) = gw_light_call(&client, &jar, "deezer.getUserData", "null", json!({})).await {
1609
- let token = ud["checkForm"].as_str().unwrap_or("").to_string();
1610
- if !token.is_empty() {
1611
- if let Err(e) = gw_light_call(
1612
- &client,
1613
- &jar,
1614
- "user.checkCredentials",
1615
- &token,
1616
- json!({
1617
- "login": email,
1618
- "password": pass_md5,
1619
- "checkFormLogin": token
1620
- }),
1621
- )
1622
- .await
1623
- {
1624
- if access_token_out.is_none() {
1625
- let mut map = state.pair.write().await;
1626
- if let Some(s) = map.get_mut(&code) {
1627
- s.error = Some(format!("gw:checkCredentials:{e}"));
1628
- }
1629
- return Html(format!(
1630
- "<h3>Ошибка входа</h3><pre>{}</pre>",
1631
- htmlesc(&format!("gw:checkCredentials:{e}"))
1632
- ))
1633
- .into_response();
1634
  }
1635
- gw_err = Some(format!("gw:checkCredentials:{e}"));
1636
- } else {
1637
- gw_token = Some(token.clone());
1638
- gw_uid = ud["USER"]["USER_ID"]
1639
- .as_i64()
1640
- .map(|n| n.to_string())
1641
- .filter(|s| !s.trim().is_empty());
1642
 
1643
- if let Ok(v) = gw_light_call(&client, &jar, "user.getArl", &token, json!({})).await {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1644
  if let Some(s) = v.as_str() {
1645
  if s.len() > 20 {
1646
  arl_out = Some(s.to_string());
 
 
1647
  }
 
 
 
 
 
 
 
1648
  }
1649
  }
1650
  }
 
1605
  Err(e) => oauth_err = Some(e),
1606
  }
1607
 
1608
+ let mut ud: Option<serde_json::Value> = None;
1609
+ for attempt in 0..2 {
1610
+ match gw_light_call(&client, &jar, "deezer.getUserData", "null", json!({})).await {
1611
+ Ok(v) => {
1612
+ ud = Some(v);
1613
+ break;
1614
+ }
1615
+ Err(e) => {
1616
+ gw_err = Some(format!("gw:getUserData:{e}"));
1617
+ if attempt == 0 {
1618
+ let _ = client
1619
+ .get("https://www.deezer.com/")
1620
+ .header(ACCEPT, "*/*")
1621
+ .header("Accept-Language", "en-US,en;q=0.9")
1622
+ .header(
1623
+ "User-Agent",
1624
+ "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0",
1625
+ )
1626
+ .send()
1627
+ .await;
 
 
 
 
 
 
1628
  }
1629
+ }
1630
+ }
1631
+ }
 
 
 
 
1632
 
1633
+ if let Some(ud) = ud {
1634
+ let token = ud["checkForm"].as_str().unwrap_or("").to_string();
1635
+ if token.is_empty() {
1636
+ if gw_err.is_none() {
1637
+ gw_err = Some("gw:no_checkForm".to_string());
1638
+ }
1639
+ } else if let Err(e) = gw_light_call(
1640
+ &client,
1641
+ &jar,
1642
+ "user.checkCredentials",
1643
+ &token,
1644
+ json!({
1645
+ "login": email,
1646
+ "password": pass_md5,
1647
+ "checkFormLogin": token
1648
+ }),
1649
+ )
1650
+ .await
1651
+ {
1652
+ if access_token_out.is_none() {
1653
+ let mut map = state.pair.write().await;
1654
+ if let Some(s) = map.get_mut(&code) {
1655
+ s.error = Some(format!("gw:checkCredentials:{e}"));
1656
+ }
1657
+ return Html(format!(
1658
+ "<h3>Ошибка входа</h3><pre>{}</pre>",
1659
+ htmlesc(&format!("gw:checkCredentials:{e}"))
1660
+ ))
1661
+ .into_response();
1662
+ }
1663
+ gw_err = Some(format!("gw:checkCredentials:{e}"));
1664
+ } else {
1665
+ gw_token = Some(token.clone());
1666
+ gw_uid = ud["USER"]["USER_ID"]
1667
+ .as_i64()
1668
+ .map(|n| n.to_string())
1669
+ .filter(|s| !s.trim().is_empty());
1670
+
1671
+ match gw_light_call(&client, &jar, "user.getArl", &token, json!({})).await {
1672
+ Ok(v) => {
1673
  if let Some(s) = v.as_str() {
1674
  if s.len() > 20 {
1675
  arl_out = Some(s.to_string());
1676
+ } else if gw_err.is_none() {
1677
+ gw_err = Some("gw:no_arl".to_string());
1678
  }
1679
+ } else if gw_err.is_none() {
1680
+ gw_err = Some("gw:no_arl".to_string());
1681
+ }
1682
+ }
1683
+ Err(e) => {
1684
+ if gw_err.is_none() {
1685
+ gw_err = Some(format!("gw:getArl:{e}"));
1686
  }
1687
  }
1688
  }