go-twitch/api/extensions/get_extension_configuration...

87 lines
3.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package extensions
import (
"context"
"encoding/json"
"fmt"
"net/http"
"github.com/google/go-querystring/query"
"go.fifitido.net/twitch/api/endpoint"
)
type GetExtensionConfigurationSegmentParams struct {
// The ID of the broadcaster that installed the extension.
// This parameter is required if you set the segment parameter to broadcaster or developer.
// Do not specify this parameter if you set segment to global.
BroadcasterID *string `url:"broadcaster_id,omitempty"`
// The ID of the extension that contains the configuration segment you want to get.
ExtensionID string `url:"extension_id"`
// The type of configuration segment to get. Possible case-sensitive values are:
//
// broadcaster, developer, global
//
// You may specify one or more segments. To specify multiple segments, include the segment parameter for each segment to get.
// For example, segment=broadcaster&segment=developer. Ignores duplicate segments.
Segment []ConfigurationSegment `url:"segment"`
}
type GetExtensionConfigurationSegmentResponse struct {
// The list of requested configuration segments.
// The list is returned in the same order that you specified the list of segments in the request.
Data []ConfigurationSegmentData `json:"data"`
}
type ConfigurationSegmentData struct {
// The type of segment.
Segment ConfigurationSegment `json:"segment"`
// The ID of the broadcaster that installed the extension.
// The object includes this field only if the segment query parameter is set to developer or broadcaster.
BroadcasterID *string `json:"broadcaster_id,omitempty"`
// The contents of the segment. This string may be a plain-text string or a string-encoded JSON object.
Content string `json:"content"`
// The version number that identifies this definition of the segments data.
Version string `json:"version"`
}
// Gets the specified configuration segment from the specified extension.
//
// Rate Limits: You may retrieve each segment a maximum of 20 times per minute.
//
// Requires a signed JSON Web Token (JWT) created by an EBS. For signing requirements,
// see Signing the JWT: https://dev.twitch.tv/docs/extensions/building/#signing-the-jwt
// The signed JWT must include the role, user_id, and exp fields
// (see JWT Schema: https://dev.twitch.tv/docs/extensions/reference/#jwt-schema).
// The role field must be set to external.
func (e *Extensions) GetExtensionConfigurationSegment(ctx context.Context, params *GetExtensionConfigurationSegmentParams) (*GetExtensionConfigurationSegmentResponse, error) {
v, _ := query.Values(params)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint.Make(e.baseUrl, "extensions/configurations", v), nil)
if err != nil {
return nil, err
}
res, err := e.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 extension configuration segment (%d)", res.StatusCode)
}
var data GetExtensionConfigurationSegmentResponse
if err := json.NewDecoder(res.Body).Decode(&data); err != nil {
return nil, err
}
return &data, nil
}