Skip to main content

esi_openapi/groups/
killmails.rs

1use crate::groups::Position;
2use crate::prelude::*;
3
4/// Endpoints for Killmails
5pub struct KillmailsGroup<'a> {
6    pub(crate) esi: &'a Esi,
7}
8
9#[derive(Debug, Deserialize)]
10#[allow(missing_docs)]
11pub struct RecentKillMail {
12    pub killmail_hash: String,
13    pub killmail_id: i64,
14}
15
16#[derive(Debug, Deserialize)]
17#[allow(missing_docs)]
18pub struct KillmailAttacker {
19    pub alliance_id: Option<i64>,
20    pub character_id: Option<i64>,
21    pub corporation_id: Option<i64>,
22    pub damage_done: i64,
23    pub faction_id: Option<i64>,
24    pub final_blow: bool,
25    pub security_status: f64,
26    pub ship_type_id: Option<i64>,
27    pub weapon_type_id: Option<i64>,
28}
29
30#[derive(Debug, Deserialize)]
31#[allow(missing_docs)]
32pub struct KillmailItem {
33    pub flag: i64,
34    pub item_type_id: i64,
35    pub quantity_destroyed: Option<i64>,
36    pub quantity_dropped: Option<i64>,
37    pub singleton: i64,
38    /// Items inside this item (e.g. the contents of a container).
39    pub items: Option<Vec<KillmailItem>>,
40}
41
42#[derive(Debug, Deserialize)]
43#[allow(missing_docs)]
44pub struct KillmailVictim {
45    pub alliance_id: Option<i64>,
46    pub character_id: Option<i64>,
47    pub corporation_id: Option<i64>,
48    pub damage_taken: i64,
49    pub faction_id: Option<i64>,
50    pub items: Option<Vec<KillmailItem>>,
51    pub position: Option<Position>,
52    pub ship_type_id: i64,
53}
54
55#[derive(Debug, Deserialize)]
56#[allow(missing_docs)]
57pub struct Killmail {
58    pub killmail_id: i64,
59    pub killmail_time: String,
60    pub solar_system_id: i64,
61    pub moon_id: Option<i64>,
62    pub war_id: Option<i64>,
63    pub attackers: Vec<KillmailAttacker>,
64    pub victim: KillmailVictim,
65}
66
67impl KillmailsGroup<'_> {
68    // NOTE unknown type; I haven't played in a long time
69    api_get!(
70        /// Get a character's recent kills & losses.
71        get_character_recent,
72        "GetCharactersCharacterIdKillmailsRecent",
73        RequestType::Authenticated,
74        Vec<RecentKillMail>,
75        (character_id: i64) => "{character_id}"
76    );
77
78    api_get!(
79        /// Get a killmail.
80        get_killmail,
81        "GetKillmailsKillmailIdKillmailHash",
82        RequestType::Public,
83        Killmail,
84        (killmail_id: i64) => "{killmail_id}",
85        (killmail_hash: &str) => "{killmail_hash}"
86    );
87
88    // more endpoints ...
89}
90
91impl KillmailsGroup<'_> {
92    api_get!(
93        /// Get a corporation's recent kills & losses.
94        get_corporation_recent,
95        "GetCorporationsCorporationIdKillmailsRecent",
96        RequestType::Authenticated,
97        Vec<RecentKillMail>,
98        (corporation_id: i64) => "{corporation_id}";
99        Optional(page: i32) => "page"
100    );
101}