Skip to content

Commit ba7e315

Browse files
authored
Merge pull request #233 from twitchdev/fix-230-232
Fix 230 232
2 parents 2c9bb6d + 5023d1f commit ba7e315

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

internal/api/api.go

+16-5
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func NewRequest(method string, path string, queryParameters []string, body []byt
3535
var err error
3636
var cursor string
3737

38-
isExtensionsEndpoint := false // https://github.com/twitchdev/twitch-cli/issues/157
38+
isExtensionsLiveEndpoint := false // https://github.com/twitchdev/twitch-cli/issues/157
3939

4040
data.Data = make([]interface{}, 0)
4141
client, err := GetClientInformation()
@@ -104,20 +104,26 @@ func NewRequest(method string, path string, queryParameters []string, body []byt
104104
}
105105
if strings.Contains(u.String(), "extensions/live") {
106106
// https://github.com/twitchdev/twitch-cli/issues/157
107-
isExtensionsEndpoint = true
107+
isExtensionsLiveEndpoint = true
108108
var extensionsBody models.ExtensionAPIResponse
109109
err = json.Unmarshal(resp.Body, &extensionsBody)
110110
if err != nil {
111111
fmt.Printf("Error unmarshalling body: %v", err)
112112
return
113113
}
114+
115+
var cursor string = ""
116+
if extensionsBody.Pagination != nil {
117+
cursor = *extensionsBody.Pagination
118+
}
119+
114120
apiResponse = models.APIResponse{
115121
Data: extensionsBody.Data,
116122
Status: extensionsBody.Status,
117123
Error: extensionsBody.Error,
118124
Message: extensionsBody.Message,
119125
Pagination: &models.APIPagination{
120-
Cursor: *extensionsBody.Pagination,
126+
Cursor: cursor,
121127
},
122128
}
123129
} else {
@@ -175,12 +181,17 @@ func NewRequest(method string, path string, queryParameters []string, body []byt
175181
data.Data = make([]interface{}, 0)
176182
}
177183
// handle json marshalling better; returns empty slice vs. null
178-
if !strings.Contains(path, "schedule") && len(data.Data.([]interface{})) == 0 && data.Error == "" {
184+
_, isInterface := data.Data.([]interface{})
185+
if isInterface && !strings.Contains(path, "schedule") && len(data.Data.([]interface{})) == 0 && data.Error == "" {
179186
data.Data = make([]interface{}, 0)
180187
}
188+
_, isStringMap := data.Data.(map[string]any)
189+
if isStringMap && !strings.Contains(path, "schedule") && len(data.Data.(map[string]any)) == 0 && data.Error == "" {
190+
data.Data = make(map[string]any, 0)
191+
}
181192

182193
var d []byte
183-
if isExtensionsEndpoint {
194+
if isExtensionsLiveEndpoint {
184195
extensionBody := models.ExtensionAPIResponse{
185196
Data: data.Data,
186197
Pagination: &data.Pagination.Cursor,

internal/models/api.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
package models
44

55
type APIResponse struct {
6-
Data interface{} `json:"data,omitempty"`
6+
Data any `json:"data,omitempty"`
77
Pagination *APIPagination `json:"pagination,omitempty"`
88
Error string `json:"error,omitempty"`
99
Status int `json:"status,omitempty"`
@@ -22,7 +22,7 @@ type BitsLeaderboardDateRange struct {
2222
EndedAt string `json:"ended_at"`
2323
}
2424

25-
type ExtensionAPIResponse struct {
25+
type ExtensionAPIResponse struct { // extensions/live
2626
Data interface{} `json:"data,omitempty"`
2727
Pagination *string `json:"pagination,omitempty"`
2828
Error string `json:"error,omitempty"`

0 commit comments

Comments
 (0)