This commit is contained in:
Neshura 2023-12-30 01:27:11 +01:00
parent 8be74585a0
commit 8c1da63e0c
Signed by: Neshura
GPG key ID: B6983AAA6B9A7A6C
6 changed files with 267 additions and 220 deletions

View file

@ -1,4 +1,5 @@
use std::collections::HashMap;
use crate::config::Config;
use crate::{write_error, HTTP_CLIENT};
use lemmy_api_common::community::{ListCommunities, ListCommunitiesResponse};
use lemmy_api_common::lemmy_db_views::structs::PostView;
use lemmy_api_common::person::{Login, LoginResponse};
@ -7,8 +8,7 @@ use lemmy_api_common::sensitive::Sensitive;
use lemmy_db_schema::newtypes::{CommunityId, PostId};
use lemmy_db_schema::{ListingType, PostFeatureType};
use reqwest::StatusCode;
use crate::config::Config;
use crate::{HTTP_CLIENT, write_error};
use std::collections::HashMap;
pub(crate) struct Lemmy {
jwt_token: Sensitive<String>,
@ -26,18 +26,22 @@ pub(crate) async fn login(config: &Config) -> Result<Lemmy, ()> {
.post(config.instance.to_owned() + "/api/v3/user/login")
.json(&login_params)
.send()
.await {
.await
{
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
match response.status() {
StatusCode::OK => {
let data: LoginResponse = response.json().await.expect("Successful Login Request should return JSON");
let data: LoginResponse = response
.json()
.await
.expect("Successful Login Request should return JSON");
match data.jwt {
Some(token) => Ok(Lemmy {
jwt_token: token.clone(),
@ -49,7 +53,7 @@ pub(crate) async fn login(config: &Config) -> Result<Lemmy, ()> {
Err(())
}
}
},
}
status => {
let err_msg = format!("Unexpected HTTP Status '{}' during Login", status);
write_error(err_msg);
@ -65,21 +69,20 @@ impl Lemmy {
.bearer_auth(&self.jwt_token.to_string())
.json(&post)
.send()
.await {
Ok(data) => {
match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
}
.await
{
Ok(data) => match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(());
}
},
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
@ -88,7 +91,7 @@ impl Lemmy {
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
@ -101,21 +104,20 @@ impl Lemmy {
.bearer_auth(&self.jwt_token.to_string())
.json(&params)
.send()
.await {
Ok(data) => {
match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
}
.await
{
Ok(data) => match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(());
}
},
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
@ -124,7 +126,7 @@ impl Lemmy {
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
@ -161,21 +163,20 @@ impl Lemmy {
.bearer_auth(&self.jwt_token.to_string())
.query(&list_params)
.send()
.await {
Ok(data) => {
match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
}
.await
{
Ok(data) => match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(());
}
},
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
@ -184,16 +185,16 @@ impl Lemmy {
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
Ok(json_data.posts.iter().filter(|post| {
post.post.featured_community
})
Ok(json_data
.posts
.iter()
.filter(|post| post.post.featured_community)
.cloned()
.collect()
)
.collect())
}
pub(crate) async fn get_local_pinned(&self) -> Result<Vec<PostView>, ()> {
@ -207,21 +208,20 @@ impl Lemmy {
.bearer_auth(&self.jwt_token.to_string())
.query(&list_params)
.send()
.await {
Ok(data) => {
match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
}
.await
{
Ok(data) => match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(());
}
},
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
@ -230,16 +230,16 @@ impl Lemmy {
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
Ok(json_data.posts.iter().filter(|post| {
post.post.featured_local
})
Ok(json_data
.posts
.iter()
.filter(|post| post.post.featured_local)
.cloned()
.collect()
)
.collect())
}
pub(crate) async fn get_communities(&self) -> Result<HashMap<String, CommunityId>, ()> {
@ -253,21 +253,20 @@ impl Lemmy {
.bearer_auth(&self.jwt_token.to_string())
.query(&list_params)
.send()
.await {
Ok(data) => {
match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
}
.await
{
Ok(data) => match data.text().await {
Ok(data) => data,
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(());
}
},
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};
@ -276,7 +275,7 @@ impl Lemmy {
Err(e) => {
let err_msg = format!("{e}");
write_error(err_msg);
return Err(())
return Err(());
}
};