Skip to content

Commit e078e74

Browse files
committed
chore: refactor to allow build on linux and non-linux hosts
1 parent 42ffdb7 commit e078e74

File tree

4 files changed

+127
-100
lines changed

4 files changed

+127
-100
lines changed

mpris/fallback-server.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//go:build !linux
2+
3+
package mpris
4+
5+
import (
6+
librespot "github.com/devgianlu/go-librespot"
7+
)
8+
9+
// NewServer opens the dbus connection and registers everything important
10+
//
11+
//goland:noinspection GoUnusedParameter
12+
func NewServer(logger librespot.Logger) (_ *DummyServer, err error) {
13+
logger.Warn("mpris was set to enabled although it is not included in this build")
14+
15+
return &DummyServer{}, nil
16+
}

mpris/interfaces.go

Lines changed: 2 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
//go:build linux
2+
13
package mpris
24

35
import (
@@ -8,22 +10,6 @@ import (
810
"github.com/godbus/dbus/v5/prop"
911
)
1012

11-
type PlaybackStatus string
12-
13-
const (
14-
Playing PlaybackStatus = "Playing"
15-
Paused PlaybackStatus = "Paused"
16-
Stopped PlaybackStatus = "Stopped"
17-
)
18-
19-
type LoopStatus string
20-
21-
const (
22-
None LoopStatus = "None"
23-
Track LoopStatus = "Track"
24-
Playlist LoopStatus = "Playlist"
25-
)
26-
2713
func newProp(value interface{}, cb func(*prop.Change) *dbus.Error) *prop.Prop {
2814
return &prop.Prop{
2915
Value: value,
@@ -59,38 +45,6 @@ func (r MediaPlayer2RootInterface) Quit() *dbus.Error {
5945
return nil
6046
}
6147

62-
type MediaPlayer2PlayerCommandType int32
63-
64-
const (
65-
MediaPlayer2PlayerCommandTypeNext MediaPlayer2PlayerCommandType = iota
66-
MediaPlayer2PlayerCommandTypePrevious
67-
MediaPlayer2PlayerCommandTypePause
68-
MediaPlayer2PlayerCommandTypePlayPause
69-
MediaPlayer2PlayerCommandTypeStop
70-
MediaPlayer2PlayerCommandTypePlay
71-
MediaPlayer2PlayerCommandTypeSeek
72-
MediaPlayer2PlayerCommandTypeSetPosition
73-
MediaPlayer2PlayerCommandTypeOpenUri
74-
MediaPlayer2PlayerCommandLoopStatusChanged
75-
MediaPlayer2PlayerCommandRateChanged
76-
MediaPlayer2PlayerCommandShuffleChanged
77-
MediaPlayer2PlayerCommandVolumeChanged
78-
)
79-
80-
type MediaPlayer2PlayerCommandResponse struct {
81-
Err *dbus.Error
82-
}
83-
type MediaPlayer2PlayerCommand struct {
84-
Type MediaPlayer2PlayerCommandType
85-
Argument any
86-
87-
response chan MediaPlayer2PlayerCommandResponse
88-
}
89-
90-
func (m *MediaPlayer2PlayerCommand) Reply(resp MediaPlayer2PlayerCommandResponse) {
91-
m.response <- resp
92-
}
93-
9448
type MediaPlayer2PlayerInterface struct {
9549
log librespot.Logger
9650

@@ -243,11 +197,6 @@ func (p MediaPlayer2PlayerInterface) Seek(x int64) *dbus.Error {
243197
)
244198
}
245199

246-
type MediaPlayer2CommandSetPositionPayload struct {
247-
ObjectPath dbus.ObjectPath
248-
PositionUs int64
249-
}
250-
251200
func (p MediaPlayer2PlayerInterface) SetPosition(o dbus.ObjectPath, x int64) *dbus.Error {
252201
p.log.Tracef("PlayerInterface::SetPosition (%s, %d)", o, x)
253202

mpris/model.go

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package mpris
2+
3+
import (
4+
librespot "github.com/devgianlu/go-librespot"
5+
"github.com/godbus/dbus/v5"
6+
)
7+
8+
type PlaybackStatus string
9+
10+
const (
11+
Playing PlaybackStatus = "Playing"
12+
Paused PlaybackStatus = "Paused"
13+
Stopped PlaybackStatus = "Stopped"
14+
)
15+
16+
type LoopStatus string
17+
18+
const (
19+
None LoopStatus = "None"
20+
Track LoopStatus = "Track"
21+
Playlist LoopStatus = "Playlist"
22+
)
23+
24+
type MediaPlayer2PlayerCommandType int32
25+
26+
const (
27+
MediaPlayer2PlayerCommandTypeNext MediaPlayer2PlayerCommandType = iota
28+
MediaPlayer2PlayerCommandTypePrevious
29+
MediaPlayer2PlayerCommandTypePause
30+
MediaPlayer2PlayerCommandTypePlayPause
31+
MediaPlayer2PlayerCommandTypeStop
32+
MediaPlayer2PlayerCommandTypePlay
33+
MediaPlayer2PlayerCommandTypeSeek
34+
MediaPlayer2PlayerCommandTypeSetPosition
35+
MediaPlayer2PlayerCommandTypeOpenUri
36+
MediaPlayer2PlayerCommandLoopStatusChanged
37+
MediaPlayer2PlayerCommandRateChanged
38+
MediaPlayer2PlayerCommandShuffleChanged
39+
MediaPlayer2PlayerCommandVolumeChanged
40+
)
41+
42+
type MediaPlayer2PlayerCommand struct {
43+
Type MediaPlayer2PlayerCommandType
44+
Argument any
45+
46+
response chan MediaPlayer2PlayerCommandResponse
47+
}
48+
49+
func (m *MediaPlayer2PlayerCommand) Reply(resp MediaPlayer2PlayerCommandResponse) {
50+
m.response <- resp
51+
}
52+
53+
type MediaPlayer2PlayerCommandResponse struct {
54+
Err *dbus.Error
55+
}
56+
57+
type MediaState struct {
58+
PlaybackStatus PlaybackStatus
59+
LoopStatus LoopStatus
60+
Shuffle bool
61+
Volume float64
62+
PositionMs int64
63+
Uri *string // nilable
64+
Media *librespot.Media // nilable
65+
}
66+
67+
type SeekState struct {
68+
PositionMs int64
69+
}
70+
71+
type Server interface {
72+
EmitStateUpdate(state MediaState)
73+
EmitSeekUpdate(state SeekState)
74+
Receive() <-chan MediaPlayer2PlayerCommand
75+
76+
Close() error
77+
}
78+
79+
func GetLoopStatus(repeatingContext bool, repeatingTrack bool) LoopStatus {
80+
if repeatingTrack {
81+
return Track
82+
}
83+
if repeatingContext {
84+
return Playlist
85+
}
86+
return None
87+
}
88+
89+
type MediaPlayer2CommandSetPositionPayload struct {
90+
ObjectPath dbus.ObjectPath
91+
PositionUs int64
92+
}
93+
94+
type DummyServer struct {
95+
}
96+
97+
func (d DummyServer) EmitStateUpdate(_ MediaState) {
98+
}
99+
100+
func (d DummyServer) EmitSeekUpdate(_ SeekState) {
101+
}
102+
103+
func (d DummyServer) Receive() <-chan MediaPlayer2PlayerCommand {
104+
return make(<-chan MediaPlayer2PlayerCommand)
105+
}
106+
107+
func (d DummyServer) Close() error { return nil }

mpris/server.go

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
//go:build linux
2+
13
package mpris
24

35
import (
@@ -35,28 +37,6 @@ func (d *DBusInstance) setProperty(interfaceName string, fieldName string, value
3537
return err
3638
}
3739

38-
type MediaState struct {
39-
PlaybackStatus PlaybackStatus
40-
LoopStatus LoopStatus
41-
Shuffle bool
42-
Volume float64
43-
PositionMs int64
44-
Uri *string // nilable
45-
Media *librespot.Media // nilable
46-
}
47-
48-
type SeekState struct {
49-
PositionMs int64
50-
}
51-
52-
type Server interface {
53-
EmitStateUpdate(state MediaState)
54-
EmitSeekUpdate(state SeekState)
55-
Receive() <-chan MediaPlayer2PlayerCommand
56-
57-
Close() error
58-
}
59-
6040
type ConcreteServer struct {
6141
dbus *DBusInstance
6242
rootInterface MediaPlayer2RootInterface
@@ -137,16 +117,6 @@ func makeMetadata(uri *string, media *librespot.Media) map[string]any {
137117
return m
138118
}
139119

140-
func GetLoopStatus(repeatingContext bool, repeatingTrack bool) LoopStatus {
141-
if repeatingTrack {
142-
return Track
143-
}
144-
if repeatingContext {
145-
return Playlist
146-
}
147-
return None
148-
}
149-
150120
func (s *ConcreteServer) EmitStateUpdate(state MediaState) {
151121
s.stateChannel <- state
152122
}
@@ -298,18 +268,3 @@ func NewServer(logger librespot.Logger) (_ *ConcreteServer, err error) {
298268

299269
return s, nil
300270
}
301-
302-
type DummyServer struct {
303-
}
304-
305-
func (d DummyServer) EmitStateUpdate(_ MediaState) {
306-
}
307-
308-
func (d DummyServer) EmitSeekUpdate(_ SeekState) {
309-
}
310-
311-
func (d DummyServer) Receive() <-chan MediaPlayer2PlayerCommand {
312-
return make(<-chan MediaPlayer2PlayerCommand)
313-
}
314-
315-
func (d DummyServer) Close() error { return nil }

0 commit comments

Comments
 (0)