update javascript connection manager to latest feature set

This commit is contained in:
Luke Pulverenti
2015-02-15 19:33:06 -05:00
parent 18ff8aba74
commit 8051ea9b1b
19 changed files with 221 additions and 58 deletions

View File

@@ -85,12 +85,12 @@ namespace MediaBrowser.Model.Dlna
}
}
public string ToUrl(string baseUrl)
public string ToUrl(string baseUrl, string accessToken)
{
return ToDlnaUrl(baseUrl);
return ToDlnaUrl(baseUrl, accessToken);
}
public string ToDlnaUrl(string baseUrl)
public string ToDlnaUrl(string baseUrl, string accessToken)
{
if (PlayMethod == PlayMethod.DirectPlay)
{
@@ -152,7 +152,47 @@ namespace MediaBrowser.Model.Dlna
return string.Format("Params={0}", string.Join(";", list.ToArray()));
}
public List<SubtitleStreamInfo> GetExternalSubtitles(string baseUrl, bool includeSelectedTrackOnly)
public List<SubtitleStreamInfo> GetExternalSubtitles(bool includeSelectedTrackOnly)
{
List<SubtitleStreamInfo> list = new List<SubtitleStreamInfo>();
// First add the selected track
if (SubtitleStreamIndex.HasValue)
{
foreach (MediaStream stream in MediaSource.MediaStreams)
{
if (stream.Type == MediaStreamType.Subtitle && stream.Index == SubtitleStreamIndex.Value)
{
SubtitleStreamInfo info = GetSubtitleStreamInfo(stream);
if (info != null)
{
list.Add(info);
}
}
}
}
if (!includeSelectedTrackOnly)
{
foreach (MediaStream stream in MediaSource.MediaStreams)
{
if (stream.Type == MediaStreamType.Subtitle && (!SubtitleStreamIndex.HasValue || stream.Index != SubtitleStreamIndex.Value))
{
SubtitleStreamInfo info = GetSubtitleStreamInfo(stream);
if (info != null)
{
list.Add(info);
}
}
}
}
return list;
}
public List<SubtitleStreamInfo> GetExternalSubtitles(string baseUrl, string accessToken, bool includeSelectedTrackOnly)
{
if (string.IsNullOrEmpty(baseUrl))
{
@@ -173,7 +213,12 @@ namespace MediaBrowser.Model.Dlna
{
if (stream.Type == MediaStreamType.Subtitle && stream.Index == SubtitleStreamIndex.Value)
{
AddSubtitle(list, stream, baseUrl, startPositionTicks);
SubtitleStreamInfo info = GetSubtitleStreamInfo(stream, baseUrl, accessToken, startPositionTicks);
if (info != null)
{
list.Add(info);
}
}
}
}
@@ -184,7 +229,12 @@ namespace MediaBrowser.Model.Dlna
{
if (stream.Type == MediaStreamType.Subtitle && (!SubtitleStreamIndex.HasValue || stream.Index != SubtitleStreamIndex.Value))
{
AddSubtitle(list, stream, baseUrl, startPositionTicks);
SubtitleStreamInfo info = GetSubtitleStreamInfo(stream, baseUrl, accessToken, startPositionTicks);
if (info != null)
{
list.Add(info);
}
}
}
}
@@ -192,32 +242,41 @@ namespace MediaBrowser.Model.Dlna
return list;
}
private void AddSubtitle(List<SubtitleStreamInfo> list, MediaStream stream, string baseUrl, long startPositionTicks)
private SubtitleStreamInfo GetSubtitleStreamInfo(MediaStream stream, string baseUrl, string accessToken, long startPositionTicks)
{
var subtitleProfile = StreamBuilder.GetSubtitleProfile(stream, DeviceProfile);
SubtitleStreamInfo info = GetSubtitleStreamInfo(stream);
if (info != null)
{
info.Url = string.Format("{0}/Videos/{1}/{2}/Subtitles/{3}/{4}/Stream.{5}",
baseUrl,
ItemId,
MediaSourceId,
StringHelper.ToStringCultureInvariant(stream.Index),
StringHelper.ToStringCultureInvariant(startPositionTicks),
SubtitleFormat);
}
return info;
}
private SubtitleStreamInfo GetSubtitleStreamInfo(MediaStream stream)
{
SubtitleProfile subtitleProfile = StreamBuilder.GetSubtitleProfile(stream, DeviceProfile);
if (subtitleProfile.Method != SubtitleDeliveryMethod.External)
{
return;
return null;
}
string url = string.Format("{0}/Videos/{1}/{2}/Subtitles/{3}/{4}/Stream.{5}",
baseUrl,
ItemId,
MediaSourceId,
StringHelper.ToStringCultureInvariant(stream.Index),
StringHelper.ToStringCultureInvariant(startPositionTicks),
SubtitleFormat);
list.Add(new SubtitleStreamInfo
return new SubtitleStreamInfo
{
Url = url,
IsForced = stream.IsForced,
Language = stream.Language,
Name = stream.Language ?? "Unknown",
Format = SubtitleFormat,
Index = stream.Index
});
};
}
/// <summary>