esi_openapi/groups/
skills.rs1use crate::prelude::*;
2
3pub struct SkillsGroup<'a> {
5 pub(crate) esi: &'a Esi,
6}
7
8#[derive(Debug, Deserialize)]
9#[allow(missing_docs)]
10pub struct Skill {
11 pub skill_id: i64,
12 pub active_skill_level: i64,
13 pub skillpoints_in_skill: i64,
14 pub trained_skill_level: i64,
15}
16
17#[derive(Debug, Deserialize)]
18#[allow(missing_docs)]
19pub struct Skills {
20 pub skills: Vec<Skill>,
21 pub total_sp: i64,
22 pub unallocated_sp: Option<i64>,
23}
24
25impl SkillsGroup<'_> {
26 api_get!(
27 get_skills,
29 "GetCharactersCharacterIdSkills",
30 RequestType::Authenticated,
31 Skills,
32 (character_id: i64) => "{character_id}"
33 );
34}
35
36#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
38#[allow(missing_docs)]
39pub struct CharacterAttributes {
40 pub accrued_remap_cooldown_date: Option<String>,
41 pub bonus_remaps: Option<i64>,
42 pub charisma: i64,
43 pub intelligence: i64,
44 pub last_remap_date: Option<String>,
45 pub memory: i64,
46 pub perception: i64,
47 pub willpower: i64,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
52#[allow(missing_docs)]
53pub struct SkillQueueItem {
54 pub finish_date: Option<String>,
55 pub finished_level: i64,
56 pub level_end_sp: Option<i64>,
57 pub level_start_sp: Option<i64>,
58 pub queue_position: i64,
59 pub skill_id: i64,
60 pub start_date: Option<String>,
61 pub training_start_sp: Option<i64>,
62}
63
64impl SkillsGroup<'_> {
65 api_get!(
66 get_attributes,
68 "GetCharactersCharacterIdAttributes",
69 RequestType::Authenticated,
70 CharacterAttributes,
71 (character_id: i64) => "{character_id}"
72 );
73
74 api_get!(
75 get_skillqueue,
77 "GetCharactersCharacterIdSkillqueue",
78 RequestType::Authenticated,
79 Vec<SkillQueueItem>,
80 (character_id: i64) => "{character_id}"
81 );
82}
83
84#[cfg(test)]
85mod character_basic_tests {
86 use super::SkillQueueItem;
87
88 #[test]
89 fn test_parse_paused_queue_entry() {
90 let json = r#"[{"finished_level": 5, "queue_position": 0, "skill_id": 3300}]"#;
91 let queue: Vec<SkillQueueItem> = serde_json::from_str(json).unwrap();
92 assert!(queue[0].finish_date.is_none());
93 assert_eq!(queue[0].skill_id, 3300);
94 }
95}