twitch

package
v0.0.0-...-b7d2793 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 31, 2023 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChatTLS = "irc.chat.twitch.tv:6697"
)
View Source
const (
	HelixAPI = "https://api.twitch.tv/helix"
)

Variables

This section is empty.

Functions

func AnnotateError

func AnnotateError(err error, annotation string, code int) error

AnnotateError wraps an error with a message that is intended for a human end-user to read, plus an associated HTTP error code.

func Get

func Get(path string) (map[string]interface{}, error)

func GetAccessToken

func GetAccessToken() (*oauth2.Token, error)

func GetAppToken

func GetAppToken() string

func GetChannel

func GetChannel(name string) (channelId, channelName string, err error)

func GetChannelId

func GetChannelId() (string, error)

func GetChannelName

func GetChannelName() (string, error)

func GetClips

func GetClips(channelId string, since time.Time) ([]string, error)

func GetProfilePic

func GetProfilePic(channelId string) (string, error)

func HandleDone

func HandleDone(w http.ResponseWriter, r *http.Request) (err error)

func HandleLogin

func HandleLogin(w http.ResponseWriter, r *http.Request) (err error)

HandleLogin is a Handler that redirects the user to Twitch for login, and provides the 'state' parameter which protects against login CSRF.

func HandleOAuth2Callback

func HandleOAuth2Callback(w http.ResponseWriter, r *http.Request) (err error)

HandleOauth2Callback is a Handler for oauth's 'redirect_uri' endpoint; it validates the state token and retrieves an OAuth token from the request parameters.

func HandleRoot

func HandleRoot(w http.ResponseWriter, r *http.Request) (err error)

HandleRoot is a Handler that shows a login button. In production, if the frontend is served / generated by Go, it should use html/template to prevent XSS attacks.

func LoadClientToken

func LoadClientToken()

func LoadToken

func LoadToken()

func RefreshToken

func RefreshToken()

func SaveToken

func SaveToken()

Types

type BitsV2EventData

type BitsV2EventData struct {
	ChannelId string
	Data      twitchdata.BitEventsV2
	// contains filtered or unexported fields
}

func (*BitsV2EventData) AsJson

func (e *BitsV2EventData) AsJson() string

func (*BitsV2EventData) AsMap

func (e *BitsV2EventData) AsMap() map[string]interface{}

func (*BitsV2EventData) GetData

func (e *BitsV2EventData) GetData() interface{}

func (*BitsV2EventData) GetType

func (e *BitsV2EventData) GetType() EventType

func (*BitsV2EventData) Timestamp

func (e *BitsV2EventData) Timestamp() time.Time

type ChannelUpdateEventData

type ChannelUpdateEventData struct {
	ChannelId string
	Username  string
	UserId    string

	Title        string
	Language     string
	CategoryId   string
	CategoryName string
	IsMature     bool
	// contains filtered or unexported fields
}

func (*ChannelUpdateEventData) AsJson

func (e *ChannelUpdateEventData) AsJson() string

func (*ChannelUpdateEventData) AsMap

func (e *ChannelUpdateEventData) AsMap() map[string]interface{}

func (*ChannelUpdateEventData) GetData

func (e *ChannelUpdateEventData) GetData() interface{}

func (*ChannelUpdateEventData) GetType

func (e *ChannelUpdateEventData) GetType() EventType

func (*ChannelUpdateEventData) Timestamp

func (e *ChannelUpdateEventData) Timestamp() time.Time

type Chat

type Chat struct {
	Events chan ChatEvent
	// contains filtered or unexported fields
}

func MakeChat

func MakeChat(botName, channelName, chatToken string) (*Chat, error)

func (*Chat) EventChannel

func (c *Chat) EventChannel() chan ChatEvent

func (*Chat) Id

func (c *Chat) Id() string

func (*Chat) SendMessage

func (c *Chat) SendMessage(msg string) error

func (*Chat) SendRawMessage

func (c *Chat) SendRawMessage(msg string) error

type ChatEvent

type ChatEvent interface {
	GetType() EventType
	GetData() interface{}
	AsMap() map[string]interface{}
	AsJson() string
	Timestamp() time.Time
}

func MakeBitsV2EventData

func MakeBitsV2EventData(channelId string, data twitchdata.BitEventsV2) ChatEvent

func MakeChannelUpdateEventData

func MakeChannelUpdateEventData(channelId, username, userId, title, language, categoryId, categoryName string, isMature bool) ChatEvent

func MakeErrorEvent

func MakeErrorEvent(err error) ChatEvent

func MakeFollowEventData

func MakeFollowEventData(channelId, username, userId string) ChatEvent

func MakeRewardRedemptionEventData

func MakeRewardRedemptionEventData(channel string, data twitchdata.RedemptionData) ChatEvent

func MakeStreamStatusEventData

func MakeStreamStatusEventData(channelId string, online bool, id, userId, userName, gameId, stype, title, language, thumbnail string, communityIds []string, viewers int, startedAt time.Time) ChatEvent

func MakeSubscribeEventData

func MakeSubscribeEventData(channelId string, data twitchdata.ChannelSubscribeMessageData) ChatEvent

type ErrorEventData

type ErrorEventData struct {
	// contains filtered or unexported fields
}

func (*ErrorEventData) AsJson

func (l *ErrorEventData) AsJson() string

func (*ErrorEventData) AsMap

func (l *ErrorEventData) AsMap() map[string]interface{}

func (*ErrorEventData) Error

func (l *ErrorEventData) Error() string

func (*ErrorEventData) GetData

func (l *ErrorEventData) GetData() interface{}

func (*ErrorEventData) GetType

func (l *ErrorEventData) GetType() EventType

func (*ErrorEventData) RawError

func (l *ErrorEventData) RawError() error

func (*ErrorEventData) Timestamp

func (l *ErrorEventData) Timestamp() time.Time

type EventType

type EventType string
const (
	EventUndefined        EventType = "UNDEFINED"
	EventLoginSuccess     EventType = "LOGIN_SUCCESS"
	EventLoginError       EventType = "LOGIN_ERROR"
	EventMessage          EventType = "MESSAGE"
	EventError            EventType = "ERROR"
	EventBits             EventType = "BITS"
	EventSubscribe        EventType = "SUBSCRIBE"
	EventStreamStatus     EventType = "STREAM_STATUS"
	EventRewardRedemption EventType = "REWARD_REDEMPTION"
	EventFollow           EventType = "FOLLOW"
	EventChannelUpdate    EventType = "CHANNEL_UPDATE"
)

func (EventType) String

func (st EventType) String() string

type FollowEventData

type FollowEventData struct {
	ChannelId string
	Username  string
	UserId    string
	// contains filtered or unexported fields
}

func (*FollowEventData) AsJson

func (e *FollowEventData) AsJson() string

func (*FollowEventData) AsMap

func (e *FollowEventData) AsMap() map[string]interface{}

func (*FollowEventData) GetData

func (e *FollowEventData) GetData() interface{}

func (*FollowEventData) GetType

func (e *FollowEventData) GetType() EventType

func (*FollowEventData) Timestamp

func (e *FollowEventData) Timestamp() time.Time

type Handler

type Handler func(http.ResponseWriter, *http.Request) error

type HumanReadableError

type HumanReadableError interface {
	HumanError() string
	HTTPCode() int
}

HumanReadableError represents error information that can be fed back to a human user.

This prevents internal state that might be sensitive being leaked to the outside world.

type HumanReadableWrapper

type HumanReadableWrapper struct {
	ToHuman string
	Code    int
	// contains filtered or unexported fields
}

HumanReadableWrapper implements HumanReadableError

func (HumanReadableWrapper) HTTPCode

func (h HumanReadableWrapper) HTTPCode() int

func (HumanReadableWrapper) HumanError

func (h HumanReadableWrapper) HumanError() string

type LoginEventData

type LoginEventData struct {
	Message string
	// contains filtered or unexported fields
}

func MakeLoginEvent

func MakeLoginEvent(success bool, message string) *LoginEventData

func (*LoginEventData) AsJson

func (l *LoginEventData) AsJson() string

func (*LoginEventData) AsMap

func (l *LoginEventData) AsMap() map[string]interface{}

func (*LoginEventData) GetData

func (l *LoginEventData) GetData() interface{}

func (*LoginEventData) GetType

func (l *LoginEventData) GetType() EventType

func (*LoginEventData) Timestamp

func (l *LoginEventData) Timestamp() time.Time

type MessageEventData

type MessageEventData struct {
	Source    SourceType
	Username  string
	Message   string
	Picture   string
	Tags      map[string]string
	Badges    map[string]string
	ExtraData interface{}
	// contains filtered or unexported fields
}

func MakeMessageEventData

func MakeMessageEventData(source SourceType, username, message, picture string, tags map[string]string, extraData interface{}) *MessageEventData

func (*MessageEventData) AsJson

func (l *MessageEventData) AsJson() string

func (*MessageEventData) AsMap

func (l *MessageEventData) AsMap() map[string]interface{}

func (*MessageEventData) GetData

func (l *MessageEventData) GetData() interface{}

func (*MessageEventData) GetExtraData

func (l *MessageEventData) GetExtraData() interface{}

func (*MessageEventData) GetPicture

func (l *MessageEventData) GetPicture() string

func (*MessageEventData) GetType

func (l *MessageEventData) GetType() EventType

func (*MessageEventData) IsModerator

func (l *MessageEventData) IsModerator() bool

func (*MessageEventData) IsSubscriber

func (l *MessageEventData) IsSubscriber() bool

func (*MessageEventData) SubscriberMonths

func (l *MessageEventData) SubscriberMonths() int

func (*MessageEventData) Timestamp

func (l *MessageEventData) Timestamp() time.Time

type Monitor

type Monitor struct {
	// contains filtered or unexported fields
}

func MakeMonitor

func MakeMonitor(channelName string) *Monitor

func (*Monitor) EventChannel

func (m *Monitor) EventChannel() chan ChatEvent

func (*Monitor) Register

func (m *Monitor) Register(events []string, token string) error

func (*Monitor) Start

func (m *Monitor) Start() error

func (*Monitor) Stop

func (m *Monitor) Stop()

type RewardRedemptionEventData

type RewardRedemptionEventData struct {
	ChannelId string
	Data      twitchdata.RedemptionData
	// contains filtered or unexported fields
}

func (*RewardRedemptionEventData) AsJson

func (l *RewardRedemptionEventData) AsJson() string

func (*RewardRedemptionEventData) AsMap

func (l *RewardRedemptionEventData) AsMap() map[string]interface{}

func (*RewardRedemptionEventData) GetData

func (l *RewardRedemptionEventData) GetData() interface{}

func (*RewardRedemptionEventData) GetType

func (l *RewardRedemptionEventData) GetType() EventType

func (*RewardRedemptionEventData) Timestamp

func (l *RewardRedemptionEventData) Timestamp() time.Time

type SourceType

type SourceType string
const (
	SourceTwitch SourceType = "TWITCH"
)

func (SourceType) String

func (st SourceType) String() string

type StreamStatusEventData

type StreamStatusEventData struct {
	ChannelId    string
	Online       bool
	Id           string
	UserId       string
	UserName     string
	GameId       string
	CommunityIds []string
	Type         string
	Title        string
	ViewerCount  int
	StartedAt    time.Time
	Language     string
	ThumbnailUrl string
	// contains filtered or unexported fields
}

func (*StreamStatusEventData) AsJson

func (e *StreamStatusEventData) AsJson() string

func (*StreamStatusEventData) AsMap

func (e *StreamStatusEventData) AsMap() map[string]interface{}

func (*StreamStatusEventData) GetData

func (e *StreamStatusEventData) GetData() interface{}

func (*StreamStatusEventData) GetType

func (e *StreamStatusEventData) GetType() EventType

func (*StreamStatusEventData) Timestamp

func (e *StreamStatusEventData) Timestamp() time.Time

type SubscribeEventData

type SubscribeEventData struct {
	ChannelId string
	Data      twitchdata.ChannelSubscribeMessageData
	// contains filtered or unexported fields
}

func (*SubscribeEventData) AsJson

func (e *SubscribeEventData) AsJson() string

func (*SubscribeEventData) AsMap

func (e *SubscribeEventData) AsMap() map[string]interface{}

func (*SubscribeEventData) GetData

func (e *SubscribeEventData) GetData() interface{}

func (*SubscribeEventData) GetType

func (e *SubscribeEventData) GetType() EventType

func (*SubscribeEventData) Timestamp

func (e *SubscribeEventData) Timestamp() time.Time

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL