1use crate::prelude::*;
2
3pub struct CharacterGroup<'a> {
5 pub(crate) esi: &'a Esi,
6}
7
8#[derive(Debug, Deserialize)]
9#[allow(missing_docs)]
10pub struct CharacterPublicInfo {
11 pub achievement_score: Option<i64>,
12 pub alliance_id: Option<i32>,
13 pub birthday: String,
14 pub bloodline_id: i32,
15 pub character_title_id: Option<String>,
16 pub corporation_id: i32,
17 pub corporation_title: Option<String>,
18 pub description: Option<String>,
19 pub faction_id: Option<i32>,
20 pub gender: String,
21 pub name: String,
22 pub race_id: u16,
23 pub security_status: Option<f64>,
24}
25
26#[derive(Debug, Deserialize)]
27#[allow(missing_docs)]
28pub struct CharacterCorporationHistoryItem {
29 pub corporation_id: i32,
30 pub is_deleted: Option<bool>,
31 pub record_id: i32,
32 pub start_date: String,
33}
34
35#[derive(Debug, Deserialize)]
36#[allow(missing_docs)]
37pub struct CharacterPortraitInfo {
38 pub px128x128: Option<String>,
39 pub px256x256: Option<String>,
40 pub px512x512: Option<String>,
41 pub px64x64: Option<String>,
42}
43
44#[derive(Debug, Deserialize)]
45#[allow(missing_docs)]
46pub struct CharacterAffiliation {
47 pub alliance_id: Option<i32>,
48 pub character_id: i32,
49 pub corporation_id: i32,
50 pub faction_id: Option<i32>,
51}
52
53#[derive(Debug, Deserialize)]
54#[allow(missing_docs)]
55pub struct Blueprint {
56 pub item_id: i64,
57 pub location_flag: String,
58 pub location_id: i64,
59 pub material_efficiency: i32,
60 pub quantity: i32,
61 pub runs: i32,
62 pub time_efficiency: i32,
63 pub type_id: i32,
64}
65
66#[derive(Debug, Deserialize)]
67#[allow(missing_docs)]
68pub struct Notification {
69 #[serde(default)]
70 pub is_read: bool,
71 pub notification_id: i64,
72 pub sender_id: i32,
73 pub sender_type: String,
74 pub text: Option<String>,
75 pub timestamp: String,
76 #[serde(rename = "type")]
77 pub notification_type: String,
78}
79
80#[derive(Debug, Deserialize)]
81#[allow(missing_docs)]
82pub struct WalletTransaction {
83 pub client_id: i32,
84 pub date: String,
85 pub is_buy: bool,
86 pub is_personal: bool,
87 pub journal_ref_id: i64,
88 pub location_id: i64,
89 pub quantity: i32,
90 pub transaction_id: i64,
91 pub type_id: i32,
92 pub unit_price: f64,
93}
94
95impl CharacterGroup<'_> {
96 api_get!(
97 get_public_info,
99 "GetCharactersDetail",
100 RequestType::Public,
101 CharacterPublicInfo,
102 (character_id: i32) => "{character_id}"
103 );
104
105 api_get!(
106 get_history,
108 "GetCharactersCharacterIdCorporationhistory",
109 RequestType::Public,
110 Vec<CharacterCorporationHistoryItem>,
111 (character_id: i32) => "{character_id}"
112 );
113
114 api_get!(
115 get_portrait,
117 "GetCharactersCharacterIdPortrait",
118 RequestType::Public,
119 CharacterPortraitInfo,
120 (character_id: i32) => "{character_id}"
121 );
122
123 api_post!(
124 get_affiliation,
126 "PostCharactersAffiliation",
127 RequestType::Public,
128 Vec<CharacterAffiliation>,
129 ,
130 character_ids: &[u64],
131 );
132
133 api_get!(
134 get_blueprints,
136 "GetCharactersCharacterIdBlueprints",
137 RequestType::Authenticated,
138 Vec<Blueprint>,
139 (character_id: i32) => "{character_id}"
140 );
141
142 api_get!(
143 get_notifications,
145 "GetCharactersCharacterIdNotifications",
146 RequestType::Authenticated,
147 Vec<Notification>,
148 (character_id: i32) => "{character_id}"
149 );
150
151 api_get!(
152 get_wallet_transactions,
154 "GetCharactersCharacterIdWalletTransactions",
155 RequestType::Authenticated,
156 Vec<WalletTransaction>,
157 (character_id: i32) => "{character_id}"
158 );
159}