diff --git a/decoder/main.go b/decoder/main.go index 70f4bc7f..6001ab16 100644 --- a/decoder/main.go +++ b/decoder/main.go @@ -2,8 +2,10 @@ package decoder import ( "context" + "encoding/json" "fmt" "math" + "os" "strconv" "sync" "time" @@ -197,7 +199,15 @@ func InitialiseOhbem() { } if err := o.FetchPokemonData(); err != nil { - log.Errorf("ohbem.FetchPokemonData: %s", err) + if err2 := o.LoadPokemonData("cache/master-latest-basics.json"); err2 != nil { + log.Errorf("ohbem.FetchPokemonData failed. ohbme.LoadPokemonData failed: %s", err2) + } else { + log.Warnf("ohbem.FetchPokemonData failed, loaded from cache: %s", err) + } + } + + if o.PokemonData.Initialized == true { + writePokemonDataIntoCache(&o.PokemonData) } _ = o.WatchPokemonData() @@ -206,6 +216,32 @@ func InitialiseOhbem() { } } +func writePokemonDataIntoCache(data *gohbem.PokemonData) { + // Convert to JSON + jsonData, err := json.MarshalIndent(data, "", " ") + if err != nil { + log.Errorf("Error marshalling Masterfile: %s", err) + return + } + // Write to the file + file, err := os.Create("cache/master-latest-basics.json") + if err != nil { + log.Errorf("Error creating file: %s", err) + return + } + defer func() { + if err2 := file.Close(); err2 != nil { + log.Errorf("Error closing file: %s", err2) + } + }() + + _, err = file.Write(jsonData) + if err != nil { + log.Errorf("Error writing to file: %s", err) + return + } +} + func ClearPokestopCache() { pokestopCache.DeleteAll() }