Documentation
¶
Index ¶
- type AuthUseCase
- func (u *AuthUseCase) Authorization(state, code string) (string, string, error)
- func (u *AuthUseCase) GetAuthURL(redirectURL string) (string, error)
- func (u *AuthUseCase) GetTokenAndCreatorIDBySessionID(sessionID string) (*oauth2.Token, string, error)
- func (u *AuthUseCase) GetTokenByUserID(userID string) (*oauth2.Token, error)
- func (u *AuthUseCase) GetUserIDFromSession(sessionID string) (string, error)
- func (u *AuthUseCase) RefreshAccessToken(userID string, token *oauth2.Token) (*oauth2.Token, error)
- type BatchUseCase
- type SessionStateUseCase
- type SessionTimerUseCase
- type SessionUseCase
- func (s *SessionUseCase) CanConnectToPusher(ctx context.Context, sessionID string) error
- func (s *SessionUseCase) CreateSession(sessionName string, creatorID string) (*entity.SessionWithUser, error)
- func (s *SessionUseCase) EnqueueTrack(ctx context.Context, sessionID string, trackURI string) error
- func (s *SessionUseCase) GetActiveDevices(ctx context.Context) ([]*entity.Device, error)
- func (s *SessionUseCase) GetSession(ctx context.Context, sessionID string) (*entity.SessionWithUser, []*entity.Track, *entity.CurrentPlayingInfo, error)
- func (s *SessionUseCase) SetDevice(ctx context.Context, sessionID string, deviceID string) error
- type TrackUseCase
- type UserUseCase
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthUseCase ¶
type AuthUseCase struct {
// contains filtered or unexported fields
}
AuthUseCase は認証・認可に関するユースケースです。
func NewAuthUseCase ¶
func NewAuthUseCase(authCli spotify.Auth, userCli spotify.User, repo repository.Auth, userRepo repository.User, sessionRepo repository.Session) *AuthUseCase
NewAuthUseCase はAuthUseCaseのポインタを生成します。
func (*AuthUseCase) Authorization ¶
func (u *AuthUseCase) Authorization(state, code string) (string, string, error)
Authorization はcodeを使って認可をチェックします。 認可に成功した場合はフロントエンドのリダイレクトURLとセッションIDを返します。
func (*AuthUseCase) GetAuthURL ¶
func (u *AuthUseCase) GetAuthURL(redirectURL string) (string, error)
GetAuthURL はSpotifyの認可画面のリンクを生成します。 CSRF対策のためにstateを保存しておいて、callbackを受け取った時に正当性を確認する必要がある。
func (*AuthUseCase) GetTokenAndCreatorIDBySessionID ¶
func (u *AuthUseCase) GetTokenAndCreatorIDBySessionID(sessionID string) (*oauth2.Token, string, error)
GetTokenAndCreatorIDBySessionID は指定されたidからsessionの持つcreatorのtokenを返します
func (*AuthUseCase) GetTokenByUserID ¶
func (u *AuthUseCase) GetTokenByUserID(userID string) (*oauth2.Token, error)
GetTokenByUserID は対応したユーザのアクセストークンを取得します。
func (*AuthUseCase) GetUserIDFromSession ¶
func (u *AuthUseCase) GetUserIDFromSession(sessionID string) (string, error)
GetUserIDFromSession はセッションIDから対応するユーザIDを返します。
func (*AuthUseCase) RefreshAccessToken ¶
RefreshAccessToken はリフレッシュトークンを使用してアクセストークンを更新し保存します。
type BatchUseCase ¶
type BatchUseCase struct {
// contains filtered or unexported fields
}
BatchUseCase はセッションに関するユースケースです。
func NewBatchUseCase ¶
func NewBatchUseCase(sessionRepo repository.Session, pusher event.Pusher) *BatchUseCase
NewBatchUseCase はSessionUseCaseのポインタを生成します。
func (*BatchUseCase) ArchiveOldSessions ¶
func (s *BatchUseCase) ArchiveOldSessions() error
ArchiveOldSessions は古いSessionのstateをArchivedに変更します
type SessionStateUseCase ¶
type SessionStateUseCase struct {
// contains filtered or unexported fields
}
SessionStateUseCase はセッションの再生に関するユースケースです。
func NewSessionStateUseCase ¶
func NewSessionStateUseCase(sessionRepo repository.Session, playerCli spotify.Player, pusher event.Pusher, timerUC *SessionTimerUseCase) *SessionStateUseCase
NewSessionPlayerUseCase はSessionPlayerUseCaseのポインタを生成します。
func (*SessionStateUseCase) ChangeSessionState ¶
func (s *SessionStateUseCase) ChangeSessionState(ctx context.Context, sessionID string, st entity.StateType) error
ChangeSessionState は与えられたセッションのstateを操作します。
type SessionTimerUseCase ¶
type SessionTimerUseCase struct {
// contains filtered or unexported fields
}
func NewSessionTimerUseCase ¶
func NewSessionTimerUseCase(sessionRepo repository.Session, playerCli spotify.Player, pusher event.Pusher, tm *entity.SyncCheckTimerManager) *SessionTimerUseCase
type SessionUseCase ¶
type SessionUseCase struct {
// contains filtered or unexported fields
}
SessionUseCase はセッションに関するユースケースです。
func NewSessionUseCase ¶
func NewSessionUseCase(sessionRepo repository.Session, userRepo repository.User, playerCli spotify.Player, trackCli spotify.TrackClient, userCli spotify.User, pusher event.Pusher, timerUC *SessionTimerUseCase) *SessionUseCase
NewSessionUseCase はSessionUseCaseのポインタを生成します。
func (*SessionUseCase) CanConnectToPusher ¶
func (s *SessionUseCase) CanConnectToPusher(ctx context.Context, sessionID string) error
CanConnectToPusher はイベントをクライアントにプッシュするためのコネクションを貼れるかどうかチェックします。
func (*SessionUseCase) CreateSession ¶
func (s *SessionUseCase) CreateSession(sessionName string, creatorID string) (*entity.SessionWithUser, error)
CreateSession は与えられたセッション名のセッションを作成します。
func (*SessionUseCase) EnqueueTrack ¶
EnqueueTrack はセッションのqueueにTrackを追加します。
func (*SessionUseCase) GetActiveDevices ¶
GetActiveDevices はログインしているユーザがSpotifyを起動している端末を取得します。
func (*SessionUseCase) GetSession ¶
func (s *SessionUseCase) GetSession(ctx context.Context, sessionID string) (*entity.SessionWithUser, []*entity.Track, *entity.CurrentPlayingInfo, error)
GetSession は指定されたidからsessionの情報を返します
type TrackUseCase ¶
type TrackUseCase struct {
// contains filtered or unexported fields
}
TrackUseCase は音楽に関するユースケースです。
func NewTrackUseCase ¶
func NewTrackUseCase(track spotify.TrackClient) *TrackUseCase
NewTrackUseCase はTrackUseCaseのポインタを生成します。
func (*TrackUseCase) SearckTracks ¶
SearchTracks はクエリから音楽を検索します。
type UserUseCase ¶
type UserUseCase struct {
// contains filtered or unexported fields
}
UserUseCase はユーザに関係するアプリケーションロジックを担当する構造体です。
func NewUserUseCase ¶
func NewUserUseCase(userCli spotify.User, userRepo repository.User) *UserUseCase
NewUserUseCase はUserUseCaseのポインタを生成する関数です。
func (*UserUseCase) GetMe ¶
func (u *UserUseCase) GetMe(ctx context.Context) (*entity.User, *entity.SpotifyUser, error)
GetMe はログインしているユーザを取得します。