diff options
31 files changed, 238 insertions, 121 deletions
diff --git a/Emby.Server.Implementations/SyncPlay/GroupController.cs b/Emby.Server.Implementations/SyncPlay/GroupController.cs index 612fba504..dc262f1cf 100644 --- a/Emby.Server.Implementations/SyncPlay/GroupController.cs +++ b/Emby.Server.Implementations/SyncPlay/GroupController.cs @@ -12,8 +12,8 @@ using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; using MediaBrowser.Controller.SyncPlay.GroupStates; using MediaBrowser.Controller.SyncPlay.Queue; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; -using MediaBrowser.Model.SyncPlay.RequestBodies; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.SyncPlay @@ -257,7 +257,7 @@ namespace Emby.Server.Implementations.SyncPlay public bool IsGroupEmpty() => _participants.Count == 0; /// <inheritdoc /> - public void CreateGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken) + public void CreateGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken) { GroupName = request.GroupName; AddSession(session); @@ -292,7 +292,7 @@ namespace Emby.Server.Implementations.SyncPlay } /// <inheritdoc /> - public void SessionJoin(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken) + public void SessionJoin(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken) { AddSession(session); @@ -308,7 +308,7 @@ namespace Emby.Server.Implementations.SyncPlay } /// <inheritdoc /> - public void SessionRestore(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken) + public void SessionRestore(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken) { var updateSession = NewSyncPlayGroupUpdate(GroupUpdateType.GroupJoined, GetInfo()); SendGroupUpdate(session, SyncPlayBroadcastType.CurrentSession, updateSession, cancellationToken); @@ -322,7 +322,7 @@ namespace Emby.Server.Implementations.SyncPlay } /// <inheritdoc /> - public void SessionLeave(SessionInfo session, CancellationToken cancellationToken) + public void SessionLeave(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken) { _state.SessionLeaving(this, _state.Type, session, cancellationToken); @@ -343,7 +343,7 @@ namespace Emby.Server.Implementations.SyncPlay // The server's job is to maintain a consistent state for clients to reference // and notify clients of state changes. The actual syncing of media playback // happens client side. Clients are aware of the server's time and use it to sync. - _logger.LogInformation("Session {SessionId} requested {RequestType} in group {GroupId} that is {StateType}.", session.Id, request.Type, GroupId.ToString(), _state.Type); + _logger.LogInformation("Session {SessionId} requested {RequestType} in group {GroupId} that is {StateType}.", session.Id, request.Action, GroupId.ToString(), _state.Type); request.Apply(this, _state, session, cancellationToken); } diff --git a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs index 5a0d61926..fbd3c3cfb 100644 --- a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs +++ b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs @@ -5,8 +5,8 @@ using Jellyfin.Data.Enums; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; -using MediaBrowser.Model.SyncPlay.RequestBodies; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.SyncPlay @@ -94,10 +94,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// <inheritdoc /> - public void NewGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken) + public void NewGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.NewGroup, request)) + if (!IsRequestValid(session, request)) { return; } @@ -111,7 +110,8 @@ namespace Emby.Server.Implementations.SyncPlay { if (IsSessionInGroup(session)) { - LeaveGroup(session, cancellationToken); + var leaveGroupRequest = new LeaveGroupRequest(); + LeaveGroup(session, leaveGroupRequest, cancellationToken); } var group = new GroupController(_loggerFactory, _userManager, _sessionManager, _libraryManager); @@ -124,10 +124,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// <inheritdoc /> - public void JoinGroup(SessionInfo session, Guid groupId, JoinGroupRequestBody request, CancellationToken cancellationToken) + public void JoinGroup(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.JoinGroup, request)) + if (!IsRequestValid(session, request)) { return; } @@ -137,11 +136,11 @@ namespace Emby.Server.Implementations.SyncPlay // Locking required to access list of groups. lock (_groupsLock) { - _groups.TryGetValue(groupId, out IGroupController group); + _groups.TryGetValue(request.GroupId, out IGroupController group); if (group == null) { - _logger.LogWarning("Session {SessionId} tried to join group {GroupId} that does not exist.", session.Id, groupId); + _logger.LogWarning("Session {SessionId} tried to join group {GroupId} that does not exist.", session.Id, request.GroupId); var error = new GroupUpdate<string>(Guid.Empty, GroupUpdateType.GroupDoesNotExist, string.Empty); _sessionManager.SendSyncPlayGroupUpdate(session, error, CancellationToken.None); @@ -165,13 +164,14 @@ namespace Emby.Server.Implementations.SyncPlay if (IsSessionInGroup(session)) { - if (FindJoinedGroupId(session).Equals(groupId)) + if (FindJoinedGroupId(session).Equals(request.GroupId)) { group.SessionRestore(session, request, cancellationToken); return; } - LeaveGroup(session, cancellationToken); + var leaveGroupRequest = new LeaveGroupRequest(); + LeaveGroup(session, leaveGroupRequest, cancellationToken); } AddSessionToGroup(session, group); @@ -182,10 +182,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// <inheritdoc /> - public void LeaveGroup(SessionInfo session, CancellationToken cancellationToken) + public void LeaveGroup(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.LeaveGroup)) + if (!IsRequestValid(session, request)) { return; } @@ -210,7 +209,7 @@ namespace Emby.Server.Implementations.SyncPlay lock (group) { RemoveSessionFromGroup(session, group); - group.SessionLeave(session, cancellationToken); + group.SessionLeave(session, request, cancellationToken); if (group.IsGroupEmpty()) { @@ -223,10 +222,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// <inheritdoc /> - public List<GroupInfoDto> ListGroups(SessionInfo session) + public List<GroupInfoDto> ListGroups(SessionInfo session, ListGroupsRequest request) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.ListGroups)) + if (!IsRequestValid(session, request)) { return new List<GroupInfoDto>(); } @@ -256,8 +254,7 @@ namespace Emby.Server.Implementations.SyncPlay /// <inheritdoc /> public void HandleRequest(SessionInfo session, IGroupPlaybackRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.Playback, request)) + if (!IsRequestValid(session, request)) { return; } @@ -304,11 +301,8 @@ namespace Emby.Server.Implementations.SyncPlay return; } - var request = new JoinGroupRequestBody() - { - GroupId = groupId - }; - JoinGroup(session, groupId, request, CancellationToken.None); + var request = new JoinGroupRequest(groupId); + JoinGroup(session, request, CancellationToken.None); } /// <summary> @@ -409,13 +403,11 @@ namespace Emby.Server.Implementations.SyncPlay /// Checks if a given session is allowed to make a given request. /// </summary> /// <param name="session">The session.</param> - /// <param name="requestType">The request type.</param> /// <param name="request">The request.</param> - /// <param name="checkRequest">Whether to check if request is null.</param> - /// <returns><c>true</c> if the request is valid, <c>false</c> otherwise. Will return <c>false</c> also when session is null.</returns> - private bool IsRequestValid<T>(SessionInfo session, GroupRequestType requestType, T request, bool checkRequest = true) + /// <returns><c>true</c> if the request is valid, <c>false</c> otherwise. Will return <c>false</c> also when session or request is null.</returns> + private bool IsRequestValid(SessionInfo session, ISyncPlayRequest request) { - if (session == null || (request == null && checkRequest)) + if (session == null || (request == null)) { return false; } @@ -424,7 +416,7 @@ namespace Emby.Server.Implementations.SyncPlay if (user.SyncPlayAccess == SyncPlayAccess.None) { - _logger.LogWarning("Session {SessionId} requested {RequestType} but does not have access to SyncPlay.", session.Id, requestType); + _logger.LogWarning("Session {SessionId} requested {RequestType} but does not have access to SyncPlay.", session.Id, request.Type); // TODO: rename to a more generic error. Next PR will fix this. var error = new GroupUpdate<string>(Guid.Empty, GroupUpdateType.JoinGroupDenied, string.Empty); @@ -432,7 +424,7 @@ namespace Emby.Server.Implementations.SyncPlay return false; } - if (requestType.Equals(GroupRequestType.NewGroup) && user.SyncPlayAccess != SyncPlayAccess.CreateAndJoinGroups) + if (request.Type.Equals(RequestType.NewGroup) && user.SyncPlayAccess != SyncPlayAccess.CreateAndJoinGroups) { _logger.LogWarning("Session {SessionId} does not have permission to create groups.", session.Id); @@ -443,16 +435,5 @@ namespace Emby.Server.Implementations.SyncPlay return true; } - - /// <summary> - /// Checks if a given session is allowed to make a given type of request. - /// </summary> - /// <param name="session">The session.</param> - /// <param name="requestType">The request type.</param> - /// <returns><c>true</c> if the request is valid, <c>false</c> otherwise. Will return <c>false</c> also when session is null.</returns> - private bool IsRequestValid(SessionInfo session, GroupRequestType requestType) - { - return IsRequestValid(session, requestType, session, false); - } } } diff --git a/Jellyfin.Api/Controllers/SyncPlayController.cs b/Jellyfin.Api/Controllers/SyncPlayController.cs index e8c9a0956..ed5ea3c8a 100644 --- a/Jellyfin.Api/Controllers/SyncPlayController.cs +++ b/Jellyfin.Api/Controllers/SyncPlayController.cs @@ -8,6 +8,7 @@ using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; using MediaBrowser.Controller.SyncPlay.PlaybackRequests; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; using MediaBrowser.Model.SyncPlay.RequestBodies; using Microsoft.AspNetCore.Authorization; @@ -54,7 +55,8 @@ namespace Jellyfin.Api.Controllers [FromBody, Required] NewGroupRequestBody requestData) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - _syncPlayManager.NewGroup(currentSession, requestData, CancellationToken.None); + var syncPlayRequest = new NewGroupRequest(requestData.GroupName); + _syncPlayManager.NewGroup(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -70,7 +72,8 @@ namespace Jellyfin.Api.Controllers [FromBody, Required] JoinGroupRequestBody requestData) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - _syncPlayManager.JoinGroup(currentSession, requestData.GroupId, requestData, CancellationToken.None); + var syncPlayRequest = new JoinGroupRequest(requestData.GroupId); + _syncPlayManager.JoinGroup(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -84,7 +87,8 @@ namespace Jellyfin.Api.Controllers public ActionResult SyncPlayLeaveGroup() { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - _syncPlayManager.LeaveGroup(currentSession, CancellationToken.None); + var syncPlayRequest = new LeaveGroupRequest(); + _syncPlayManager.LeaveGroup(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -98,7 +102,8 @@ namespace Jellyfin.Api.Controllers public ActionResult<IEnumerable<GroupInfoDto>> SyncPlayGetGroups() { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - return Ok(_syncPlayManager.ListGroups(currentSession)); + var syncPlayRequest = new ListGroupsRequest(); + return Ok(_syncPlayManager.ListGroups(currentSession, syncPlayRequest)); } /// <summary> diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs index 057488d6b..0b15e3ae4 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs @@ -209,14 +209,14 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates protected void SendGroupStateUpdate(IGroupStateContext context, IGroupPlaybackRequest reason, SessionInfo session, CancellationToken cancellationToken) { // Notify relevant state change event. - var stateUpdate = new GroupStateUpdate(Type, reason.Type); + var stateUpdate = new GroupStateUpdate(Type, reason.Action); var update = context.NewSyncPlayGroupUpdate(GroupUpdateType.StateUpdate, stateUpdate); context.SendGroupUpdate(session, SyncPlayBroadcastType.AllGroup, update, cancellationToken); } private void UnhandledRequest(IGroupPlaybackRequest request) { - _logger.LogWarning("Unhandled request of type {RequestType} in {StateType} state.", request.Type, Type); + _logger.LogWarning("Unhandled request of type {RequestType} in {StateType} state.", request.Action, Type); } } } diff --git a/MediaBrowser.Controller/SyncPlay/IGroupController.cs b/MediaBrowser.Controller/SyncPlay/IGroupController.cs index 5bcc3e2ca..07f9659dd 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupController.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupController.cs @@ -3,8 +3,8 @@ using System.Threading; using Jellyfin.Data.Entities; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay.Queue; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; -using MediaBrowser.Model.SyncPlay.RequestBodies; namespace MediaBrowser.Controller.SyncPlay { @@ -37,7 +37,7 @@ namespace MediaBrowser.Controller.SyncPlay /// <param name="session">The session.</param> /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> - void CreateGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken); + void CreateGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken); /// <summary> /// Adds the session to the group. @@ -45,7 +45,7 @@ namespace MediaBrowser.Controller.SyncPlay /// <param name="session">The session.</param> /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> - void SessionJoin(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken); + void SessionJoin(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken); /// <summary> /// Restores the state of a session that already joined the group. @@ -53,14 +53,15 @@ namespace MediaBrowser.Controller.SyncPlay /// <param name="session">The session.</param> /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> - void SessionRestore(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken); + void SessionRestore(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken); /// <summary> /// Removes the session from the group. /// </summary> /// <param name="session">The session.</param> + /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> - void SessionLeave(SessionInfo session, CancellationToken cancellationToken); + void SessionLeave(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken); /// <summary> /// Handles the requested action by the session. diff --git a/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs b/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs index 3b195e98c..201f29952 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay /// <summary> /// Interface IGroupPlaybackRequest. /// </summary> - public interface IGroupPlaybackRequest + public interface IGroupPlaybackRequest : ISyncPlayRequest { /// <summary> /// Gets the playback request type. /// </summary> /// <returns>The playback request type.</returns> - PlaybackRequestType Type { get; } + PlaybackRequestType Action { get; } /// <summary> /// Applies the request to a group. diff --git a/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs b/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs index 26fcb009c..146e4351d 100644 --- a/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs +++ b/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; using MediaBrowser.Model.SyncPlay.RequestBodies; @@ -18,30 +19,31 @@ namespace MediaBrowser.Controller.SyncPlay /// <param name="session">The session that's creating the group.</param> /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> - void NewGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken); + void NewGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken); /// <summary> /// Adds the session to a group. /// </summary> /// <param name="session">The session.</param> - /// <param name="groupId">The group identifier.</param> /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> - void JoinGroup(SessionInfo session, Guid groupId, JoinGroupRequestBody request, CancellationToken cancellationToken); + void JoinGroup(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken); /// <summary> /// Removes the session from a group. /// </summary> /// <param name="session">The session.</param> + /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> - void LeaveGroup(SessionInfo session, CancellationToken cancellationToken); + void LeaveGroup(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken); /// <summary> /// Gets list of available groups for a session. /// </summary> /// <param name="session">The session.</param> + /// <param name="request">The request.</param> /// <returns>The list of available groups.</returns> - List<GroupInfoDto> ListGroups(SessionInfo session); + List<GroupInfoDto> ListGroups(SessionInfo session, ListGroupsRequest request); /// <summary> /// Handle a request by a session in a group. diff --git a/MediaBrowser.Controller/SyncPlay/ISyncPlayRequest.cs b/MediaBrowser.Controller/SyncPlay/ISyncPlayRequest.cs new file mode 100644 index 000000000..bf1981773 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/ISyncPlayRequest.cs @@ -0,0 +1,16 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay +{ + /// <summary> + /// Interface ISyncPlayRequest. + /// </summary> + public interface ISyncPlayRequest + { + /// <summary> + /// Gets the request type. + /// </summary> + /// <returns>The request type.</returns> + RequestType Type { get; } + } +} diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/AbstractPlaybackRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/AbstractPlaybackRequest.cs new file mode 100644 index 000000000..4090f65b9 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/AbstractPlaybackRequest.cs @@ -0,0 +1,29 @@ +using System.Threading; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests +{ + /// <summary> + /// Class AbstractPlaybackRequest. + /// </summary> + public abstract class AbstractPlaybackRequest : IGroupPlaybackRequest + { + /// <summary> + /// Initializes a new instance of the <see cref="AbstractPlaybackRequest"/> class. + /// </summary> + protected AbstractPlaybackRequest() + { + // Do nothing. + } + + /// <inheritdoc /> + public RequestType Type { get; } = RequestType.Playback; + + /// <inheritdoc /> + public abstract PlaybackRequestType Action { get; } + + /// <inheritdoc /> + public abstract void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken); + } +} diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs index a12ab96b7..2981dbbdd 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs @@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class BufferGroupRequest. /// </summary> - public class BufferGroupRequest : IGroupPlaybackRequest + public class BufferGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="BufferGroupRequest"/> class. @@ -50,10 +50,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Buffer; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Buffer; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs index 25034cb10..a375895ad 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class IgnoreWaitGroupRequest. /// </summary> - public class IgnoreWaitGroupRequest : IGroupPlaybackRequest + public class IgnoreWaitGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="IgnoreWaitGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public bool IgnoreWait { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.IgnoreWait; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.IgnoreWait; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs index a12eff8b8..efca4ed3e 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class MovePlaylistItemGroupRequest. /// </summary> - public class MovePlaylistItemGroupRequest : IGroupPlaybackRequest + public class MovePlaylistItemGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="MovePlaylistItemGroupRequest"/> class. @@ -33,10 +33,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public int NewIndex { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.MovePlaylistItem; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.MovePlaylistItem; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs index f87bbc556..73b7d0908 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class NextTrackGroupRequest. /// </summary> - public class NextTrackGroupRequest : IGroupPlaybackRequest + public class NextTrackGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="NextTrackGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.NextTrack; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.NextTrack; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs index 0dcd1423f..8ce2b1fc8 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class PauseGroupRequest. /// </summary> - public class PauseGroupRequest : IGroupPlaybackRequest + public class PauseGroupRequest : AbstractPlaybackRequest { /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Pause; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Pause; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs index 2528bb3e7..19c940cdf 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class PingGroupRequest. /// </summary> - public class PingGroupRequest : IGroupPlaybackRequest + public class PingGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="PingGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public long Ping { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Ping; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Ping; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs index dbe298735..88e0ebad2 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class PlayGroupRequest. /// </summary> - public class PlayGroupRequest : IGroupPlaybackRequest + public class PlayGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="PlayGroupRequest"/> class. @@ -43,10 +43,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public long StartPositionTicks { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Play; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Play; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs index 206fef331..4c70beb0e 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class PreviousTrackGroupRequest. /// </summary> - public class PreviousTrackGroupRequest : IGroupPlaybackRequest + public class PreviousTrackGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="PreviousTrackGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.PreviousTrack; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.PreviousTrack; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs index d6247ddd6..ba5e3e232 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class QueueGroupRequest. /// </summary> - public class QueueGroupRequest : IGroupPlaybackRequest + public class QueueGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="QueueGroupRequest"/> class. @@ -35,10 +35,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public GroupQueueMode Mode { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Queue; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Queue; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs index a2b3553ce..b09db4ba8 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs @@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class ReadyGroupRequest. /// </summary> - public class ReadyGroupRequest : IGroupPlaybackRequest + public class ReadyGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="ReadyGroupRequest"/> class. @@ -50,10 +50,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Ready; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Ready; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs index dc7ba8465..dac1914aa 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class RemoveFromPlaylistGroupRequest. /// </summary> - public class RemoveFromPlaylistGroupRequest : IGroupPlaybackRequest + public class RemoveFromPlaylistGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="RemoveFromPlaylistGroupRequest"/> class. @@ -27,10 +27,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public IReadOnlyList<string> PlaylistItemIds { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.RemoveFromPlaylist; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.RemoveFromPlaylist; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs index f7bfc1978..41e28467c 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class SeekGroupRequest. /// </summary> - public class SeekGroupRequest : IGroupPlaybackRequest + public class SeekGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="SeekGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public long PositionTicks { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Seek; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Seek; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs index 2ca33c1cc..58fed3fa0 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class SetPlaylistItemGroupRequest. /// </summary> - public class SetPlaylistItemGroupRequest : IGroupPlaybackRequest + public class SetPlaylistItemGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="SetPlaylistItemGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.SetPlaylistItem; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.SetPlaylistItem; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs index cd4505e4d..6a5ec1d11 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class SetRepeatModeGroupRequest. /// </summary> - public class SetRepeatModeGroupRequest : IGroupPlaybackRequest + public class SetRepeatModeGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="SetRepeatModeGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public GroupRepeatMode Mode { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.SetRepeatMode; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.SetRepeatMode; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs index 4530a34c0..fe007c8d8 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class SetShuffleModeGroupRequest. /// </summary> - public class SetShuffleModeGroupRequest : IGroupPlaybackRequest + public class SetShuffleModeGroupRequest : AbstractPlaybackRequest { /// <summary> /// Initializes a new instance of the <see cref="SetShuffleModeGroupRequest"/> class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public GroupShuffleMode Mode { get; } /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.SetShuffleMode; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.SetShuffleMode; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs index ec01cd110..c42e229d1 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class StopGroupRequest. /// </summary> - public class StopGroupRequest : IGroupPlaybackRequest + public class StopGroupRequest : AbstractPlaybackRequest { /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Stop; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Stop; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs index bdf4fd476..b4c1744e9 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// <summary> /// Class UnpauseGroupRequest. /// </summary> - public class UnpauseGroupRequest : IGroupPlaybackRequest + public class UnpauseGroupRequest : AbstractPlaybackRequest { /// <inheritdoc /> - public PlaybackRequestType Type { get; } = PlaybackRequestType.Unpause; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Unpause; /// <inheritdoc /> - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/Requests/JoinGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/JoinGroupRequest.cs new file mode 100644 index 000000000..38c9e8e20 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/JoinGroupRequest.cs @@ -0,0 +1,29 @@ +using System; +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// <summary> + /// Class JoinGroupRequest. + /// </summary> + public class JoinGroupRequest : ISyncPlayRequest + { + /// <summary> + /// Initializes a new instance of the <see cref="JoinGroupRequest"/> class. + /// </summary> + /// <param name="groupId">The identifier of the group to join.</param> + public JoinGroupRequest(Guid groupId) + { + GroupId = groupId; + } + + /// <summary> + /// Gets the group identifier. + /// </summary> + /// <value>The identifier of the group to join.</value> + public Guid GroupId { get; } + + /// <inheritdoc /> + public RequestType Type { get; } = RequestType.JoinGroup; + } +} diff --git a/MediaBrowser.Controller/SyncPlay/Requests/LeaveGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/LeaveGroupRequest.cs new file mode 100644 index 000000000..545778264 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/LeaveGroupRequest.cs @@ -0,0 +1,13 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// <summary> + /// Class LeaveGroupRequest. + /// </summary> + public class LeaveGroupRequest : ISyncPlayRequest + { + /// <inheritdoc /> + public RequestType Type { get; } = RequestType.LeaveGroup; + } +} diff --git a/MediaBrowser.Controller/SyncPlay/Requests/ListGroupsRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/ListGroupsRequest.cs new file mode 100644 index 000000000..4a234fdab --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/ListGroupsRequest.cs @@ -0,0 +1,13 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// <summary> + /// Class ListGroupsRequest. + /// </summary> + public class ListGroupsRequest : ISyncPlayRequest + { + /// <inheritdoc /> + public RequestType Type { get; } = RequestType.ListGroups; + } +} diff --git a/MediaBrowser.Controller/SyncPlay/Requests/NewGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/NewGroupRequest.cs new file mode 100644 index 000000000..1321f0de8 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/NewGroupRequest.cs @@ -0,0 +1,28 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// <summary> + /// Class NewGroupRequest. + /// </summary> + public class NewGroupRequest : ISyncPlayRequest + { + /// <summary> + /// Initializes a new instance of the <see cref="NewGroupRequest"/> class. + /// </summary> + /// <param name="groupName">The name of the new group.</param> + public NewGroupRequest(string groupName) + { + GroupName = groupName; + } + + /// <summary> + /// Gets the group name. + /// </summary> + /// <value>The name of the new group.</value> + public string GroupName { get; } + + /// <inheritdoc /> + public RequestType Type { get; } = RequestType.NewGroup; + } +} diff --git a/MediaBrowser.Model/SyncPlay/GroupRequestType.cs b/MediaBrowser.Model/SyncPlay/RequestType.cs index 75c071236..a6e397dcd 100644 --- a/MediaBrowser.Model/SyncPlay/GroupRequestType.cs +++ b/MediaBrowser.Model/SyncPlay/RequestType.cs @@ -1,9 +1,9 @@ namespace MediaBrowser.Model.SyncPlay { /// <summary> - /// Enum GroupRequestType. + /// Enum RequestType. /// </summary> - public enum GroupRequestType + public enum RequestType { /// <summary> /// A user is requesting to create a new group. |
