origin_sdk/protocol/
entitlements.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub struct ConsumeEntitlement {
5    #[serde(rename = "@UserId")]
6    pub user_id: u64,
7    #[serde(rename = "@Uses")]
8    pub uses: i32,
9    #[serde(rename = "@bOveruse")]
10    pub b_overuse: bool,
11    #[serde(rename = "Entitlement")]
12    pub entitlement: Entitlement,
13}
14
15#[derive(Debug, Serialize, Deserialize)]
16pub struct ConsumeEntitlementResponse {
17    #[serde(rename = "Entitlement")]
18    pub entitlement: Entitlement,
19}
20
21#[derive(Debug, Serialize, Deserialize)]
22pub struct Entitlement {
23    #[serde(rename = "@Type")]
24    pub r#type: String,
25    #[serde(rename = "@ItemId")]
26    pub item_id: String,
27    #[serde(rename = "@EntitlementId")]
28    pub entitlement_id: String,
29    #[serde(rename = "@EntitlementTag")]
30    pub entitlement_tag: String,
31    #[serde(rename = "@Group")]
32    pub group: String,
33    #[serde(rename = "@ResourceId")]
34    pub resource_id: String,
35    #[serde(rename = "@UseCount")]
36    pub use_count: i32,
37    #[serde(rename = "@Expiration")]
38    pub expiration: String,
39    #[serde(rename = "@GrantDate")]
40    pub grant_date: String,
41    #[serde(rename = "@LastModifiedDate")]
42    pub last_modified_date: String,
43    #[serde(rename = "@Version")]
44    pub version: i32,
45}
46
47#[derive(Debug, Serialize, Deserialize)]
48pub struct ExtendTrial {
49    #[serde(rename = "@UserId")]
50    pub user_id: u64,
51    #[serde(rename = "@RequestTicket")]
52    pub request_ticket: String,
53    #[serde(rename = "@TicketEngine")]
54    pub ticket_engine: i32,
55}
56
57#[derive(Debug, Serialize, Deserialize)]
58pub struct ExtendTrialResponse {
59    #[serde(rename = "@Code")]
60    pub code: i32,
61    #[serde(rename = "@TotalTimeRemaining")]
62    pub total_time_remaining: i32,
63    #[serde(rename = "@TimeGranted")]
64    pub time_granted: i32,
65    #[serde(rename = "@ResponseTicket")]
66    pub response_ticket: String,
67    #[serde(
68        rename = "@RetryCount",
69        default = "ExtendTrialResponse::default_retry_count"
70    )]
71    pub retry_count: i32,
72    #[serde(
73        rename = "@RetryAfterFailSec",
74        default = "ExtendTrialResponse::default_retry_after_fail_sec"
75    )]
76    pub retry_after_fail_sec: i32,
77    #[serde(
78        rename = "@ExtendBeforeExpireSec",
79        default = "ExtendTrialResponse::default_extend_before_expire_sec"
80    )]
81    pub extend_before_expire_sec: i32,
82    #[serde(
83        rename = "@SleepBeforeNukeSec",
84        default = "ExtendTrialResponse::default_sleep_before_nuke_sec"
85    )]
86    pub sleep_before_nuke_sec: i32,
87}
88
89impl ExtendTrialResponse {
90    #[must_use]
91    pub fn default_retry_count() -> i32 {
92        5i32
93    }
94
95    #[must_use]
96    pub fn default_retry_after_fail_sec() -> i32 {
97        10i32
98    }
99
100    #[must_use]
101    pub fn default_extend_before_expire_sec() -> i32 {
102        60i32
103    }
104
105    #[must_use]
106    pub fn default_sleep_before_nuke_sec() -> i32 {
107        20i32
108    }
109}
110
111#[derive(Debug, Serialize, Deserialize)]
112pub struct QueryEntitlements {
113    #[serde(rename = "@UserId")]
114    pub user_id: u64,
115    #[serde(rename = "@OfferId")]
116    pub offer_id: String,
117    #[serde(rename = "@ItemId")]
118    pub item_id: String,
119    #[serde(rename = "@Group")]
120    pub group: String,
121    #[serde(rename = "@includeChildGroups")]
122    pub include_child_groups: bool,
123    #[serde(rename = "@includeExpiredTrialDLC")]
124    pub include_expired_trial_dlc: bool,
125    #[serde(rename = "FilterOffers", default)]
126    pub filter_offers: Vec<String>,
127    #[serde(rename = "FilterItems", default)]
128    pub filter_items: Vec<String>,
129    #[serde(rename = "FilterGroups", default)]
130    pub filter_groups: Vec<String>,
131}
132
133#[derive(Debug, Serialize, Deserialize)]
134pub struct QueryEntitlementsResponse {
135    #[serde(rename = "Entitlement", default)]
136    pub entitlements: Vec<Entitlement>,
137}
138
139#[derive(Debug, Serialize, Deserialize)]
140pub struct QueryManifest {
141    #[serde(rename = "@UserId")]
142    pub user_id: u64,
143    #[serde(rename = "@Manifest")]
144    pub manifest: String,
145}
146
147#[derive(Debug, Serialize, Deserialize)]
148pub struct QueryManifestResponse {
149    #[serde(rename = "Entitlement", default)]
150    pub entitlements: Vec<Entitlement>,
151}