lx_parser/
lib.rs

1use serde::Deserialize;
2use std::str::FromStr;
3use url::Url;
4
5#[derive(Debug, Deserialize)]
6#[allow(non_snake_case)]
7#[allow(dead_code)]
8pub struct ToDo {
9    userId: u32,
10    id: u32,
11    title: String,
12    completed: bool,
13}
14
15#[allow(dead_code)]
16#[derive(Debug)]
17pub struct Request<'req> {
18    pub protocol: &'req str,
19    pub host: &'req str,
20    pub path: &'req str,
21    pub query: &'req str,
22}
23
24impl Request<'_> {
25    pub fn create_url(&self) -> Url {
26        let request: Request = Request {
27            protocol: self.protocol,
28            host: self.host,
29            path: self.path,
30            query: self.query,
31        };
32
33        println!("{request:#?}");
34
35        let url = Url::from_str(
36            format!(
37                "{}://{}{}{}",
38                request.protocol, request.host, request.path, request.query
39            )
40            .as_str(),
41        )
42        .unwrap();
43        url
44    }
45
46    pub async fn create_request(url: &str) {
47        let result: Result<ToDo, _> = reqwest::get(Url::parse(url).unwrap())
48            .await
49            .unwrap()
50            .json()
51            .await;
52        println!("{result:#?}");
53    }
54}