129 lines
4.5 KiB
Go
129 lines
4.5 KiB
Go
package types
|
|
|
|
type FlatKillmail struct {
|
|
KillmailID int64 `json:"killmail_id"`
|
|
KillmailHash string `json:"killmail_hash"`
|
|
KillmailTime string `json:"killmail_time"`
|
|
|
|
SolarSystemID int32 `json:"solar_system_id"`
|
|
SolarSystemName string `json:"solar_system_name"`
|
|
ConstellationName string `json:"constellation_name"`
|
|
RegionName string `json:"region_name"`
|
|
Security float32 `json:"security"`
|
|
|
|
VictimCharacterID int64 `json:"victim_character_id"`
|
|
VictimCharacterName string `json:"victim_character_name"`
|
|
VictimCorporationID int64 `json:"victim_corporation_id"`
|
|
VictimCorporationName string `json:"victim_corporation_name"`
|
|
VictimAllianceID *int64 `json:"victim_alliance_id"`
|
|
VictimAllianceName string `json:"victim_alliance_name"`
|
|
VictimShipTypeID int32 `json:"victim_ship_type_id"`
|
|
VictimShipTypeName string `json:"victim_ship_type_name"`
|
|
VictimShipGroupName string `json:"victim_ship_group_name"`
|
|
VictimShipCategoryName string `json:"victim_ship_category_name"`
|
|
VictimDamageTaken int64 `json:"victim_damage_taken"`
|
|
|
|
AttackerCount uint16 `json:"attacker_count"`
|
|
HTTPLastModified string `json:"http_last_modified"`
|
|
}
|
|
|
|
type FlatKillmailAttacker struct {
|
|
KillmailID int64 `json:"killmail_id"`
|
|
|
|
CharacterID int64 `json:"character_id"`
|
|
CharacterName string `json:"character_name"`
|
|
CorporationID int64 `json:"corporation_id"`
|
|
CorporationName string `json:"corporation_name"`
|
|
AllianceID *int64 `json:"alliance_id"`
|
|
AllianceName string `json:"alliance_name"`
|
|
ShipTypeID int32 `json:"ship_type_id"`
|
|
ShipTypeName string `json:"ship_type_name"`
|
|
ShipGroupName string `json:"ship_group_name"`
|
|
WeaponTypeID int32 `json:"weapon_type_id"`
|
|
WeaponTypeName string `json:"weapon_type_name"`
|
|
|
|
DamageDone int64 `json:"damage_done"`
|
|
FinalBlow bool `json:"final_blow"`
|
|
SecurityStatus float32 `json:"security_status"`
|
|
}
|
|
|
|
type FlatKillmailItem struct {
|
|
KillmailID int64 `json:"killmail_id"`
|
|
|
|
ItemTypeID int32 `json:"item_type_id"`
|
|
ItemTypeName string `json:"item_type_name"`
|
|
ItemGroupName string `json:"item_group_name"`
|
|
ItemCategoryName string `json:"item_category_name"`
|
|
ItemMarketGroupName string `json:"item_market_group_name"`
|
|
|
|
Flag int32 `json:"flag"`
|
|
SlotType string `json:"slot_type"`
|
|
QuantityDestroyed int64 `json:"quantity_destroyed"`
|
|
QuantityDropped int64 `json:"quantity_dropped"`
|
|
Singleton int32 `json:"singleton"`
|
|
}
|
|
|
|
func (k *Killmail) Flatten() (*FlatKillmail, []FlatKillmailAttacker, []FlatKillmailItem) {
|
|
flat := &FlatKillmail{
|
|
KillmailID: k.KillmailID,
|
|
KillmailHash: k.KillmailHash,
|
|
KillmailTime: k.KillmailTime.Format("2006-01-02 15:04:05"),
|
|
HTTPLastModified: k.HTTPLastModified.Format("2006-01-02 15:04:05"),
|
|
AttackerCount: uint16(len(k.Attackers)),
|
|
SolarSystemID: int32(k.SolarSystemID),
|
|
VictimCharacterID: k.Victim.CharacterID,
|
|
VictimCorporationID: k.Victim.CorporationID,
|
|
VictimShipTypeID: int32(k.Victim.ShipTypeID),
|
|
VictimDamageTaken: k.Victim.DamageTaken,
|
|
}
|
|
if k.Victim.AllianceID != 0 {
|
|
flat.VictimAllianceID = &k.Victim.AllianceID
|
|
}
|
|
|
|
attackers := make([]FlatKillmailAttacker, len(k.Attackers))
|
|
for i, attacker := range k.Attackers {
|
|
flatAttacker := &FlatKillmailAttacker{
|
|
KillmailID: k.KillmailID,
|
|
CharacterID: attacker.CharacterID,
|
|
CorporationID: attacker.CorporationID,
|
|
ShipTypeID: int32(attacker.ShipTypeID),
|
|
WeaponTypeID: int32(attacker.WeaponTypeID),
|
|
DamageDone: attacker.DamageDone,
|
|
FinalBlow: attacker.FinalBlow,
|
|
SecurityStatus: float32(attacker.SecurityStatus),
|
|
}
|
|
if attacker.AllianceID != 0 {
|
|
flatAttacker.AllianceID = &attacker.AllianceID
|
|
}
|
|
attackers[i] = *flatAttacker
|
|
}
|
|
|
|
items := make([]FlatKillmailItem, 0, len(k.Victim.Items))
|
|
for _, item := range k.Victim.Items {
|
|
flatItem := FlatKillmailItem{
|
|
KillmailID: k.KillmailID,
|
|
ItemTypeID: int32(item.ItemTypeID),
|
|
Flag: int32(item.Flag),
|
|
QuantityDestroyed: derefInt64(item.QuantityDestroyed),
|
|
QuantityDropped: derefInt64(item.QuantityDropped),
|
|
Singleton: int32(item.Singleton),
|
|
}
|
|
items = append(items, flatItem)
|
|
}
|
|
|
|
return flat, attackers, items
|
|
}
|
|
|
|
func derefInt64(i *int64) int64 {
|
|
if i == nil {
|
|
return 0
|
|
}
|
|
return *i
|
|
}
|
|
|
|
type NSQKillmail struct {
|
|
Killmail *FlatKillmail `json:"killmail"`
|
|
Attackers []FlatKillmailAttacker `json:"attackers"`
|
|
Items []FlatKillmailItem `json:"items"`
|
|
}
|