obscuravpn_api/
token.rs

1use serde::{Deserialize, Serialize};
2use url::Url;
3
4#[derive(Debug, Serialize, Deserialize, Clone)]
5pub struct AcquireToken {
6    pub account_id: String,
7}
8
9impl AcquireToken {
10    pub fn to_request(&self, base_url: impl AsRef<str>) -> anyhow::Result<http::Request<String>> {
11        let url = Url::parse(base_url.as_ref())?.join("token")?;
12        Ok(http::Request::post(url.as_str())
13            .header(http::header::CONTENT_TYPE, "application/json")
14            .body(serde_json::to_string(self)?)?)
15    }
16}
17
18#[test]
19fn test_json() {
20    let json = r#"
21    {
22      "account_id": "0000000000000000000"
23    }
24    "#;
25    check_json(json);
26}
27
28#[cfg(test)]
29pub(crate) fn check_json(json: &str) {
30    let login: AcquireToken = serde_json::from_str(json).unwrap();
31    let json: serde_json::Value = serde_json::from_str(json).unwrap();
32    assert_eq!(json, serde_json::to_value(login).unwrap());
33}