freedom_api/
gateway_licenses.rs

1use 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
11/// Extension API for interacting with the Freedom Gateway licensing architecture
12pub 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 {}