예제 #1
0
        public static string GetPreferredAudioLanguage(this IPlayableContent playableContent, string defaultAudioLanguage)
        {
            if (playableContent.ContentType != ContentType.Channel || playableContent.Name is ChannelNames.Wif or ChannelNames.Tracker or ChannelNames.Data or ChannelNames.PitLane)
            {
                return(!string.IsNullOrWhiteSpace(defaultAudioLanguage) ? defaultAudioLanguage : LanguageCodes.English);
            }

            return(LanguageCodes.Onboard);
        }
예제 #2
0
        public async Task <string> GetTokenisedUrlAsync(string token, IPlayableContent playableContent)
        {
            _logger.Info($"Getting tokenised URL for content-type '{playableContent.ContentType}' and content-URL '{playableContent.ContentUrl}' using token '{token}'...");

            return(playableContent.ContentType switch
            {
                ContentType.Channel => (await _client.GetTokenisedUrlForChannelAsync(token, playableContent.ContentUrl)).Url,
                ContentType.Asset => (await _client.GetTokenisedUrlForAssetAsync(token, playableContent.ContentUrl)).Objects.First().TokenisedUrl.Url,
                ContentType.Backup => (await _client.GetBackupStream()).StreamManifest,
                _ => throw new ArgumentException($"Could not generate tokenised URL for unsupported content-type '{playableContent.ContentType}'.", nameof(playableContent))
            });
예제 #3
0
        public static IEnumerable <string> GetAudioLanguages(this IPlayableContent playableContent, string defaultAudioLanguage)
        {
            var languageCode  = playableContent.GetPreferredAudioLanguage(defaultAudioLanguage);
            var languageCodes = new List <string> {
                languageCode
            };
            var languageCodeShort = LanguageCodes.GetTwoLetterCode(languageCode);

            if (!string.IsNullOrWhiteSpace(languageCodeShort))
            {
                languageCodes.Add(languageCodeShort);
            }

            if (languageCode != LanguageCodes.English)
            {
                languageCodes.Add(LanguageCodes.English);
                languageCodes.Add(LanguageCodes.GetTwoLetterCode(LanguageCodes.English));
            }

            return(languageCodes);
        }
예제 #4
0
        public async Task <string> GetTokenisedUrlAsync(string subscriptionToken, string streamType, IPlayableContent playableContent)
        {
            _logger.Info($"Getting tokenised URL for content-type '{playableContent.ContentType}' and content-URL '{playableContent.ContentUrl}'...");

            return(playableContent.ContentType == ContentType.Backup ? (await GetBackupStream()).StreamManifest : (await QueryTokenisedUrlAsync(subscriptionToken, streamType, playableContent.ContentUrl)).ResultObj.Url);
        }