static_valorant_api/endpoints/
contracts.rs

1use crate::models::api_result::APIResult;
2use crate::models::contract::Contract;
3use crate::models::language::Language;
4use url::Url;
5use uuid::Uuid;
6
7pub async fn get_contracts(
8    client: &reqwest::Client,
9    language: Option<Language>,
10) -> reqwest::Result<Vec<Contract>> {
11    let mut url = Url::parse("https://valorant-api.com/v1/contracts").unwrap();
12    if let Some(language) = language {
13        url.query_pairs_mut()
14            .append_pair("language", &format!("{}", language));
15    }
16    client
17        .get(url)
18        .send()
19        .await?
20        .json::<APIResult<Vec<_>>>()
21        .await
22        .map(|x| x.data)
23}
24
25pub async fn get_contract(
26    client: &reqwest::Client,
27    contract: Uuid,
28    language: Option<Language>,
29) -> reqwest::Result<Contract> {
30    let mut url = Url::parse(&format!(
31        "https://valorant-api.com/v1/contracts/{}",
32        contract
33    ))
34    .unwrap();
35    if let Some(language) = language {
36        url.query_pairs_mut()
37            .append_pair("language", &format!("{}", language));
38    }
39    client
40        .get(url)
41        .send()
42        .await?
43        .json::<APIResult<_>>()
44        .await
45        .map(|x| x.data)
46}