aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
authorgion <oancaionutandrei@gmail.com>2020-04-22 22:05:53 +0200
committergion <oancaionutandrei@gmail.com>2020-04-27 22:39:37 +0200
commit73fcbe90c04d9b3de0fc0591565d9a3548a0fa70 (patch)
tree1e5142479d7f8808571d50766ef837c63ef9cf61 /Emby.Server.Implementations
parent083d3272d09395e2b7d73d886377017573e63686 (diff)
Send error messages to clients
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Syncplay/SyncplayManager.cs68
1 files changed, 50 insertions, 18 deletions
diff --git a/Emby.Server.Implementations/Syncplay/SyncplayManager.cs b/Emby.Server.Implementations/Syncplay/SyncplayManager.cs
index e7df8925e..5aefd1fd9 100644
--- a/Emby.Server.Implementations/Syncplay/SyncplayManager.cs
+++ b/Emby.Server.Implementations/Syncplay/SyncplayManager.cs
@@ -165,8 +165,14 @@ namespace Emby.Server.Implementations.Syncplay
if (user.Policy.SyncplayAccess != SyncplayAccess.CreateAndJoinGroups)
{
- // TODO: report the error to the client
- throw new ArgumentException("User does not have permission to create groups");
+ _logger.LogWarning("Syncplaymanager NewGroup: {0} does not have permission to create groups.", session.Id);
+
+ var error = new GroupUpdate<string>()
+ {
+ Type = GroupUpdateType.CreateGroupDenied
+ };
+ _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
+ return;
}
if (IsSessionInGroup(session))
@@ -187,8 +193,14 @@ namespace Emby.Server.Implementations.Syncplay
if (user.Policy.SyncplayAccess == SyncplayAccess.None)
{
- // TODO: report the error to the client
- throw new ArgumentException("User does not have access to syncplay");
+ _logger.LogWarning("Syncplaymanager JoinGroup: {0} does not have access to Syncplay.", session.Id);
+
+ var error = new GroupUpdate<string>()
+ {
+ Type = GroupUpdateType.JoinGroupDenied
+ };
+ _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
+ return;
}
ISyncplayController group;
@@ -196,17 +208,27 @@ namespace Emby.Server.Implementations.Syncplay
if (group == null)
{
- _logger.LogWarning("Syncplaymanager JoinGroup: {0} does not exist.", groupId);
+ _logger.LogWarning("Syncplaymanager JoinGroup: {0} tried to join group {0} that does not exist.", session.Id, groupId);
- var update = new GroupUpdate<string>();
- update.Type = GroupUpdateType.NotInGroup;
- _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), update, CancellationToken.None);
+ var error = new GroupUpdate<string>()
+ {
+ Type = GroupUpdateType.GroupNotJoined
+ };
+ _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
return;
}
if (!HasAccessToItem(user, group.GetPlayingItemId()))
{
- throw new ArgumentException("User does not have access to playing item");
+ _logger.LogWarning("Syncplaymanager JoinGroup: {0} does not have access to {1}.", session.Id, group.GetPlayingItemId());
+
+ var error = new GroupUpdate<string>()
+ {
+ GroupId = group.GetGroupId().ToString(),
+ Type = GroupUpdateType.LibraryAccessDenied
+ };
+ _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
+ return;
}
if (IsSessionInGroup(session))
@@ -230,9 +252,11 @@ namespace Emby.Server.Implementations.Syncplay
{
_logger.LogWarning("Syncplaymanager LeaveGroup: {0} does not belong to any group.", session.Id);
- var update = new GroupUpdate<string>();
- update.Type = GroupUpdateType.NotInGroup;
- _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), update, CancellationToken.None);
+ var error = new GroupUpdate<string>()
+ {
+ Type = GroupUpdateType.NotInGroup
+ };
+ _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
return;
}
group.SessionLeave(session);
@@ -280,8 +304,14 @@ namespace Emby.Server.Implementations.Syncplay
if (user.Policy.SyncplayAccess == SyncplayAccess.None)
{
- // TODO: same as LeaveGroup
- throw new ArgumentException("User does not have access to syncplay");
+ _logger.LogWarning("Syncplaymanager HandleRequest: {0} does not have access to Syncplay.", session.Id);
+
+ var error = new GroupUpdate<string>()
+ {
+ Type = GroupUpdateType.JoinGroupDenied
+ };
+ _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
+ return;
}
ISyncplayController group;
@@ -289,11 +319,13 @@ namespace Emby.Server.Implementations.Syncplay
if (group == null)
{
- _logger.LogWarning("Syncplaymanager HandleRequest: {0} not in a group.", session.Id);
+ _logger.LogWarning("Syncplaymanager HandleRequest: {0} does not belong to any group.", session.Id);
- var update = new GroupUpdate<string>();
- update.Type = GroupUpdateType.NotInGroup;
- _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), update, CancellationToken.None);
+ var error = new GroupUpdate<string>()
+ {
+ Type = GroupUpdateType.NotInGroup
+ };
+ _sessionManager.SendSyncplayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
return;
}
group.HandleRequest(session, request);