api

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2023 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrAlreadyShutdown returns if already Shutdown is called
	ErrAlreadyShutdown = errors.New("api: already shutdown")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	AppVersion        string            // app version string for info
	BackgroundTimeout time.Duration     // timeout for background mpd cache updating jobs
	AudioProxy        map[string]string // audio device - mpd http server addr pair to proxy

	ImageProviders []ImageProvider
	Logger         Logger
	// contains filtered or unexported fields
}

Config is options for api Handler.

type CurrentSongHandler added in v0.12.0

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

func NewCurrentSongHandler added in v0.12.0

func NewCurrentSongHandler(mpd MPDCurrentSong, songHook func(map[string][]string) map[string][]string) (*CurrentSongHandler, error)

func (*CurrentSongHandler) Changed added in v0.12.0

func (a *CurrentSongHandler) Changed() <-chan struct{}

func (*CurrentSongHandler) Close added in v0.12.0

func (a *CurrentSongHandler) Close()

func (*CurrentSongHandler) ServeHTTP added in v0.12.0

func (a *CurrentSongHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*CurrentSongHandler) Update added in v0.12.0

func (a *CurrentSongHandler) Update(ctx context.Context) error

type Handler

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

Handler implements http.Handler for vv json api.

func NewHandler

func NewHandler(ctx context.Context, cl *mpd.Client, w *mpd.Watcher, c *Config) (*Handler, error)

NewHandler creates Handler and initialize mpd cache data.

func (*Handler) ServeHTTP

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP serves vv json api.

func (*Handler) Shutdown

func (h *Handler) Shutdown(ctx context.Context) error

Shutdown stops background api.

func (*Handler) Stop

func (h *Handler) Stop()

Stop stops handlers which cannot stop by (*http.Server) Shutdown.

type ImageProvider

type ImageProvider interface {
	Update(context.Context, map[string][]string) error
	Rescan(context.Context, map[string][]string, string) error
	GetURLs(map[string][]string) ([]string, bool)
}

ImageProvider represents http cover image image url api.

type ImagesHandler added in v0.12.0

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

func NewImagesHandler added in v0.12.0

func NewImagesHandler(img []ImageProvider, logger Logger) (*ImagesHandler, error)

func (*ImagesHandler) Changed added in v0.12.0

func (a *ImagesHandler) Changed() <-chan bool

Changed returns response body changes event chan.

func (*ImagesHandler) Close added in v0.12.0

func (a *ImagesHandler) Close()

Close closes update event chan.

func (*ImagesHandler) ConvSong added in v0.12.0

func (a *ImagesHandler) ConvSong(s map[string][]string) (map[string][]string, bool)

func (*ImagesHandler) ConvSongs added in v0.12.0

func (a *ImagesHandler) ConvSongs(s []map[string][]string) []map[string][]string

func (*ImagesHandler) ServeHTTP added in v0.12.0

func (a *ImagesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*ImagesHandler) Shutdown added in v0.12.0

func (a *ImagesHandler) Shutdown(ctx context.Context) error

Shutdown stops background image updater api.

func (*ImagesHandler) UpdateLibrarySongs added in v0.12.0

func (a *ImagesHandler) UpdateLibrarySongs(songs []map[string][]string)

UpdateLibrarySongs set songs for rescan images.

type LibraryHandler added in v0.12.0

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

func NewLibraryHandler added in v0.12.0

func NewLibraryHandler(mpd MPDLibrary) (*LibraryHandler, error)

func (*LibraryHandler) Changed added in v0.12.0

func (a *LibraryHandler) Changed() <-chan struct{}

Changed returns library song list update event chan.

func (*LibraryHandler) Close added in v0.12.0

func (a *LibraryHandler) Close()

Close closes update event chan.

func (*LibraryHandler) ServeHTTP added in v0.12.0

func (a *LibraryHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*LibraryHandler) UpdateStatus added in v0.12.0

func (a *LibraryHandler) UpdateStatus(updating bool) error

type LibrarySongsHandler added in v0.12.0

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

func NewLibrarySongsHandler added in v0.12.0

func NewLibrarySongsHandler(mpd MPDLibrarySongs, songsHook func([]map[string][]string) []map[string][]string) (*LibrarySongsHandler, error)

func (*LibrarySongsHandler) Cache added in v0.12.0

func (a *LibrarySongsHandler) Cache() []map[string][]string

func (*LibrarySongsHandler) Changed added in v0.12.0

func (a *LibrarySongsHandler) Changed() <-chan struct{}

Changed returns library song list update event chan.

func (*LibrarySongsHandler) Close added in v0.12.0

func (a *LibrarySongsHandler) Close()

Close closes update event chan.

func (*LibrarySongsHandler) ServeHTTP added in v0.12.0

func (a *LibrarySongsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responses library song list as json format.

func (*LibrarySongsHandler) Update added in v0.12.0

func (a *LibrarySongsHandler) Update(ctx context.Context) error

type Logger added in v0.12.0

type Logger interface {
	Printf(string, ...interface{})
	Println(...interface{})
	Debugf(string, ...interface{})
	Debugln(...interface{})
}

type MPDCurrentSong added in v0.12.0

type MPDCurrentSong interface {
	CurrentSong(context.Context) (map[string][]string, error)
}

type MPDLibrary added in v0.12.0

type MPDLibrary interface {
	Update(context.Context, string) (map[string]string, error)
}

type MPDLibrarySongs added in v0.12.0

type MPDLibrarySongs interface {
	ListAllInfo(context.Context, string) ([]map[string][]string, error)
}

type MPDOutputs added in v0.12.0

type MPDOutputs interface {
	EnableOutput(context.Context, string) error
	DisableOutput(context.Context, string) error
	OutputSet(context.Context, string, string, string) error
	Outputs(context.Context) ([]*mpd.Output, error)
}

type MPDPlaylist added in v0.12.0

type MPDPlaylist interface {
	Play(context.Context, int) error
	ExecCommandList(context.Context, *mpd.CommandList) error
}

type MPDPlaylistSongs added in v0.12.0

type MPDPlaylistSongs interface {
	PlaylistInfo(context.Context) ([]map[string][]string, error)
}

type MPDStats added in v0.12.0

type MPDStats interface {
	Stats(context.Context) (map[string]string, error)
}

type MPDStatus added in v0.12.0

type MPDStatus interface {
	Status(context.Context) (map[string]string, error)
	ReplayGainStatus(context.Context) (map[string]string, error)
	SetVol(context.Context, int) error
	Repeat(context.Context, bool) error
	Random(context.Context, bool) error
	Single(context.Context, bool) error
	OneShot(context.Context) error
	Consume(context.Context, bool) error
	SeekCur(context.Context, float64) error
	ReplayGainMode(context.Context, string) error
	Crossfade(context.Context, time.Duration) error
	Play(context.Context, int) error
	Pause(context.Context, bool) error
	Next(context.Context) error
	Previous(context.Context) error
}

type MPDStorage added in v0.12.0

type MPDStorage interface {
	ListMounts(context.Context) ([]map[string]string, error)
	Mount(context.Context, string, string) error
	Unmount(context.Context, string) error
	Update(context.Context, string) (map[string]string, error)
}

MPDStorage represents mpd api for Storage API.

type MPDVersion added in v0.12.0

type MPDVersion interface {
	Version() string
}

MPDVersion represents mpd api for Version API.

type NeighborsHandler added in v0.12.0

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

NeighborsHandler provides neighbor storage name and uri.

func NewNeighborsHandler added in v0.12.0

func NewNeighborsHandler(mpd interface {
	ListNeighbors(context.Context) ([]map[string]string, error)
}, logger Logger) (*NeighborsHandler, error)

NewNeighborsHandler initilize Neighbors cache with mpd connection.

func (*NeighborsHandler) Changed added in v0.12.0

func (a *NeighborsHandler) Changed() <-chan struct{}

Changed returns neighbors list update event chan.

func (*NeighborsHandler) Close added in v0.12.0

func (a *NeighborsHandler) Close()

Close closes update event chan.

func (*NeighborsHandler) ServeHTTP added in v0.12.0

func (a *NeighborsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responses neighbors list as json format.

func (*NeighborsHandler) Update added in v0.12.0

func (a *NeighborsHandler) Update(ctx context.Context) error

Update updates neighbors list.

type OutputsHandler added in v0.12.0

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

func NewOutputsHandler added in v0.12.0

func NewOutputsHandler(mpd MPDOutputs, proxy map[string]string) (*OutputsHandler, error)

func (*OutputsHandler) Changed added in v0.12.0

func (a *OutputsHandler) Changed() <-chan struct{}

Changed returns outputs update event chan.

func (*OutputsHandler) Close added in v0.12.0

func (a *OutputsHandler) Close()

Close closes update event chan.

func (*OutputsHandler) ServeHTTP added in v0.12.0

func (a *OutputsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*OutputsHandler) Update added in v0.12.0

func (a *OutputsHandler) Update(ctx context.Context) error

type OutputsStreamHandler added in v0.12.0

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

OutputsStreamHandler is a MPD HTTP audio proxy.

func NewOutputsStreamHandler added in v0.12.0

func NewOutputsStreamHandler(proxy map[string]string, logger Logger) (*OutputsStreamHandler, error)

NewOutputsStreamHandler initilize OutputsStreamHandler cache with mpd connection.

func (*OutputsStreamHandler) ServeHTTP added in v0.12.0

func (a *OutputsStreamHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responses audio stream.

func (*OutputsStreamHandler) Stop added in v0.12.0

func (a *OutputsStreamHandler) Stop()

Stop closes audio streams.

type PlaylistHandler added in v0.12.0

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

PlaylistHandler provides current playlist sort function.

func NewPlaylistHandler added in v0.12.0

func NewPlaylistHandler(mpd MPDPlaylist, config *Config) (*PlaylistHandler, error)

func (*PlaylistHandler) Changed added in v0.12.0

func (a *PlaylistHandler) Changed() <-chan struct{}

Changed returns library song list update event chan.

func (*PlaylistHandler) Close added in v0.12.0

func (a *PlaylistHandler) Close()

Close closes update event chan.

func (*PlaylistHandler) ServeHTTP added in v0.12.0

func (a *PlaylistHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*PlaylistHandler) Shutdown added in v0.12.0

func (a *PlaylistHandler) Shutdown(ctx context.Context) error

Shutdown waits playlist updates. Shutdown does not allow no playlist updates request.

func (*PlaylistHandler) UpdateCurrent added in v0.12.0

func (a *PlaylistHandler) UpdateCurrent(pos int) error

func (*PlaylistHandler) UpdateLibrarySongs added in v0.12.0

func (a *PlaylistHandler) UpdateLibrarySongs(i []map[string][]string)

func (*PlaylistHandler) UpdatePlaylistSongs added in v0.12.0

func (a *PlaylistHandler) UpdatePlaylistSongs(i []map[string][]string)

func (*PlaylistHandler) Wait added in v0.12.0

func (a *PlaylistHandler) Wait(ctx context.Context) error

Wait waits playlist updates.

type PlaylistSongsHandler added in v0.12.0

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

func NewPlaylistSongsHandler added in v0.12.0

func NewPlaylistSongsHandler(mpd MPDPlaylistSongs, songsHook func([]map[string][]string) []map[string][]string) (*PlaylistSongsHandler, error)

func (*PlaylistSongsHandler) Cache added in v0.12.0

func (a *PlaylistSongsHandler) Cache() []map[string][]string

func (*PlaylistSongsHandler) Changed added in v0.12.0

func (a *PlaylistSongsHandler) Changed() <-chan struct{}

Changed returns neighbors list update event chan.

func (*PlaylistSongsHandler) Close added in v0.12.0

func (a *PlaylistSongsHandler) Close()

Close closes update event chan.

func (*PlaylistSongsHandler) ServeHTTP added in v0.12.0

func (a *PlaylistSongsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responses neighbors list as json format.

func (*PlaylistSongsHandler) Update added in v0.12.0

func (a *PlaylistSongsHandler) Update(ctx context.Context) error

type StatsHandler added in v0.12.0

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

StatsHandler provides mpd stats.

func NewStatsHandler added in v0.12.0

func NewStatsHandler(mpd MPDStats) (*StatsHandler, error)

NewStatsHandler initilize Stats cache with mpd connection.

func (*StatsHandler) Changed added in v0.12.0

func (a *StatsHandler) Changed() <-chan struct{}

Changed returns stats update event chan.

func (*StatsHandler) Close added in v0.12.0

func (a *StatsHandler) Close()

Close closes update event chan.

func (*StatsHandler) ServeHTTP added in v0.12.0

func (a *StatsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responses stats as json format.

func (*StatsHandler) Update added in v0.12.0

func (a *StatsHandler) Update(ctx context.Context) error

type Status added in v0.12.0

type Status struct {
	Volume      *int     `json:"volume,omitempty"`
	Repeat      *bool    `json:"repeat,omitempty"`
	Random      *bool    `json:"random,omitempty"`
	Single      *bool    `json:"single,omitempty"`
	Oneshot     *bool    `json:"oneshot,omitempty"`
	Consume     *bool    `json:"consume,omitempty"`
	State       *string  `json:"state,omitempty"`
	SongElapsed *float64 `json:"song_elapsed,omitempty"`
	ReplayGain  *string  `json:"replay_gain,omitempty"`
	Crossfade   *int     `json:"crossfade,omitempty"`

	Updating bool    `json:"-"`
	Error    *string `json:"-"`
	Song     *int    `json:"-"`
}

type StatusHandler added in v0.12.0

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

func NewStatusHandler added in v0.12.0

func NewStatusHandler(mpd MPDStatus) (*StatusHandler, error)

func (*StatusHandler) BroadCast added in v0.12.0

func (a *StatusHandler) BroadCast(s string)

Broadcast broadcasts messages to websocket mpds.

func (*StatusHandler) Cache added in v0.12.0

func (a *StatusHandler) Cache() *Status

func (*StatusHandler) Changed added in v0.12.0

func (a *StatusHandler) Changed() <-chan struct{}

Changed returns status update event chan.

func (*StatusHandler) Close added in v0.12.0

func (a *StatusHandler) Close()

Close closes update event chan.

func (*StatusHandler) ServeHTTP added in v0.12.0

func (a *StatusHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*StatusHandler) Update added in v0.12.0

func (a *StatusHandler) Update(ctx context.Context) error

func (*StatusHandler) UpdateOptions added in v0.12.0

func (a *StatusHandler) UpdateOptions(ctx context.Context) error

type StorageHandler added in v0.12.0

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

StorageHandler provides mount, unmount, list storage api.

func NewStorageHandler added in v0.12.0

func NewStorageHandler(mpd MPDStorage, logger Logger) (*StorageHandler, error)

func (*StorageHandler) Changed added in v0.12.0

func (a *StorageHandler) Changed() <-chan struct{}

Changed returns storage list update event chan.

func (*StorageHandler) Close added in v0.12.0

func (a *StorageHandler) Close()

Close closes update event chan.

func (*StorageHandler) ServeHTTP added in v0.12.0

func (a *StorageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responses storage api.

func (*StorageHandler) Update added in v0.12.0

func (a *StorageHandler) Update(ctx context.Context) error

type VersionHandler added in v0.12.0

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

func NewVersionHandler added in v0.12.0

func NewVersionHandler(mpd MPDVersion, version string) (*VersionHandler, error)

func (*VersionHandler) Changed added in v0.12.0

func (a *VersionHandler) Changed() <-chan struct{}

Changed returns version update event chan.

func (*VersionHandler) Close added in v0.12.0

func (a *VersionHandler) Close()

Close closes update event chan.

func (*VersionHandler) ServeHTTP added in v0.12.0

func (a *VersionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responses version as json format.

func (*VersionHandler) Update added in v0.12.0

func (a *VersionHandler) Update() error

func (*VersionHandler) UpdateNoMPD added in v0.12.0

func (a *VersionHandler) UpdateNoMPD() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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