Skip to main content

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 = "@")]
24    pub 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        default = "ExtendTrialResponse::default_retry_count",
69        rename = "@RetryCount"
70    )]
71    pub retry_count: i32,
72    #[serde(
73        default = "ExtendTrialResponse::default_retry_after_fail_sec",
74        rename = "@RetryAfterFailSec"
75    )]
76    pub retry_after_fail_sec: i32,
77    #[serde(
78        default = "ExtendTrialResponse::default_extend_before_expire_sec",
79        rename = "@ExtendBeforeExpireSec"
80    )]
81    pub extend_before_expire_sec: i32,
82    #[serde(
83        default = "ExtendTrialResponse::default_sleep_before_nuke_sec",
84        rename = "@SleepBeforeNukeSec"
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 InvalidateLicense {
113    #[serde(rename = "@UserId")]
114    pub user_id: u64,
115}
116
117#[derive(Debug, Serialize, Deserialize)]
118pub struct QueryEntitlements {
119    #[serde(rename = "@UserId")]
120    pub user_id: u64,
121    #[serde(rename = "@OfferId")]
122    pub offer_id: String,
123    #[serde(rename = "@ItemId")]
124    pub item_id: String,
125    #[serde(rename = "@Group")]
126    pub group: String,
127    #[serde(rename = "@includeChildGroups")]
128    pub include_child_groups: bool,
129    #[serde(rename = "@includeExpiredTrialDLC")]
130    pub include_expired_trial_dlc: bool,
131    #[serde(rename = "FilterOffers")]
132    pub filter_offers: Vec<String>,
133    #[serde(rename = "FilterItems")]
134    pub filter_items: Vec<String>,
135    #[serde(rename = "FilterGroups")]
136    pub filter_groups: Vec<String>,
137}
138
139#[derive(Debug, Serialize, Deserialize)]
140pub struct QueryEntitlementsResponse {
141    #[serde(rename = "Entitlements")]
142    pub entitlements: Vec<Entitlement>,
143}
144
145#[derive(Debug, Serialize, Deserialize)]
146pub struct QueryManifest {
147    #[serde(rename = "@UserId")]
148    pub user_id: u64,
149    #[serde(rename = "@Manifest")]
150    pub manifest: String,
151}
152
153#[derive(Debug, Serialize, Deserialize)]
154pub struct QueryManifestResponse {
155    #[serde(rename = "Entitlements")]
156    pub entitlements: Vec<Entitlement>,
157}
158
159#[derive(Debug, Serialize, Deserialize)]
160pub struct RefreshEntitlements;
161
162#[derive(Debug, Serialize, Deserialize)]
163pub struct RequestLicense {
164    #[serde(rename = "@UserId")]
165    pub user_id: u64,
166    #[serde(rename = "@RequestTicket")]
167    pub request_ticket: String,
168    #[serde(rename = "@TicketEngine")]
169    pub ticket_engine: i32,
170}
171
172#[derive(Debug, Serialize, Deserialize)]
173pub struct RequestLicenseResponse {
174    #[serde(rename = "@License")]
175    pub license: String,
176}