Complete overhaul of protobuf spec
This commit is contained in:
parent
ddef74be85
commit
fac450900c
|
|
@ -2,58 +2,154 @@ syntax = "proto3";
|
||||||
package crabidy.v1;
|
package crabidy.v1;
|
||||||
|
|
||||||
service CrabidyService {
|
service CrabidyService {
|
||||||
|
// System
|
||||||
|
rpc Init(InitRequest) returns (InitResponse);
|
||||||
|
|
||||||
// Library
|
// Library
|
||||||
rpc GetLibraryNode(GetLibraryNodeRequest) returns (GetLibraryNodeResponse);
|
rpc GetLibraryNode(GetLibraryNodeRequest) returns (GetLibraryNodeResponse);
|
||||||
rpc GetTrack(GetTrackRequest) returns (GetTrackResponse);
|
|
||||||
|
|
||||||
// Queue
|
// Queue
|
||||||
rpc QueueTrack(QueueTrackRequest) returns (QueueTrackResponse);
|
rpc Queue(QueueRequest) returns (QueueResponse);
|
||||||
rpc QueueLibraryNode(QueueLibraryNodeRequest) returns (QueueLibraryNodeResponse);
|
rpc Replace(ReplaceRequest) returns (ReplaceResponse);
|
||||||
rpc ReplaceWithTrack(ReplaceWithTrackRequest) returns (ReplaceWithTrackResponse);
|
rpc Append(AppendRequest) returns (AppendResponse);
|
||||||
rpc ReplaceWithNode(ReplaceWithNodeRequest) returns (ReplaceWithNodeResponse);
|
rpc Remove(RemoveRequest) returns (RemoveResponse);
|
||||||
rpc AppendTrack(AppendTrackRequest) returns (AppendTrackResponse);
|
rpc Insert(InsertRequest) returns (InsertResponse);
|
||||||
rpc AppendNode(AppendNodeRequest) returns (AppendNodeResponse);
|
rpc SetCurrent(SetCurrentRequest) returns (SetCurrentResponse);
|
||||||
rpc RemoveTracks(RemoveTracksRequest) returns (RemoveTracksResponse);
|
rpc GetUpdateStream(GetUpdateStreamRequest) returns (stream GetUpdateStreamResponse);
|
||||||
rpc SetCurrentTrack(SetCurrentTrackRequest) returns (SetCurrentTrackResponse);
|
|
||||||
rpc GetQueueUpdates(GetQueueUpdatesRequest) returns (stream GetQueueUpdatesResponse);
|
|
||||||
rpc GetQueue(GetQueueRequest) returns (GetQueueResponse);
|
|
||||||
rpc SaveQueue(SaveQueueRequest) returns (SaveQueueResponse);
|
rpc SaveQueue(SaveQueueRequest) returns (SaveQueueResponse);
|
||||||
|
|
||||||
// Playback
|
// Playback
|
||||||
rpc TogglePlay(TogglePlayRequest) returns (TogglePlayResponse);
|
rpc TogglePlay(TogglePlayRequest) returns (TogglePlayResponse);
|
||||||
rpc Stop(StopRequest) returns (StopResponse);
|
rpc Stop(StopRequest) returns (StopResponse);
|
||||||
rpc GetActiveTrack(GetActiveTrackRequest) returns (GetActiveTrackResponse);
|
rpc ChangeVolume(ChangeVolumeRequest) returns (ChangeVolumeResponse);
|
||||||
rpc GetTrackUpdates(GetTrackUpdatesRequest) returns (stream GetTrackUpdatesResponse);
|
rpc ToggleMute(ToggleMuteRequest) returns (ToggleMuteResponse);
|
||||||
|
rpc Next(NextRequest) returns (NextResponse);
|
||||||
|
rpc Prev(PrevRequest) returns (PrevResponse);
|
||||||
|
rpc RestartTrack(RestartTrackRequest) returns (RestartTrackResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// System
|
||||||
|
message InitRequest {}
|
||||||
|
message InitResponse {
|
||||||
|
Queue queue = 1;
|
||||||
|
QueueTrack queue_track = 2;
|
||||||
|
PlayState play_state = 3;
|
||||||
|
uint32 volume = 4;
|
||||||
|
bool mute = 5;
|
||||||
|
TrackPosition position = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Library
|
||||||
|
message GetLibraryNodeRequest {
|
||||||
|
string uuid = 1;
|
||||||
|
}
|
||||||
|
message GetLibraryNodeResponse {
|
||||||
|
LibraryNode node = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Queue
|
||||||
|
message QueueRequest {
|
||||||
|
repeated string uuid = 1;
|
||||||
|
}
|
||||||
|
message QueueResponse {}
|
||||||
|
|
||||||
|
message ReplaceRequest {
|
||||||
|
repeated string uuid = 1;
|
||||||
|
}
|
||||||
|
message ReplaceResponse {}
|
||||||
|
|
||||||
|
message AppendRequest {
|
||||||
|
repeated string uuid = 1;
|
||||||
|
}
|
||||||
|
message AppendResponse {}
|
||||||
|
|
||||||
|
message RemoveRequest {
|
||||||
|
repeated string uuid = 1;
|
||||||
|
}
|
||||||
|
message RemoveResponse {}
|
||||||
|
|
||||||
|
message InsertRequest {
|
||||||
|
repeated string uuid = 1;
|
||||||
|
}
|
||||||
|
message InsertResponse {}
|
||||||
|
|
||||||
|
message SetCurrentRequest {
|
||||||
|
uint32 position = 1;
|
||||||
|
}
|
||||||
|
message SetCurrentResponse {}
|
||||||
|
|
||||||
|
message SaveQueueRequest {
|
||||||
|
string name = 1;
|
||||||
|
}
|
||||||
|
message SaveQueueResponse {}
|
||||||
|
|
||||||
|
// Stream
|
||||||
|
message GetUpdateStreamRequest {}
|
||||||
|
message GetUpdateStreamResponse {
|
||||||
|
oneof update {
|
||||||
|
Queue queue = 1;
|
||||||
|
QueueTrack queue_track = 2;
|
||||||
|
PlayState play_state = 3;
|
||||||
|
uint32 volume = 4;
|
||||||
|
bool mute = 5;
|
||||||
|
TrackPosition position = 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Playback
|
||||||
|
message TogglePlayRequest {}
|
||||||
|
message TogglePlayResponse {}
|
||||||
|
|
||||||
|
message StopRequest {}
|
||||||
|
message StopResponse {}
|
||||||
|
|
||||||
|
message ChangeVolumeRequest {
|
||||||
|
int32 delta = 1;
|
||||||
|
}
|
||||||
|
message ChangeVolumeResponse {}
|
||||||
|
|
||||||
|
message ToggleMuteRequest {}
|
||||||
|
message ToggleMuteResponse {}
|
||||||
|
|
||||||
|
message NextRequest {}
|
||||||
|
message NextResponse {}
|
||||||
|
|
||||||
|
message PrevRequest {}
|
||||||
|
message PrevResponse {}
|
||||||
|
|
||||||
|
message RestartTrackRequest {}
|
||||||
|
message RestartTrackResponse {}
|
||||||
|
|
||||||
|
// Data types
|
||||||
message LibraryNodeChild {
|
message LibraryNodeChild {
|
||||||
string uuid = 1;
|
string uuid = 1;
|
||||||
string title = 2;
|
string title = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetQueueRequest {}
|
message Queue {
|
||||||
message QueueTrackResponse {}
|
uint64 timestamp = 1;
|
||||||
message QueueLibraryNodeResponse {}
|
uint32 current = 2;
|
||||||
message ReplaceWithTrackResponse {}
|
// Without album
|
||||||
message ReplaceWithNodeResponse {}
|
repeated Track tracks = 3;
|
||||||
message AppendTrackResponse {}
|
}
|
||||||
message AppendNodeResponse {}
|
|
||||||
message RemoveTracksResponse {}
|
|
||||||
message SetCurrentTrackResponse {}
|
|
||||||
message SaveQueueResponse {}
|
|
||||||
|
|
||||||
message TogglePlayRequest {}
|
message QueueTrack {
|
||||||
message TogglePlayResponse {}
|
uint32 queue_position = 1;
|
||||||
message StopRequest {}
|
// With album
|
||||||
message StopResponse {}
|
optional Track track = 2;
|
||||||
message GetActiveTrackRequest {}
|
}
|
||||||
|
|
||||||
// To signal whether it's loading data (for frontend only probably -
|
enum PlayState {
|
||||||
// could also be used for fetching from providers?)
|
PLAY_STATE_UNSPECIFIED = 0;
|
||||||
enum LibraryNodeState {
|
PLAY_STATE_STOPPED = 1;
|
||||||
LIBRARY_NODE_STATE_UNSPECIFIED = 0;
|
PLAY_STATE_LOADING = 2;
|
||||||
LIBRARY_NODE_STATE_PENDING = 1;
|
PLAY_STATE_PLAYING = 3;
|
||||||
LIBRARY_NODE_STATE_DONE = 2;
|
PLAY_STATE_PAUSED = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message TrackPosition {
|
||||||
|
uint32 duration = 1;
|
||||||
|
uint32 position = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Album {
|
message Album {
|
||||||
|
|
@ -61,16 +157,13 @@ message Album {
|
||||||
optional string release_date = 2;
|
optional string release_date = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Artist {
|
|
||||||
string name = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Track {
|
message Track {
|
||||||
// Including provider
|
// Including provider
|
||||||
string uuid = 1;
|
string uuid = 1;
|
||||||
string artist = 2;
|
string artist = 2;
|
||||||
string title = 3;
|
string title = 3;
|
||||||
optional uint32 duration = 4;
|
optional uint32 duration = 4;
|
||||||
|
optional Album album = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message LibraryNode {
|
message LibraryNode {
|
||||||
|
|
@ -79,117 +172,6 @@ message LibraryNode {
|
||||||
string title = 2;
|
string title = 2;
|
||||||
repeated LibraryNodeChild children = 3;
|
repeated LibraryNodeChild children = 3;
|
||||||
optional string parent = 4;
|
optional string parent = 4;
|
||||||
LibraryNodeState state = 5;
|
repeated Track tracks = 5;
|
||||||
repeated Track tracks = 6;
|
bool is_queable = 6;
|
||||||
bool is_queable = 7;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetLibraryNodeRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetLibraryNodeResponse {
|
|
||||||
LibraryNode node = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetTrackRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetTrackResponse {
|
|
||||||
Track track = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Queue {
|
|
||||||
uint64 timestamp = 1;
|
|
||||||
uint32 current = 2;
|
|
||||||
repeated Track tracks = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message QueuePositionChange {
|
|
||||||
uint64 timestamp = 1;
|
|
||||||
uint32 new_position = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message QueueTrackRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ReplaceWithTrackRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message AppendTrackRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message QueueLibraryNodeRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ReplaceWithNodeRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message AppendNodeRequest {
|
|
||||||
string uuid = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message RemoveTracksRequest {
|
|
||||||
repeated uint32 positions = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message SetCurrentTrackRequest {
|
|
||||||
uint32 position = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetQueueUpdatesRequest {
|
|
||||||
uint64 timestamp = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetQueueResponse {
|
|
||||||
Queue queue = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetQueueUpdatesResponse {
|
|
||||||
oneof queue_update_result {
|
|
||||||
Queue full = 1;
|
|
||||||
QueuePositionChange position_change = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
message SaveQueueRequest {
|
|
||||||
string name = 1;
|
|
||||||
// inside the configured path of crabidy
|
|
||||||
string path = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum TrackPlayState {
|
|
||||||
TRACK_PLAY_STATE_UNSPECIFIED = 0;
|
|
||||||
TRACK_PLAY_STATE_STOPPED = 1;
|
|
||||||
TRACK_PLAY_STATE_LOADING = 2;
|
|
||||||
TRACK_PLAY_STATE_PLAYING = 3;
|
|
||||||
TRACK_PLAY_STATE_PAUSED = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetTrackUpdatesRequest {
|
|
||||||
// defines how many of the update messages should be skipped
|
|
||||||
// before they are sent back via GetTrackUpdates
|
|
||||||
uint32 updates_skipped = 1;
|
|
||||||
repeated string type_whitelist = 2;
|
|
||||||
repeated string type_blacklist = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ActiveTrack {
|
|
||||||
optional Track track = 1;
|
|
||||||
TrackPlayState play_state = 2;
|
|
||||||
uint32 completion = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetActiveTrackResponse {
|
|
||||||
ActiveTrack active_track = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetTrackUpdatesResponse {
|
|
||||||
ActiveTrack active_track = 1;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue