use jwfetch::{request, FetchError, Method, RequestConfig};
use serde_derive::{Deserialize, Serialize};
#[derive(Deserialize, Debug, Serialize, Clone)]
pub struct UserInfo {
pub id: String,
pub username: String,
}
pub async fn get_user_info() -> Result<UserInfo, FetchError> {
request::<UserInfo>(RequestConfig {
url: "user/info".to_owned(),
method: Method::GET,
base_url: Some("http://127.0.0.1:4523/m1/595662-0-default/api/".to_string()),
origin_headers: None,
headers: None,
data: None,
timeout: None,
extra_header_keys: Some(vec!["user-agent", "cookie", "referer"]),
})
.await
}
#[tokio::main]
async fn main() {
let info = get_user_info().await;
match info {
Ok(info) => {
println!("{:?}", info);
}
Err(e) => {
match e {
FetchError::Http(err) => {
println!("Http error [{}]: {}", err.code, err.message);
}
FetchError::Parse(err) => {
println!(
"Parse error [{}]: {}. \nOrigin body: {}",
err.code, err.message, err.body
);
}
FetchError::Network(network_error) => {
println!("network_error: {}", network_error);
}
}
}
}
}