Added clones list

This commit is contained in:
Thomas Schwery 2017-02-17 14:43:46 +01:00
parent 54e5553e4d
commit a74aa529b0

101
main.go
View file

@ -25,6 +25,7 @@ import (
ESI "./client"
ESIClones "./client/clones"
ESILocation "./client/location"
ESIPlanetaryInteraction "./client/planetary_interaction"
ESISkills "./client/skills"
@ -61,6 +62,7 @@ var (
"esi-planets.manage_planets.v1",
"esi-wallet.read_character_wallet.v1",
"esi-location.read_location.v1",
"esi-clones.read_clones.v1",
},
Endpoint: oauth2.Endpoint{
AuthURL: "https://login.eveonline.com/oauth/authorize/",
@ -290,6 +292,83 @@ func printCharacterInformation(swaggerclient *ESI.App, m *Character) {
stationName,
)
cloCallParams := ESIClones.NewGetCharactersCharacterIDClonesParams()
cloCallParams.WithCharacterID(m.CharacterID)
cloresponse, cloerr := swaggerclient.Clones.GetCharactersCharacterIDClones(cloCallParams, nil)
if cloerr != nil {
fmt.Println("Error while getting the current character clones.")
log.Fatalf("Got error on GetCharactersCharacterIDClones: %s", cloerr)
}
clones := cloresponse.Payload.JumpClones
fmt.Printf("\nClones: \n")
for _, clone := range clones {
sInfo, _ := getStructureStationInfo(swaggerclient, clone.LocationType, clone.LocationID)
fmt.Printf(" %s, %s, %s\n ",
sInfo.Name,
sInfo.System.ConstellationName,
sInfo.System.RegionName,
)
implantNames := getUniverseNames(swaggerclient, &clone.Implants)
for _, implant := range clone.Implants {
implantName := implantNames[implant]
fmt.Printf(" %s, ", implantName)
}
}
}
type structureInfo struct {
ID int64
Name string
SystemID int32
System solarSystemInfo
}
func getStructureStationInfo(swaggerclient *ESI.App, typeID string, ID int64) (*structureInfo, error) {
locationName := getCachedDataSub64(ID, "name")
locationSystem := getCachedDataIntSub64(ID, "system")
if locationName != "" && locationSystem > 0 {
var sInfo structureInfo
sInfo.ID = ID
sInfo.Name = locationName
sInfo.System = getSolarSystemInformation(swaggerclient, locationSystem)
return &sInfo, nil
}
if typeID == "station" {
stacallParams := ESIUniverse.NewGetUniverseStationsStationIDParams()
stacallParams.WithStationID(int32(ID))
staresponse, staerr := swaggerclient.Universe.GetUniverseStationsStationID(stacallParams)
if staerr != nil {
log.Printf("Got error on GetCharactersCharacterIDClones: %s", staerr)
return nil, staerr
}
staInfo := staresponse.Payload
var sInfo structureInfo
sInfo.ID = int64(*staInfo.StationID)
sInfo.Name = *staInfo.Name
sInfo.SystemID = *staInfo.SystemID
sInfo.System = getSolarSystemInformation(swaggerclient, sInfo.SystemID)
putCacheDataSub64(sInfo.ID, "name", sInfo.Name)
putCacheDataIntSub64(sInfo.ID, "system", sInfo.SystemID)
return &sInfo, nil
}
return nil, nil
}
type byPIPinType []*ESIPlanetaryInteraction.PinsItems0
@ -338,14 +417,14 @@ func printCharacterPlanets(swaggerclient *ESI.App, m *Character) {
pcallParam := ESIPlanetaryInteraction.NewGetCharactersCharacterIDPlanetsPlanetIDParams()
pcallParam.WithCharacterID(m.CharacterID).WithPlanetID(*planet.PlanetID)
solarSystemInfo := getSolarSystemInformation(swaggerclient, *planet.SolarSystemID)
planetSystemInfo := getSolarSystemInformation(swaggerclient, *planet.SolarSystemID)
planetName := getPlanetInformation(swaggerclient, *planet.PlanetID)
fmt.Printf("Planet %s, %s, %s - Type %s, Lvl %d - Updated %s\n",
planetName.PlanetName,
solarSystemInfo.ConstellationName,
solarSystemInfo.RegionName,
planetSystemInfo.ConstellationName,
planetSystemInfo.RegionName,
*planet.PlanetType,
*planet.UpgradeLevel,
time.Time(*planet.LastUpdate).Format(defaultDateFormat),
@ -662,6 +741,14 @@ func getCachedDataSub(key int32, subkey string) string {
return getCachedData(fmt.Sprintf("%d.%s", key, subkey))
}
func getCachedDataIntSub64(key int64, subkey string) int32 {
return getCachedDataInt(fmt.Sprintf("%d.%s", key, subkey))
}
func getCachedDataSub64(key int64, subkey string) string {
return getCachedData(fmt.Sprintf("%d.%s", key, subkey))
}
func getCachedDataInt(key string) int32 {
strVal := getCachedData(key)
@ -710,6 +797,14 @@ func putCacheDataSub(key int32, subkey string, value string) {
putCacheData(fmt.Sprintf("%d.%s", key, subkey), value)
}
func putCacheDataIntSub64(key int64, subkey string, value int32) {
putCacheDataSub64(key, subkey, fmt.Sprintf("%d", value))
}
func putCacheDataSub64(key int64, subkey string, value string) {
putCacheData(fmt.Sprintf("%d.%s", key, subkey), value)
}
func putCacheData(key string, value string) {
db, err := sql.Open("sqlite3", *cacheDBPath)
if err != nil {