Skip to content

Commit e42e618

Browse files
authored
Merge pull request #114 from twitchdev/enhancement/eventsub-topic-aliases
adding support for eventsub topic aliasing
2 parents ccf153e + c208082 commit e42e618

File tree

24 files changed

+214
-10
lines changed

24 files changed

+214
-10
lines changed

internal/events/event.go

+3
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,7 @@ type MockEvent interface {
4646

4747
// Returns the string of the topic
4848
GetTopic(transport string, trigger string) string
49+
50+
// Returns back the correct "trigger" if using the eventsub topic
51+
GetEventSubAlias(trigger string) string
4952
}

internal/events/trigger/trigger_event.go

+14-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/twitchdev/twitch-cli/internal/database"
1212
"github.com/twitchdev/twitch-cli/internal/events"
1313
"github.com/twitchdev/twitch-cli/internal/events/types"
14+
"github.com/twitchdev/twitch-cli/internal/models"
1415
"github.com/twitchdev/twitch-cli/internal/util"
1516
)
1617

@@ -80,6 +81,13 @@ func Fire(p TriggerParameters) (string, error) {
8081
return "", err
8182
}
8283

84+
if eventParamaters.Transport == models.TransportEventSub {
85+
newTrigger := e.GetEventSubAlias(p.Event)
86+
if newTrigger != "" {
87+
eventParamaters.Trigger = newTrigger // overwrite the existing trigger with the "correct" one
88+
}
89+
}
90+
8391
resp, err = e.GenerateEvent(eventParamaters)
8492
if err != nil {
8593
return "", err
@@ -118,19 +126,19 @@ func Fire(p TriggerParameters) (string, error) {
118126
}
119127
defer resp.Body.Close()
120128

121-
body, err := ioutil.ReadAll(resp.Body)
122-
if err != nil {
123-
return "", err
124-
}
129+
body, err := ioutil.ReadAll(resp.Body)
130+
if err != nil {
131+
return "", err
132+
}
125133

126-
respTrigger := string(body)
134+
respTrigger := string(body)
127135
if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
128136
color.New().Add(color.FgGreen).Println(fmt.Sprintf(`✔ Request Sent. Recieved Status Code: %v`, resp.StatusCode))
129137
color.New().Add(color.FgGreen).Println(fmt.Sprintf(`✔ Server Said: %s`, respTrigger))
130138
} else {
131139
color.New().Add(color.FgRed).Println(fmt.Sprintf(`✗ Invalid response. Recieved Status Code: %v`, resp.StatusCode))
132140
color.New().Add(color.FgRed).Println(fmt.Sprintf(`✗ Server Said: %s`, respTrigger))
133-
}
141+
}
134142
}
135143

136144
return string(resp.JSON), nil

internal/events/types/_template/_event_name.go

+9
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,12 @@ func (e Event) ValidTrigger(t string) bool {
7373
func (e Event) GetTopic(transport string, trigger string) string {
7474
return triggerMapping[transport][trigger]
7575
}
76+
func (e Event) GetEventSubAlias(t string) string {
77+
// check for aliases
78+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
79+
if topic == t {
80+
return trigger
81+
}
82+
}
83+
return ""
84+
}

internal/events/types/authorization/authorization.go

+9
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,12 @@ func (e Event) ValidTrigger(t string) bool {
9393
func (e Event) GetTopic(transport string, trigger string) string {
9494
return triggerMapping[transport][trigger]
9595
}
96+
func (e Event) GetEventSubAlias(t string) string {
97+
// check for aliases
98+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
99+
if topic == t {
100+
return trigger
101+
}
102+
}
103+
return ""
104+
}

internal/events/types/ban/ban.go

+9
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,12 @@ func (e Event) ValidTrigger(t string) bool {
133133
func (e Event) GetTopic(transport string, trigger string) string {
134134
return triggerMapping[transport][trigger]
135135
}
136+
func (e Event) GetEventSubAlias(t string) string {
137+
// check for aliases
138+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
139+
if topic == t {
140+
return trigger
141+
}
142+
}
143+
return ""
144+
}

internal/events/types/channel_points_redemption/redemption_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,12 @@ func (e Event) ValidTrigger(t string) bool {
121121
func (e Event) GetTopic(transport string, trigger string) string {
122122
return triggerMapping[transport][trigger]
123123
}
124+
func (e Event) GetEventSubAlias(t string) string {
125+
// check for aliases
126+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
127+
if topic == t {
128+
return trigger
129+
}
130+
}
131+
return ""
132+
}

internal/events/types/channel_points_reward/reward_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,12 @@ func (e Event) ValidTrigger(t string) bool {
135135
func (e Event) GetTopic(transport string, trigger string) string {
136136
return triggerMapping[transport][trigger]
137137
}
138+
func (e Event) GetEventSubAlias(t string) string {
139+
// check for aliases
140+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
141+
if topic == t {
142+
return trigger
143+
}
144+
}
145+
return ""
146+
}

internal/events/types/cheer/cheer_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,12 @@ func (e Event) ValidTrigger(t string) bool {
106106
func (e Event) GetTopic(transport string, trigger string) string {
107107
return triggerMapping[transport][trigger]
108108
}
109+
func (e Event) GetEventSubAlias(t string) string {
110+
// check for aliases
111+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
112+
if topic == t {
113+
return trigger
114+
}
115+
}
116+
return ""
117+
}

internal/events/types/drop/drop.go

+9
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,12 @@ func (e Event) ValidTrigger(t string) bool {
105105
func (e Event) GetTopic(transport string, trigger string) string {
106106
return triggerMapping[transport][trigger]
107107
}
108+
func (e Event) GetEventSubAlias(t string) string {
109+
// check for aliases
110+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
111+
if topic == t {
112+
return trigger
113+
}
114+
}
115+
return ""
116+
}

internal/events/types/extension_transaction/transaction_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,12 @@ func (e Event) ValidTrigger(t string) bool {
150150
func (e Event) GetTopic(transport string, trigger string) string {
151151
return triggerMapping[transport][trigger]
152152
}
153+
func (e Event) GetEventSubAlias(t string) string {
154+
// check for aliases
155+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
156+
if topic == t {
157+
return trigger
158+
}
159+
}
160+
return ""
161+
}

internal/events/types/follow/follow_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,12 @@ func (e Event) ValidTrigger(trigger string) bool {
110110
func (e Event) GetTopic(transport string, trigger string) string {
111111
return triggerMapping[transport][trigger]
112112
}
113+
func (e Event) GetEventSubAlias(t string) string {
114+
// check for aliases
115+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
116+
if topic == t {
117+
return trigger
118+
}
119+
}
120+
return ""
121+
}

internal/events/types/gift/channel_gift.go

+9
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,12 @@ func (e Event) ValidTrigger(t string) bool {
106106
func (e Event) GetTopic(transport string, trigger string) string {
107107
return triggerMapping[transport][trigger]
108108
}
109+
func (e Event) GetEventSubAlias(t string) string {
110+
// check for aliases
111+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
112+
if topic == t {
113+
return trigger
114+
}
115+
}
116+
return ""
117+
}

internal/events/types/hype_train/hype_train_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -179,3 +179,12 @@ func (e Event) ValidTrigger(t string) bool {
179179
func (e Event) GetTopic(transport string, trigger string) string {
180180
return triggerMapping[transport][trigger]
181181
}
182+
func (e Event) GetEventSubAlias(t string) string {
183+
// check for aliases
184+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
185+
if topic == t {
186+
return trigger
187+
}
188+
}
189+
return ""
190+
}

internal/events/types/moderator_change/moderator_change_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,12 @@ func (e Event) ValidTrigger(t string) bool {
117117
func (e Event) GetTopic(transport string, trigger string) string {
118118
return triggerMapping[transport][trigger]
119119
}
120+
func (e Event) GetEventSubAlias(t string) string {
121+
// check for aliases
122+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
123+
if topic == t {
124+
return trigger
125+
}
126+
}
127+
return ""
128+
}

internal/events/types/poll/poll.go

+9
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,12 @@ func (e Event) GetTopic(transport string, trigger string) string {
130130
func intPointer(i int) *int {
131131
return &i
132132
}
133+
func (e Event) GetEventSubAlias(t string) string {
134+
// check for aliases
135+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
136+
if topic == t {
137+
return trigger
138+
}
139+
}
140+
return ""
141+
}

internal/events/types/prediction/prediction.go

+9
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,12 @@ func (e Event) GetTopic(transport string, trigger string) string {
155155
func intPointer(i int) *int {
156156
return &i
157157
}
158+
func (e Event) GetEventSubAlias(t string) string {
159+
// check for aliases
160+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
161+
if topic == t {
162+
return trigger
163+
}
164+
}
165+
return ""
166+
}

internal/events/types/raid/raid.go

+9
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,12 @@ func (e Event) ValidTrigger(t string) bool {
9292
func (e Event) GetTopic(transport string, trigger string) string {
9393
return triggerMapping[transport][trigger]
9494
}
95+
func (e Event) GetEventSubAlias(t string) string {
96+
// check for aliases
97+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
98+
if topic == t {
99+
return trigger
100+
}
101+
}
102+
return ""
103+
}

internal/events/types/stream_change/stream_change_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,12 @@ func (e Event) ValidTrigger(t string) bool {
132132
func (e Event) GetTopic(transport string, trigger string) string {
133133
return triggerMapping[transport][trigger]
134134
}
135+
func (e Event) GetEventSubAlias(t string) string {
136+
// check for aliases
137+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
138+
if topic == t {
139+
return trigger
140+
}
141+
}
142+
return ""
143+
}

internal/events/types/streamdown/streamdown.go

+9
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,12 @@ func (e Event) ValidTrigger(t string) bool {
9696
func (e Event) GetTopic(transport string, trigger string) string {
9797
return triggerMapping[transport][trigger]
9898
}
99+
func (e Event) GetEventSubAlias(t string) string {
100+
// check for aliases
101+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
102+
if topic == t {
103+
return trigger
104+
}
105+
}
106+
return ""
107+
}

internal/events/types/streamup/streamup.go

+9
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,12 @@ func (e Event) ValidTrigger(t string) bool {
123123
func (e Event) GetTopic(transport string, trigger string) string {
124124
return triggerMapping[transport][trigger]
125125
}
126+
func (e Event) GetEventSubAlias(t string) string {
127+
// check for aliases
128+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
129+
if topic == t {
130+
return trigger
131+
}
132+
}
133+
return ""
134+
}

internal/events/types/subscribe/sub_event.go

+9
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,12 @@ func (e Event) ValidTrigger(t string) bool {
143143
func (e Event) GetTopic(transport string, trigger string) string {
144144
return triggerMapping[transport][trigger]
145145
}
146+
func (e Event) GetEventSubAlias(t string) string {
147+
// check for aliases
148+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
149+
if topic == t {
150+
return trigger
151+
}
152+
}
153+
return ""
154+
}

internal/events/types/subscription_message/subscription_message.go

+9
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,12 @@ func (e Event) ValidTrigger(t string) bool {
111111
func (e Event) GetTopic(transport string, trigger string) string {
112112
return triggerMapping[transport][trigger]
113113
}
114+
func (e Event) GetEventSubAlias(t string) string {
115+
// check for aliases
116+
for trigger, topic := range triggerMapping[models.TransportEventSub] {
117+
if topic == t {
118+
return trigger
119+
}
120+
}
121+
return ""
122+
}

internal/events/types/types.go

+7
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/twitchdev/twitch-cli/internal/events/types/streamup"
2626
"github.com/twitchdev/twitch-cli/internal/events/types/subscribe"
2727
"github.com/twitchdev/twitch-cli/internal/events/types/subscription_message"
28+
"github.com/twitchdev/twitch-cli/internal/models"
2829
)
2930

3031
func All() []events.MockEvent {
@@ -53,6 +54,12 @@ func All() []events.MockEvent {
5354

5455
func GetByTriggerAndTransport(trigger string, transport string) (events.MockEvent, error) {
5556
for _, e := range All() {
57+
if transport == models.TransportEventSub {
58+
newTrigger := e.GetEventSubAlias(trigger)
59+
if newTrigger != "" {
60+
trigger = newTrigger
61+
}
62+
}
5663
if e.ValidTrigger(trigger) == true && e.ValidTransport(transport) == true {
5764
return e, nil
5865
}

internal/events/verify/subscription_verify.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,17 @@ func VerifyWebhookSubscription(p VerifyParameters) (VerifyResponse, error) {
3636
challenge := util.RandomGUID()
3737

3838
event, err := types.GetByTriggerAndTransport(p.Event, p.Transport)
39-
4039
if err != nil {
4140
return VerifyResponse{}, err
4241
}
4342

43+
if p.Transport == models.TransportEventSub {
44+
newTrigger := event.GetEventSubAlias(p.Event)
45+
if newTrigger != "" {
46+
p.Event = newTrigger
47+
}
48+
}
49+
4450
body, err := generateWebhookSubscriptionBody(p.Transport, event.GetTopic(p.Transport, p.Event), challenge, p.ForwardAddress)
4551
if err != nil {
4652
return VerifyResponse{}, err
@@ -96,10 +102,10 @@ func VerifyWebhookSubscription(p VerifyParameters) (VerifyResponse, error) {
96102

97103
if resp.Header.Get("Content-Type") == "text/plain" {
98104
color.New().Add(color.FgGreen).Println(fmt.Sprintf(`✔ Valid content-type header. Received type %v`, resp.Header.Get("Content-Type")))
99-
} else {
105+
} else {
100106
color.New().Add(color.FgRed).Println(fmt.Sprintf(`✗ Invalid content-type header. Received type %v`, resp.Header.Get("Content-Type")))
101-
}
102-
107+
}
108+
103109
if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
104110
color.New().Add(color.FgGreen).Println(fmt.Sprintf(`✔ Valid status code. Received status %v`, resp.StatusCode))
105111
r.IsStatusValid = true

0 commit comments

Comments
 (0)