/
summonerspells.go
46 lines (43 loc) · 1.51 KB
/
summonerspells.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package storage
import (
"time"
"github.com/torlenor/alolstats/riotclient"
)
// GetSummonerSpells returns a list of all currently known summoner spells
// forceUpdate will try to update the champion, if it is false the config settings will be considered if update is required
func (s *Storage) GetSummonerSpells(forceUpdate bool) *riotclient.SummonerSpellsList {
duration := time.Since(s.backend.GetSummonerSpellsTimeStamp())
if (duration.Minutes() > float64(s.config.MaxAgeSummonerSpells)) || forceUpdate {
summonerSpells, err := s.riotClient.SummonerSpells()
if err != nil {
s.log.Warnln(err)
summonerSpells, err := s.backend.GetSummonerSpells()
if err != nil {
s.log.Warnln(err)
return nil
}
s.log.Debugf("Could not get Summoner Spells from Client, returning from Storage Backend instead")
return summonerSpells
}
err = s.backend.StoreSummonerSpells(summonerSpells)
if err != nil {
s.log.Warnln("Could not store Summoner Spells in storage backend:", err)
}
return summonerSpells
}
summonerSpells, err := s.backend.GetSummonerSpells()
if err != nil {
summonerSpells, errClient := s.riotClient.SummonerSpells()
if errClient != nil {
s.log.Warnln(errClient)
return nil
}
s.log.Warnln("Could not get Summoner Spells from storage backend, returning from Client instead:", err)
err = s.backend.StoreSummonerSpells(summonerSpells)
if err != nil {
s.log.Warnln("Could not store Summoner Spells in storage backend:", err)
}
return summonerSpells
}
return summonerSpells
}