deepl_rustls/endpoint/
usage.rs1use super::Result;
2use crate::{DeepLApi, Error};
3use serde::Deserialize;
4
5#[derive(Deserialize)]
7pub struct UsageResponse {
8 pub character_count: u64,
9 pub character_limit: u64,
10}
11
12impl DeepLApi {
13 pub async fn get_usage(&self) -> Result<UsageResponse> {
27 let response = self
28 .post(self.get_endpoint("usage"))
29 .send()
30 .await
31 .map_err(|err| Error::RequestFail(err.to_string()))?;
32
33 if !response.status().is_success() {
34 return super::extract_deepl_error(response).await;
35 }
36
37 let response: UsageResponse = response.json().await.map_err(|err| {
38 Error::InvalidResponse(format!("convert json bytes to Rust type: {err}"))
39 })?;
40
41 Ok(response)
42 }
43}
44
45#[tokio::test]
46async fn test_usage() {
47 let key = std::env::var("DEEPL_API_KEY").unwrap();
48 let api = DeepLApi::with(&key).new();
49 let response = api.get_usage().await.unwrap();
50
51 assert_ne!(response.character_count, 0);
52}