update shared item page

This commit is contained in:
Luke Pulverenti 2015-07-03 07:51:45 -04:00
parent 922b477f77
commit d6aea7d9b4
4 changed files with 59 additions and 20 deletions

View file

@ -313,16 +313,17 @@ namespace MediaBrowser.Api.Playback.Hls
{ {
var segmentPath = GetSegmentPath(state, playlist, i); var segmentPath = GetSegmentPath(state, playlist, i);
double length; //double length;
if (SegmentLengths.TryGetValue(Path.GetFileName(segmentPath), out length)) //if (SegmentLengths.TryGetValue(Path.GetFileName(segmentPath), out length))
{ //{
Logger.Debug("Found segment length of {0} for index {1}", length, i); // Logger.Debug("Found segment length of {0} for index {1}", length, i);
startSeconds += length; // startSeconds += length;
} //}
else //else
{ //{
startSeconds += state.SegmentLength; // startSeconds += state.SegmentLength;
} //}
startSeconds += state.SegmentLength;
} }
var position = TimeSpan.FromSeconds(startSeconds).Ticks; var position = TimeSpan.FromSeconds(startSeconds).Ticks;
@ -441,7 +442,7 @@ namespace MediaBrowser.Api.Playback.Hls
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
// If all transcoding has completed, just return immediately // If all transcoding has completed, just return immediately
if (transcodingJob != null && transcodingJob.HasExited) if (transcodingJob != null && transcodingJob.HasExited && File.Exists(segmentPath))
{ {
return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
} }
@ -463,7 +464,11 @@ namespace MediaBrowser.Api.Playback.Hls
// If it appears in the playlist, it's done // If it appears in the playlist, it's done
if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
{ {
return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); if (File.Exists(segmentPath))
{
return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
}
break;
} }
} }
} }
@ -564,11 +569,11 @@ namespace MediaBrowser.Api.Playback.Hls
builder.AppendLine("#EXTM3U"); builder.AppendLine("#EXTM3U");
var isLiveStream = (state.RunTimeTicks ?? 0) == 0;
var queryStringIndex = Request.RawUrl.IndexOf('?'); var queryStringIndex = Request.RawUrl.IndexOf('?');
var queryString = queryStringIndex == -1 ? string.Empty : Request.RawUrl.Substring(queryStringIndex); var queryString = queryStringIndex == -1 ? string.Empty : Request.RawUrl.Substring(queryStringIndex);
var isLiveStream = (state.RunTimeTicks ?? 0) == 0;
// Main stream // Main stream
var playlistUrl = isLiveStream ? "live.m3u8" : "main.m3u8"; var playlistUrl = isLiveStream ? "live.m3u8" : "main.m3u8";
playlistUrl += queryString; playlistUrl += queryString;

View file

@ -1,5 +1,6 @@
using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Social; using MediaBrowser.Controller.Social;
@ -53,17 +54,26 @@ namespace MediaBrowser.Api.Social
public string Id { get; set; } public string Id { get; set; }
} }
[Route("/Social/Shares/Public/{Id}/Item", "GET", Summary = "Gets a share")]
public class GetSharedLibraryItem
{
[ApiMember(Name = "Id", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Id { get; set; }
}
public class SharingService : BaseApiService public class SharingService : BaseApiService
{ {
private readonly ISharingManager _sharingManager; private readonly ISharingManager _sharingManager;
private readonly ILibraryManager _libraryManager; private readonly ILibraryManager _libraryManager;
private readonly IDlnaManager _dlnaManager; private readonly IDlnaManager _dlnaManager;
private readonly IDtoService _dtoService;
public SharingService(ISharingManager sharingManager, IDlnaManager dlnaManager, ILibraryManager libraryManager) public SharingService(ISharingManager sharingManager, IDlnaManager dlnaManager, ILibraryManager libraryManager, IDtoService dtoService)
{ {
_sharingManager = sharingManager; _sharingManager = sharingManager;
_dlnaManager = dlnaManager; _dlnaManager = dlnaManager;
_libraryManager = libraryManager; _libraryManager = libraryManager;
_dtoService = dtoService;
} }
public object Get(GetSocialShareInfo request) public object Get(GetSocialShareInfo request)
@ -73,11 +83,27 @@ namespace MediaBrowser.Api.Social
return ToOptimizedResult(info); return ToOptimizedResult(info);
} }
public object Get(GetSharedLibraryItem request)
{
var info = _sharingManager.GetShareInfo(request.Id);
if (info.ExpirationDate <= DateTime.UtcNow)
{
throw new ResourceNotFoundException();
}
var item = _libraryManager.GetItemById(info.ItemId);
var dto = _dtoService.GetBaseItemDto(item, new DtoOptions());
return ToOptimizedResult(dto);
}
public object Get(GetPublicSocialShareInfo request) public object Get(GetPublicSocialShareInfo request)
{ {
var info = _sharingManager.GetShareInfo(request.Id); var info = _sharingManager.GetShareInfo(request.Id);
if (info.ExpirationDate >= DateTime.UtcNow) if (info.ExpirationDate <= DateTime.UtcNow)
{ {
throw new ResourceNotFoundException(); throw new ResourceNotFoundException();
} }
@ -106,7 +132,7 @@ namespace MediaBrowser.Api.Social
{ {
throw new ResourceNotFoundException(); throw new ResourceNotFoundException();
} }
if (share.ExpirationDate >= DateTime.UtcNow) if (share.ExpirationDate <= DateTime.UtcNow)
{ {
throw new ResourceNotFoundException(); throw new ResourceNotFoundException();
} }

View file

@ -170,7 +170,12 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security
/// <returns>Dictionary{System.StringSystem.String}.</returns> /// <returns>Dictionary{System.StringSystem.String}.</returns>
private Dictionary<string, string> GetAuthorizationDictionary(IServiceRequest httpReq) private Dictionary<string, string> GetAuthorizationDictionary(IServiceRequest httpReq)
{ {
var auth = httpReq.Headers["Authorization"]; var auth = httpReq.Headers["X-Emby-Authorization"];
if (string.IsNullOrWhiteSpace(auth))
{
auth = httpReq.Headers["Authorization"];
}
return GetAuthorization(auth); return GetAuthorization(auth);
} }

View file

@ -187,13 +187,16 @@
<Content Include="dashboard-ui\scripts\homeupcoming.js"> <Content Include="dashboard-ui\scripts\homeupcoming.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="dashboard-ui\scripts\shared.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\scripts\sharingmanager.js"> <Content Include="dashboard-ui\scripts\sharingmanager.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="dashboard-ui\scripts\sharingwidget.js"> <Content Include="dashboard-ui\scripts\sharingwidget.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="dashboard-ui\share.html"> <Content Include="dashboard-ui\shared.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="dashboard-ui\themes\android.css"> <Content Include="dashboard-ui\themes\android.css">