freedom_api/
gateway_licenses.rs1use freedom_models::gateway_licenses;
2
3use crate::{Api, error::Error};
4
5#[derive(Debug, serde::Serialize)]
6#[serde(rename_all = "camelCase")]
7struct Verify {
8 license_key: String,
9}
10
11pub trait GatewayApi: Api {
13 fn get_all_gateway_licenses(
14 &self,
15 ) -> impl Future<Output = Result<gateway_licenses::View, Error>> + Send + Sync {
16 async move {
17 let uri = self.path_to_url("gateway-licenses")?;
18 self.get_json_map(uri).await
19 }
20 }
21
22 fn get_all_gateway_license(
23 &self,
24 id: u32,
25 ) -> impl Future<Output = Result<gateway_licenses::ViewOne, Error>> + Send + Sync {
26 async move {
27 let uri = self.path_to_url(format!("gateway-licenses/{id}"))?;
28 self.get_json_map(uri).await
29 }
30 }
31
32 fn verify_gateway_license(
33 &self,
34 license_key: &str,
35 ) -> impl Future<Output = Result<gateway_licenses::VerifyResponse, Error>> + Send + Sync {
36 async move {
37 let request = Verify {
38 license_key: license_key.to_string(),
39 };
40 let uri = self.path_to_url("gateway-licenses/verify")?;
41 self.post_json_map(uri, request).await
42 }
43 }
44
45 fn regenerate_gateway_license(
46 &self,
47 id: u32,
48 ) -> impl Future<Output = Result<gateway_licenses::RegenerateResponse, Error>> + Send + Sync
49 {
50 async move {
51 let uri = self.path_to_url(format!("gateway-licenses/{id}/regenerate"))?;
52 self.post_json_map(uri, serde_json::json!({})).await
53 }
54 }
55}
56
57impl<T> GatewayApi for T where T: Api {}