Documentation ¶
Index ¶
- Variables
- type Album
- type AlbumImage
- type Artist
- type AuthState
- type CurrentPlayingInfo
- type Device
- type Event
- type QueueTrack
- type QueueTrackToStore
- type Session
- func (s *Session) GoNextTrack() error
- func (s *Session) HeadTrack() *QueueTrack
- func (s *Session) IsCreator(userID string) bool
- func (s *Session) IsNextTrackExistWhenStateIsStop() bool
- func (s *Session) IsPlaying() bool
- func (s *Session) IsPlayingCorrectTrack(playingInfo *CurrentPlayingInfo) error
- func (s *Session) IsResume(nextState StateType) bool
- func (s *Session) IsValidNextStateFromAPI(nextState StateType) bool
- func (s *Session) MoveToArchived()
- func (s *Session) MoveToPause() error
- func (s *Session) MoveToPlay() error
- func (s *Session) MoveToStop()
- func (s *Session) SetProgressWhenPaused(d time.Duration)
- func (s *Session) ShouldCallEnqueueAPINow() bool
- func (s *Session) TrackURIShouldBeAddedWhenHandleTrackEnd() string
- func (s *Session) TrackURIsShouldBeAddedWhenStopToPlay() ([]string, error)
- func (s *Session) UpdateExpiredAt()
- type SessionWithUser
- type SpotifyUser
- type StateType
- type SyncCheckTimer
- type SyncCheckTimerManager
- func (m *SyncCheckTimerManager) CreateExpiredTimer(sessionID string) *SyncCheckTimer
- func (m *SyncCheckTimerManager) DeleteTimer(sessionID string)
- func (m *SyncCheckTimerManager) GetTimer(sessionID string) (*SyncCheckTimer, bool)
- func (m *SyncCheckTimerManager) IsTimerExpired(sessionID string) (bool, error)
- func (m *SyncCheckTimerManager) SendToNextCh(sessionID string) error
- type Track
- type User
Constants ¶
This section is empty.
Variables ¶
var ( // ErrUserNotFound はユーザが存在しないエラーを表します。 ErrUserNotFound = errors.New("user not found") // ErrUserAlreadyExisted はユーザが既に存在しているエラーを表します。 ErrUserAlreadyExisted = errors.New("user has already existed") // ErrSessionNotFound はセッションが存在しないエラーを表します。 ErrSessionNotFound = errors.New("session not found") // ErrSessionAlreadyExisted はセッションが既に存在しているときのエラーを表します。 ErrSessionAlreadyExisted = errors.New("session has already existed") // ErrSessionAllTracksFinished はセッションに追加された全てのトラックの再生が全て終了しているエラーを表します。 ErrSessionAllTracksFinished = errors.New("all tracks has already finished") // ErrSessionPlayingDifferentTrack はキュー先頭の曲と異なる曲が再生されているエラーを表します。 ErrSessionPlayingDifferentTrack = errors.New("session is playing different track from queue") // ErrSessionNotAllowToControlOthers は作成者以外のユーザの操作が許可されていないのに操作しようとしたときのエラーを表します。 ErrSessionNotAllowToControlOthers = errors.New("session is not allowed to control by others") // ErrUserIsNotSessionCreator はユーザがセッションの作成者でないときのエラーを表します。 ErrUserIsNotSessionCreator = errors.New("user is not session's creator") // ErrQueueTrackNotFound はセッションに紐付くQueueTrackが存在しないエラーを表します。 ErrQueueTrackNotFound = errors.New("queue track not found") // ErrNextQueueTrackNotFound は次に再生すべきQueueTrackが存在しないエラーを表します。 ErrNextQueueTrackNotFound = errors.New("next queue track not found") // ErrTokenNotFound はSpotifyのアクセストークンが存在しないエラーを表します。 ErrTokenNotFound = errors.New("token not found") // ErrActiveDeviceNotFound は再生できるアクティブなデバイスが存在しないエラーを表します。 ErrActiveDeviceNotFound = errors.New("active device not found") // ErrNonPremium はユーザがプレミアム会員ではないエラーを表します。 ErrNonPremium = errors.New("non-premium user") // ErrInvalidStateType は不正なstate typeであるというエラーを表します。 ErrInvalidStateType = errors.New("invalid state type") // ErrChangeSessionStateNotPermit はセッションのステートの状態遷移が許可されていない場合のエラーを表します。 ErrChangeSessionStateNotPermit = errors.New("requested state is not allowed") // ErrLoginSessionNotFound はセッション(login)が存在しないエラーを表します。 ErrLoginSessionNotFound = errors.New("loginSession not found") // ErrLoginSessionAlreadyExisted はセッション(login)が既に存在しているときのエラーを表します。 ErrLoginSessionAlreadyExisted = errors.New("loginSession has already existed") )
var ( // EventAddTrack はセッションに曲が追加された際に発されるイベントです。 EventAddTrack = &Event{ Type: "ADDTRACK", } // EventPlay はセッションの再生が開始された際に発されるイベントです。 EventPlay = &Event{ Type: "PLAY", } // EventPause はセッションが一時停止された際に発されるイベントです。 EventPause = &Event{ Type: "PAUSE", } // EventStop は全ての曲の再生が終了した際に発されるイベントです。 EventStop = &Event{ Type: "STOP", } // EventInterrupt はSpotifyの本体アプリ側で操作されて、Relaym側との同期が取れなくなったタイミングで発されるイベントです。 // セッションは一時停止状態になり、RESUMEを送ることで再開されます。 EventInterrupt = &Event{ Type: "INTERRUPT", } // EventArchived はセッションがアーカイブされた際に発されるイベントです。 EventArchived = &Event{ Type: "ARCHIVED", } // EventUnarchive はセッションのアーカイブが解除された際に発されるイベントです。 EventUnarchive = &Event{ Type: "UNARCHIVE", } )
Functions ¶
This section is empty.
Types ¶
type Album ¶
type Album struct { Name string Images []*AlbumImage }
type AlbumImage ¶
type CurrentPlayingInfo ¶
CurrentPlayingInfo は現在再生している情報を表します
func (*CurrentPlayingInfo) Remain ¶
func (cpi *CurrentPlayingInfo) Remain() time.Duration
Remain は残りの再生時間を計算します。
type Event ¶
Event はクライアントに送信するイベントを表します。
func NewEventNextTrack ¶
NewEventNextTrack はセッションの曲の再生が (正常に) 次の曲に移った際に発されるイベントを生成します。 キューの現在再生している曲の位置が含まれます。
type QueueTrack ¶
QueueTrack はsessionに属するqueue内の曲を表します。
type QueueTrackToStore ¶
QueueTrackToStore はsessionに属するqueue内に曲を挿入する際に使用します
type Session ¶
type Session struct { ID string Name string CreatorID string DeviceID string StateType StateType QueueHead int QueueTracks []*QueueTrack ExpiredAt time.Time AllowToControlByOthers bool ProgressWhenPaused time.Duration }
Session はセッションを表します。
func NewSession ¶
NewSession はSessionのポインタを生成する関数です。
func (*Session) HeadTrack ¶ added in v1.1.0
func (s *Session) HeadTrack() *QueueTrack
HeadTrack は現在のHeadの曲を返します。
func (*Session) IsNextTrackExistWhenStateIsStop ¶ added in v1.2.0
IsNextTrackExistWhenStateIsStop はstateがstopの時に次の曲が存在するかを調べます
func (*Session) IsPlayingCorrectTrack ¶
func (s *Session) IsPlayingCorrectTrack(playingInfo *CurrentPlayingInfo) error
IsPlayingCorrectTrack は現在の再生状況がセッションの状況と一致しているかチェックします。
func (*Session) IsValidNextStateFromAPI ¶
IsValidNextStateFromAPI は外部からリクエストされたstateの変更の正当性を評価します
func (*Session) MoveToArchived ¶
func (s *Session) MoveToArchived()
MoveToArchived はセッションのStateTypeをArchivedに状態遷移します。
func (*Session) MoveToPause ¶
MoveToPause はセッションのStateTypeをPauseに状態遷移します。
func (*Session) MoveToPlay ¶
MoveToPlay はセッションのStateTypeをPlayに状態遷移します。
func (*Session) MoveToStop ¶
func (s *Session) MoveToStop()
MoveToStop はセッションのStateTypeをStopに状態遷移します。
func (*Session) SetProgressWhenPaused ¶ added in v1.1.0
SetProgressWhenPaused はProgressWhenPausedに時間をセットします。
func (*Session) ShouldCallEnqueueAPINow ¶
ShouldCallEnqueueAPINow は今すぐキューに追加するAPIを叩くかどうか判定します。 最後の曲もしくは最後から二番目の曲の再生中に曲を新たに追加された場合はSpotifyのキューに新たに追加したいので、それをチェックするために使います。
func (*Session) TrackURIShouldBeAddedWhenHandleTrackEnd ¶
TrackURIShouldBeAddedWhenHandleTrackEnd はある一曲の再生が終わったときにSpotifyのキューに追加するTrackURIを抽出します。
func (*Session) TrackURIsShouldBeAddedWhenStopToPlay ¶
TrackURIsShouldBeAddedWhenStopToPlay は再生を開始するときにSpotifyのキューに追加するTrackURIを抽出します。
func (*Session) UpdateExpiredAt ¶ added in v1.0.0
func (s *Session) UpdateExpiredAt()
UpdateExpiredAt はexpired_atを現在の時刻から3日後に設定します
type SessionWithUser ¶
func NewSessionWithUser ¶
func NewSessionWithUser(session *Session, creator *User) *SessionWithUser
NewSessionWithUser はSession(ポインタ)からSessionWithUser(ポインタ)を生成します
type SpotifyUser ¶
SpotifyUser はSpotify APIのユーザ情報を表します。
type StateType ¶
type StateType string
func NewStateType ¶
NewStateType はstringから対応するStateTypeを生成します。
type SyncCheckTimer ¶
type SyncCheckTimer struct {
// contains filtered or unexported fields
}
SyncCheckTimer はSpotifyとの同期チェック用のタイマーです。タイマーが止まったことを確認するためのstopチャネルがあります。 ref : http://okzk.hatenablog.com/entry/2015/12/01/001924
func (*SyncCheckTimer) ExpireCh ¶
func (s *SyncCheckTimer) ExpireCh() <-chan time.Time
ExpireCh は指定設定された秒数経過したことを送るチャネルを返します。
func (*SyncCheckTimer) MakeIsTimerExpiredTrue ¶ added in v1.2.0
func (s *SyncCheckTimer) MakeIsTimerExpiredTrue()
MakeIsTimerExpiredTrue はisTimerExpiredをtrueに変更します <- s.ExpireCh でtimerから値を受け取った際に呼び出してください
func (*SyncCheckTimer) NextCh ¶ added in v1.2.0
func (s *SyncCheckTimer) NextCh() <-chan struct{}
NextCh は次の曲への遷移の指示を送るチャネルを返します。
func (*SyncCheckTimer) SetDuration ¶ added in v1.2.0
func (s *SyncCheckTimer) SetDuration(d time.Duration)
SetTimerはSyncCheckTimerにTimerをセットします
func (*SyncCheckTimer) StopCh ¶
func (s *SyncCheckTimer) StopCh() <-chan struct{}
StopCh はタイマーがストップされたことを送るチャネルを返します。
type SyncCheckTimerManager ¶
type SyncCheckTimerManager struct {
// contains filtered or unexported fields
}
SyncCheckTimerManager はSpotifyとの同期チェック用のタイマーを一括して管理する構造体です。
func NewSyncCheckTimerManager ¶
func NewSyncCheckTimerManager() *SyncCheckTimerManager
NewSyncCheckTimerManager はSyncCheckTimerManagerのポインタを生成します。
func (*SyncCheckTimerManager) CreateExpiredTimer ¶ added in v1.2.0
func (m *SyncCheckTimerManager) CreateExpiredTimer(sessionID string) *SyncCheckTimer
CreateExpiredTimer は与えられたセッションの同期チェック用のタイマーを作成します。 既存のタイマーが存在する場合はstopしてから新しいタイマーを作成します。
func (*SyncCheckTimerManager) DeleteTimer ¶
func (m *SyncCheckTimerManager) DeleteTimer(sessionID string)
DeleteTimer は与えられたセッションのタイマーをマップから削除します。 既にタイマーがExpireして、そのチャネルの値を取り出してしまった後にマップから削除したいときに使います。
func (*SyncCheckTimerManager) GetTimer ¶
func (m *SyncCheckTimerManager) GetTimer(sessionID string) (*SyncCheckTimer, bool)
GetTimer は与えられたセッションのタイマーを取得します。存在しない場合はfalseが返ります。
func (*SyncCheckTimerManager) IsTimerExpired ¶ added in v1.2.0
func (m *SyncCheckTimerManager) IsTimerExpired(sessionID string) (bool, error)
IsTimerExpired は与えられたセッションのisTimerExpiredの値を返します
func (*SyncCheckTimerManager) SendToNextCh ¶ added in v1.2.0
func (m *SyncCheckTimerManager) SendToNextCh(sessionID string) error
SendToNextCh は与えられたセッションのタイマーのNextChに通知を送ります
type Track ¶
type Track struct { URI string ID string Name string Duration time.Duration Artists []*Artist URL string // Spotifyのwebページ Album *Album }
Track は曲を表す構造体です。