173 lines
3.5 KiB
Go
173 lines
3.5 KiB
Go
package backend
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/dweymouth/supersonic/player"
|
|
"github.com/quarckster/go-mpris-server/pkg/events"
|
|
"github.com/quarckster/go-mpris-server/pkg/server"
|
|
"github.com/quarckster/go-mpris-server/pkg/types"
|
|
)
|
|
|
|
var (
|
|
_ types.OrgMprisMediaPlayer2Adapter = (*MPRISHandler)(nil)
|
|
_ types.OrgMprisMediaPlayer2PlayerAdapter = (*MPRISHandler)(nil)
|
|
)
|
|
var (
|
|
notImplemented = errors.New("not implemented")
|
|
)
|
|
|
|
type MPRISHandler struct {
|
|
p *player.Player
|
|
pm *PlaybackManager
|
|
s *server.Server
|
|
evt *events.EventHandler
|
|
}
|
|
|
|
func NewMPRISHandler(p *player.Player, pm *PlaybackManager) *MPRISHandler {
|
|
m := &MPRISHandler{p: p, pm: pm}
|
|
m.s = server.NewServer("Supersonic", m, m)
|
|
m.evt = events.NewEventHandler(m.s)
|
|
return m
|
|
}
|
|
|
|
func (m *MPRISHandler) Start() {
|
|
go m.s.Listen()
|
|
}
|
|
|
|
func (m *MPRISHandler) Shutdown() {
|
|
m.s.Stop()
|
|
}
|
|
|
|
// OrgMprisMediaPlayer2Adapter implementation
|
|
|
|
func (m *MPRISHandler) Identity() (string, error) {
|
|
return "supersonic", nil
|
|
}
|
|
|
|
func (m *MPRISHandler) CanQuit() (bool, error) {
|
|
return false, nil
|
|
}
|
|
|
|
func (m *MPRISHandler) Quit() error {
|
|
return errors.New("not implemented")
|
|
}
|
|
|
|
func (m *MPRISHandler) CanRaise() (bool, error) {
|
|
return false, nil
|
|
}
|
|
|
|
func (m *MPRISHandler) Raise() error {
|
|
return errors.New("not implemented")
|
|
}
|
|
|
|
func (m *MPRISHandler) HasTrackList() (bool, error) {
|
|
return false, nil
|
|
}
|
|
|
|
func (m *MPRISHandler) SupportedUriSchemes() ([]string, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (m *MPRISHandler) SupportedMimeTypes() ([]string, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
// OrgMprisMediaPlayer2PlayerAdapter implementation
|
|
|
|
func (m *MPRISHandler) Next() error {
|
|
return m.p.SeekNext()
|
|
}
|
|
|
|
func (m *MPRISHandler) Previous() error {
|
|
return m.p.SeekBackOrPrevious()
|
|
}
|
|
|
|
func (m *MPRISHandler) Pause() error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) PlayPause() error {
|
|
return m.p.PlayPause()
|
|
}
|
|
|
|
func (m *MPRISHandler) Stop() error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) Play() error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) Seek(offset types.Microseconds) error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) SetPosition(trackId string, position types.Microseconds) error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) OpenUri(uri string) error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) PlaybackStatus() (types.PlaybackStatus, error) {
|
|
return "", notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) Rate() (float64, error) {
|
|
return 0, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) SetRate(float64) error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) Metadata() (types.Metadata, error) {
|
|
return types.Metadata{}, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) Volume() (float64, error) {
|
|
return 0, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) SetVolume(float64) error {
|
|
return notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) Position() (int64, error) {
|
|
return 0, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) MinimumRate() (float64, error) {
|
|
return 0, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) MaximumRate() (float64, error) {
|
|
return 0, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) CanGoNext() (bool, error) {
|
|
return false, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) CanGoPrevious() (bool, error) {
|
|
return false, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) CanPlay() (bool, error) {
|
|
return false, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) CanPause() (bool, error) {
|
|
return false, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) CanSeek() (bool, error) {
|
|
return false, notImplemented
|
|
}
|
|
|
|
func (m *MPRISHandler) CanControl() (bool, error) {
|
|
return false, notImplemented
|
|
}
|