syntax = "proto3";

package Aurora.Proto.Party;

import "Proto/general.proto";

service RemotePartyService {
    //Party Service
    rpc JoinParty(JoinPartyRequest) returns (JoinPartyResponse);
    rpc LeaveParty(LeavePartyRequest) returns (LeavePartyResponse);
    rpc GetPartyMembers(Aurora.Proto.General.Empty) returns (MembersResponse);
    rpc GetQueue(Aurora.Proto.General.Empty) returns (QueueResponse);
}

message JoinPartyRequest {
    string userName = 2;
}

message JoinPartyResponse {
    PartyJoinedStatusEnum status = 1;
    string clientId = 2;
}

message LeavePartyRequest {
    string clientId = 1;
}

message LeavePartyResponse {
    PartyJoinedStatusEnum status = 1;
}

message PartyMember {
    string userName = 1;
    string id = 2;
    string ipAddress = 3;
    int32 port = 4;
}
message MembersResponse {
    repeated PartyMember members = 1;
}

enum PartyJoinedStatusEnum {
    Connected = 0;
    Disconnected = 1;
}

message QueueResponse{
    repeated RemoteMediaData mediaList = 1;
}

message RemoteMediaData {
    string id = 1;
    string title = 2;
    string artist = 3;
    string album = 4;
    string duration = 5;
}