/
provider.go
106 lines (81 loc) · 2.22 KB
/
provider.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package emotes
func convertToEmoteSlice[EmoteType Emote](s []EmoteType) []Emote {
asEmote := make([]Emote, len(s), len(s))
for i := range s {
asEmote[i] = Emote(s[i])
}
return asEmote
}
type Provider interface {
IdentifierCode() rune
LoadGlobalEmotes() ([]Emote, error)
LoadChannelEmotes(channelID string) ([]Emote, error)
LoadSpecificEmote(emoteID string) (Emote, error)
}
// Interface type constraints
var _ Provider = &BttvProvider{}
var _ Provider = &FfzProvider{}
var _ Provider = &SevenTVProvider{}
type BttvProvider struct{}
func (b BttvProvider) IdentifierCode() rune {
return 'b'
}
func (b BttvProvider) LoadGlobalEmotes() ([]Emote, error) {
res, err := GetGlobalBTTVEmotes()
if err != nil {
return nil, err
}
return convertToEmoteSlice(res), nil
}
func (b BttvProvider) LoadChannelEmotes(channelID string) ([]Emote, error) {
res, err := GetChannelBTTVEmotes(channelID)
if err != nil {
return nil, err
}
return convertToEmoteSlice(res), nil
}
func (b BttvProvider) LoadSpecificEmote(emoteID string) (Emote, error) {
return GetSpecificBTTVEmote(emoteID)
}
type FfzProvider struct{}
func (f FfzProvider) IdentifierCode() rune {
return 'f'
}
func (f FfzProvider) LoadGlobalEmotes() ([]Emote, error) {
res, err := GetGlobalFFZEmotes()
if err != nil {
return nil, err
}
return convertToEmoteSlice(res), nil
}
func (f FfzProvider) LoadChannelEmotes(channelID string) ([]Emote, error) {
res, err := GetChannelFFZEmotes(channelID)
if err != nil {
return nil, err
}
return convertToEmoteSlice(res), nil
}
func (f FfzProvider) LoadSpecificEmote(emoteID string) (Emote, error) {
return GetSpecificFFZEmote(emoteID)
}
type SevenTVProvider struct{}
func (s SevenTVProvider) IdentifierCode() rune {
return 's'
}
func (s SevenTVProvider) LoadGlobalEmotes() ([]Emote, error) {
res, err := GetGlobalSevenTVEmotes()
if err != nil {
return nil, err
}
return convertToEmoteSlice(res), nil
}
func (s SevenTVProvider) LoadChannelEmotes(channelID string) ([]Emote, error) {
res, err := GetChannelSevenTVEmotes(channelID)
if err != nil {
return nil, err
}
return convertToEmoteSlice(res), nil
}
func (s SevenTVProvider) LoadSpecificEmote(emoteID string) (Emote, error) {
return GetSpecificSevenTVEmote(emoteID)
}