Skip to content

Commit 346beb6

Browse files
committed
Add subscription tier flag
1 parent 78ce45b commit 346beb6

File tree

7 files changed

+25
-2
lines changed

7 files changed

+25
-2
lines changed

cmd/events.go

+3
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ var (
3636
count int
3737
description string
3838
gameID string
39+
tier string
3940
timestamp string
4041
charityCurrentValue int
4142
charityTargetValue int
@@ -121,6 +122,7 @@ func init() {
121122
triggerCmd.Flags().Int64VarP(&cost, "cost", "C", 0, "Amount of bits or channel points redeemed/used in the event.")
122123
triggerCmd.Flags().StringVarP(&description, "description", "d", "", "Title the stream should be updated with.")
123124
triggerCmd.Flags().StringVarP(&gameID, "game-id", "G", "", "Sets the game/category ID for applicable events.")
125+
triggerCmd.Flags().StringVarP(&tier, "tier", "", "", "Sets the subscription tier. Valid values are 1000, 2000, and 3000.")
124126
triggerCmd.Flags().StringVarP(&eventID, "subscription-id", "u", "", "Manually set the subscription/event ID of the event itself.") // TODO: This description will need to change with https://github.com/twitchdev/twitch-cli/issues/184
125127
triggerCmd.Flags().StringVar(&timestamp, "timestamp", "", "Sets the timestamp to be used in payloads and headers. Must be in RFC3339Nano format.")
126128
triggerCmd.Flags().IntVar(&charityCurrentValue, "charity-current-value", 0, "Only used for \"charity-*\" events. Manually set the current dollar value for charity events.")
@@ -189,6 +191,7 @@ func triggerCmdRun(cmd *cobra.Command, args []string) {
189191
Description: description,
190192
ItemName: itemName,
191193
GameID: gameID,
194+
Tier: tier,
192195
SubscriptionStatus: subscriptionStatus,
193196
Timestamp: timestamp,
194197
CharityCurrentValue: charityCurrentValue,

internal/events/event.go

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ type MockEventParameters struct {
2222
IsPermanent bool
2323
Description string
2424
GameID string
25+
Tier string
2526
Timestamp string
2627
CharityCurrentValue int
2728
CharityTargetValue int

internal/events/trigger/trigger_event.go

+13
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ type TriggerParameters struct {
3535
Description string
3636
ItemName string
3737
GameID string
38+
Tier string
3839
Timestamp string
3940
EventID string // Also serves as subscription ID. See https://github.com/twitchdev/twitch-cli/issues/184
4041
CharityCurrentValue int
@@ -66,6 +67,17 @@ func Fire(p TriggerParameters) (string, error) {
6667
p.GameID = fmt.Sprint(util.RandomInt(10 * 1000))
6768
}
6869

70+
switch p.Tier {
71+
case "":
72+
p.Tier = "1000"
73+
case "1000", "2000", "3000":
74+
// do nothing, these are valid values
75+
default:
76+
return "", fmt.Errorf(
77+
`Discarding event: Invalid tier provided.
78+
Valid values are 1000, 2000 or 3000`)
79+
}
80+
6981
if p.EventID == "" {
7082
p.EventID = util.RandomGUID()
7183
}
@@ -98,6 +110,7 @@ https://dev.twitch.tv/docs/eventsub/handling-webhook-events#processing-an-event`
98110
Description: p.Description,
99111
ItemName: p.ItemName,
100112
GameID: p.GameID,
113+
Tier: p.Tier,
101114
SubscriptionStatus: p.SubscriptionStatus,
102115
Timestamp: p.Timestamp,
103116
CharityCurrentValue: p.CharityCurrentValue,

internal/events/types/subscribe/sub_event.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (e Event) GenerateEvent(params events.MockEventParameters) (events.MockEven
6060
BroadcasterUserID: params.ToUserID,
6161
BroadcasterUserLogin: params.ToUserName,
6262
BroadcasterUserName: params.ToUserName,
63-
Tier: "1000",
63+
Tier: params.Tier,
6464
IsGift: params.IsGift,
6565
},
6666
}

internal/events/types/subscribe/sub_event_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
var fromUser = "1234"
1515
var toUser = "4567"
16+
var tierTwo = "2000"
1617

1718
func TestEventSub(t *testing.T) {
1819
a := test_setup.SetupTestEnv(t)
@@ -23,6 +24,7 @@ func TestEventSub(t *testing.T) {
2324
Transport: models.TransportEventSub,
2425
SubscriptionStatus: "enabled",
2526
Trigger: "subscribe",
27+
Tier: tierTwo,
2628
}
2729

2830
r, err := Event{}.GenerateEvent(params)
@@ -34,6 +36,7 @@ func TestEventSub(t *testing.T) {
3436

3537
a.Equal(toUser, body.Event.BroadcasterUserID, "Expected to user %v, got %v", toUser, body.Event.BroadcasterUserID)
3638
a.Equal(fromUser, body.Event.UserID, "Expected from user %v, got %v", r.ToUser, body.Event.UserID)
39+
a.Equal(tierTwo, body.Event.Tier, "Expected tier %v, got %v", tierTwo, body.Event.Tier)
3740
}
3841

3942
func TestFakeTransport(t *testing.T) {

internal/events/types/subscription_message/subscription_message.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (e Event) GenerateEvent(params events.MockEventParameters) (events.MockEven
5858
BroadcasterUserID: params.ToUserID,
5959
BroadcasterUserLogin: params.ToUserName,
6060
BroadcasterUserName: params.ToUserName,
61-
Tier: "1000",
61+
Tier: params.Tier,
6262
Message: models.SubscribeMessageEventSubMessage{
6363
Text: "Hello from the Twitch CLI! twitchdevLeek",
6464
Emotes: []models.SubscribeMessageEventSubMessageEmote{

internal/events/types/subscription_message/subscription_message_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var toUser = "4567"
1717
func TestEventSub(t *testing.T) {
1818
a := test_setup.SetupTestEnv(t)
1919
ten := 10
20+
tierThree := "3000"
2021

2122
params := *&events.MockEventParameters{
2223
FromUserID: fromUser,
@@ -44,6 +45,7 @@ func TestEventSub(t *testing.T) {
4445
SubscriptionStatus: "enabled",
4546
Cost: int64(ten),
4647
IsAnonymous: true,
48+
Tier: tierThree,
4749
}
4850

4951
r, err = Event{}.GenerateEvent(params)
@@ -53,6 +55,7 @@ func TestEventSub(t *testing.T) {
5355
a.Nil(err)
5456
a.Nil(body.Event.StreakMonths)
5557
a.GreaterOrEqual(body.Event.CumulativeMonths, 10)
58+
a.Equal(body.Event.Tier, "3000")
5659
}
5760

5861
func TestFakeTransport(t *testing.T) {

0 commit comments

Comments
 (0)