aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-21 00:35:56 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-21 00:35:56 -0500
commit2ceea17bf424cf1ac8608b79e57f1c0ac1c65e42 (patch)
tree2e5ceaf7d2a9c03c189f09a053857a624a75abd1
parent7cd41a6ed62c46006307add9de92e0b329bd0edc (diff)
rework EnableMediaPlayback
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs11
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs16
-rw-r--r--MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj3
-rw-r--r--MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj3
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs13
-rw-r--r--MediaBrowser.Model/Dto/RecordingInfoDto.cs12
-rw-r--r--MediaBrowser.Model/Library/PlayAccess.cs9
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs3
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs11
10 files changed, 59 insertions, 23 deletions
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index da3f9be17..5b3221078 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -12,6 +12,7 @@ using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Library;
using MediaBrowser.Model.LiveTv;
using System;
using System.Collections.Generic;
@@ -1268,11 +1269,6 @@ namespace MediaBrowser.Api.Playback
var user = AuthorizationRequestFilterAttribute.GetCurrentUser(Request, UserManager);
- if (user != null && !user.Configuration.EnableMediaPlayback)
- {
- throw new ArgumentException(string.Format("{0} is not allowed to play media.", user.Name));
- }
-
var url = Request.PathInfo;
if (!request.AudioCodec.HasValue)
@@ -1288,6 +1284,11 @@ namespace MediaBrowser.Api.Playback
var item = DtoService.GetItemByDtoId(request.Id);
+ if (user != null && item.GetPlayAccess(user) != PlayAccess.Full)
+ {
+ throw new ArgumentException(string.Format("{0} is not allowed to play media.", user.Name));
+ }
+
if (item is ILiveTvRecording)
{
var recording = await LiveTvManager.GetInternalRecording(request.Id, cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index cf79148f6..483ed1c34 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -7,6 +7,7 @@ using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Library;
using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
@@ -479,6 +480,21 @@ namespace MediaBrowser.Controller.Entities
}
/// <summary>
+ /// Gets the play access.
+ /// </summary>
+ /// <param name="user">The user.</param>
+ /// <returns>PlayAccess.</returns>
+ public PlayAccess GetPlayAccess(User user)
+ {
+ if (!user.Configuration.EnableMediaPlayback)
+ {
+ return PlayAccess.None;
+ }
+
+ return PlayAccess.Full;
+ }
+
+ /// <summary>
/// Loads local trailers from the file system
/// </summary>
/// <returns>List{Video}.</returns>
diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
index 8987cae5f..556a59138 100644
--- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
+++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
@@ -233,6 +233,9 @@
<Compile Include="..\MediaBrowser.Model\IO\IZipClient.cs">
<Link>IO\IZipClient.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Library\PlayAccess.cs">
+ <Link>Library\PlayAccess.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\LiveTv\ChannelInfoDto.cs">
<Link>LiveTv\ChannelInfoDto.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
index 76fbe2000..b5ac60d52 100644
--- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
+++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
@@ -220,6 +220,9 @@
<Compile Include="..\MediaBrowser.Model\IO\IZipClient.cs">
<Link>IO\IZipClient.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Library\PlayAccess.cs">
+ <Link>Library\PlayAccess.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\LiveTv\ChannelInfoDto.cs">
<Link>LiveTv\ChannelInfoDto.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index 8f4330446..0d2c4c34e 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.Serialization;
+using MediaBrowser.Model.Library;
namespace MediaBrowser.Model.Dto
{
@@ -153,6 +154,12 @@ namespace MediaBrowser.Model.Dto
/// </summary>
/// <value>The cumulative run time ticks.</value>
public long? CumulativeRunTimeTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets the original run time ticks.
+ /// </summary>
+ /// <value>The original run time ticks.</value>
+ public long? OriginalRunTimeTicks { get; set; }
/// <summary>
/// Gets or sets the run time ticks.
@@ -161,6 +168,12 @@ namespace MediaBrowser.Model.Dto
public long? RunTimeTicks { get; set; }
/// <summary>
+ /// Gets or sets the play access.
+ /// </summary>
+ /// <value>The play access.</value>
+ public PlayAccess PlayAccess { get; set; }
+
+ /// <summary>
/// Gets or sets the aspect ratio.
/// </summary>
/// <value>The aspect ratio.</value>
diff --git a/MediaBrowser.Model/Dto/RecordingInfoDto.cs b/MediaBrowser.Model/Dto/RecordingInfoDto.cs
deleted file mode 100644
index 4151c5a9c..000000000
--- a/MediaBrowser.Model/Dto/RecordingInfoDto.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Model.Dto
-{
- public class RecordingInfoDto
- {
- }
-}
diff --git a/MediaBrowser.Model/Library/PlayAccess.cs b/MediaBrowser.Model/Library/PlayAccess.cs
new file mode 100644
index 000000000..6ec845fc7
--- /dev/null
+++ b/MediaBrowser.Model/Library/PlayAccess.cs
@@ -0,0 +1,9 @@
+
+namespace MediaBrowser.Model.Library
+{
+ public enum PlayAccess
+ {
+ Full = 0,
+ None = 1
+ }
+}
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index efe450ac1..b2d130358 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -76,6 +76,7 @@
<Compile Include="Entities\PackageReviewInfo.cs" />
<Compile Include="FileOrganization\FileOrganizationResult.cs" />
<Compile Include="FileOrganization\FileOrganizationQuery.cs" />
+ <Compile Include="Library\PlayAccess.cs" />
<Compile Include="LiveTv\ChannelInfoDto.cs" />
<Compile Include="LiveTv\ChannelQuery.cs" />
<Compile Include="LiveTv\ProgramInfoDto.cs" />
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 65a496533..321923dba 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -10,7 +10,6 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
@@ -185,6 +184,8 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.UserData.Played = dto.PlayedPercentage.HasValue && dto.PlayedPercentage.Value >= 100;
}
+
+ dto.PlayAccess = item.GetPlayAccess(user);
}
private int GetChildCount(Folder folder, User user)
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 09a442966..bfa23b997 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -7,6 +7,7 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Library;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Session;
using System;
@@ -604,20 +605,20 @@ namespace MediaBrowser.Server.Implementations.Session
{
var session = GetSessionForRemoteControl(sessionId);
+ var items = command.ItemIds.Select(i => _libraryManager.GetItemById(new Guid(i)))
+ .Where(i => i.LocationType != LocationType.Virtual)
+ .ToList();
+
if (session.UserId.HasValue)
{
var user = _userManager.GetUserById(session.UserId.Value);
- if (!user.Configuration.EnableMediaPlayback)
+ if (items.Any(i => i.GetPlayAccess(user) != PlayAccess.Full))
{
throw new ArgumentException(string.Format("{0} is not allowed to play media.", user.Name));
}
}
- var items = command.ItemIds.Select(i => _libraryManager.GetItemById(new Guid(i)))
- .Where(i => i.LocationType != LocationType.Virtual)
- .ToList();
-
if (command.PlayCommand != PlayCommand.PlayNow)
{
if (items.Any(i => !session.QueueableMediaTypes.Contains(i.MediaType, StringComparer.OrdinalIgnoreCase)))