Skip to main content

luarmor/models/v3/keys/
stats.rs

1use api_builder::{Endpoint, api_endpoint};
2use serde::Deserialize;
3use time::OffsetDateTime;
4use typed_builder::TypedBuilder;
5
6/// You can fetch the stats of your API key.
7///
8/// This includes
9/// - usage details
10/// - remaining obfuscations
11/// - max obfuscations
12/// - max users
13/// - execution amounts
14/// - monthly executions
15/// - graph values
16/// - etc..
17///
18/// ⚠️ Authenticated ⚠️
19///
20/// View full response at [ApiKeyStatsResponse].
21///
22/// [Reference](https://docs.luarmor.net/#getting-api-key-stats)
23#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, TypedBuilder)]
24#[builder(field_defaults(setter(into)))]
25pub struct ApiKeyStats<'a> {
26    pub api_key: &'a str,
27
28    /// If `true`, it will return the info about user limits. (e.g. how many users there are, # of banned, # of whitelisted)
29    #[builder(default = false)]
30    pub no_users: bool,
31}
32#[api_endpoint(method = GET, path = format!("/v3/keys/{}/stats?noUsers={}", self.api_key, self.no_users))]
33impl Endpoint for ApiKeyStats<'_> {}
34
35#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Deserialize)]
36pub struct ExecutionData {
37    pub frequency: u32,
38    pub executions: Vec<u32>,
39}
40
41#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Deserialize)]
42pub struct ScriptDefaultStats {
43    pub scripts: u8,
44    pub users: u32,
45    pub obfuscations: u32,
46}
47
48#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
49pub struct ScriptStats {
50    pub obfuscations: u32,
51    pub scripts: u8,
52    pub users: u32,
53    pub attacks_blocked: u32,
54    pub default: ScriptDefaultStats,
55    #[serde(with = "time::serde::timestamp")]
56    pub reset_at: OffsetDateTime,
57}
58
59#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
60pub struct ScriptStatsNoUsers {
61    pub obfuscations: u32,
62    pub scripts: u8,
63    pub attacks_blocked: u32,
64    pub default: ScriptDefaultStats,
65    #[serde(with = "time::serde::timestamp")]
66    pub reset_at: OffsetDateTime,
67}
68
69/// [Reference](https://docs.luarmor.net/#tab-id-200-ok)
70#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
71pub struct ApiKeyStatsResponse {
72    pub execution_data: ExecutionData,
73    pub stats: ScriptStats,
74}
75
76/// [Reference](https://docs.luarmor.net/#tab-id-200-ok)
77#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
78pub struct ApiKeyStatsNoUsersResponse {
79    pub execution_data: ExecutionData,
80    pub stats: ScriptStatsNoUsers,
81}