go-twitch/api/streams/get_stream_key.go

50 lines
1.2 KiB
Go
Raw Normal View History

2024-03-03 17:34:18 -05:00
package streams
import (
"context"
"encoding/json"
"fmt"
2024-03-03 17:34:18 -05:00
"net/http"
"net/url"
)
type GetStreamKeyResponse struct {
// A list that contains the channels stream key.
Data []struct {
// The channels stream key.
StreamKey string `json:"stream_key"`
} `json:"data"`
}
// Gets the channels stream key.
//
// Requires a user access token that includes the channel:read:stream_key scope.
//
// The broadcaster ID must match the user ID in the access token.
func (s *Streams) GetStreamKey(ctx context.Context, broadcasterID string) (*GetStreamKeyResponse, error) {
endpoint := s.baseUrl.ResolveReference(&url.URL{Path: "streams/key", RawQuery: url.Values{"broadcaster_id": {broadcasterID}}.Encode()})
req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint.String(), nil)
if err != nil {
return nil, err
}
res, err := s.client.Do(req)
if err != nil {
return nil, err
}
defer res.Body.Close()
statusOK := res.StatusCode >= 200 && res.StatusCode < 300
if !statusOK {
return nil, fmt.Errorf("failed to get stream key (%d)", res.StatusCode)
}
2024-03-03 17:34:18 -05:00
var data GetStreamKeyResponse
if err := json.NewDecoder(res.Body).Decode(&data); err != nil {
return nil, err
}
return &data, nil
}