mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	add customizable accept header to http client interface
This commit is contained in:
		
							parent
							
								
									163a1bdbcb
								
							
						
					
					
						commit
						87598ca6d0
					
				@ -107,14 +107,13 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs a GET request and returns the resulting stream
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="url">The URL.</param>
 | 
			
		||||
        /// <param name="resourcePool">The resource pool.</param>
 | 
			
		||||
        /// <param name="cancellationToken">The cancellation token.</param>
 | 
			
		||||
        /// <param name="options">The options.</param>
 | 
			
		||||
        /// <returns>Task{Stream}.</returns>
 | 
			
		||||
        /// <exception cref="HttpException"></exception>
 | 
			
		||||
        /// <exception cref="MediaBrowser.Model.Net.HttpException"></exception>
 | 
			
		||||
        public async Task<Stream> Get(string url, SemaphoreSlim resourcePool, CancellationToken cancellationToken)
 | 
			
		||||
        public async Task<Stream> Get(HttpRequestOptions options)
 | 
			
		||||
        {
 | 
			
		||||
            ValidateParams(url, cancellationToken);
 | 
			
		||||
            ValidateParams(options.Url, options.CancellationToken);
 | 
			
		||||
 | 
			
		||||
            //var urlHash = url.GetMD5().ToString();
 | 
			
		||||
            //var infoPath = _cacheRepository.GetResourcePath(urlHash + ".js");
 | 
			
		||||
@ -136,9 +135,9 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
            //    return GetCachedResponse(responsePath);
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            cancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
            options.CancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
 | 
			
		||||
            var message = new HttpRequestMessage(HttpMethod.Get, url);
 | 
			
		||||
            var message = GetHttpRequestMessage(options);
 | 
			
		||||
 | 
			
		||||
            //if (cachedInfo != null)
 | 
			
		||||
            //{
 | 
			
		||||
@ -152,22 +151,22 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
            //    }
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            if (resourcePool != null)
 | 
			
		||||
            if (options.ResourcePool != null)
 | 
			
		||||
            {
 | 
			
		||||
                await resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);
 | 
			
		||||
                await options.ResourcePool.WaitAsync(options.CancellationToken).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            _logger.Info("HttpClientManager.Get url: {0}", url);
 | 
			
		||||
            _logger.Info("HttpClientManager.Get url: {0}", options.Url);
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                cancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
                options.CancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
 | 
			
		||||
                var response = await GetHttpClient(GetHostFromUrl(url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
 | 
			
		||||
                var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                EnsureSuccessStatusCode(response);
 | 
			
		||||
 | 
			
		||||
                cancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
                options.CancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
 | 
			
		||||
                //cachedInfo = UpdateInfoCache(cachedInfo, url, infoPath, response);
 | 
			
		||||
 | 
			
		||||
@ -187,29 +186,58 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
            }
 | 
			
		||||
            catch (OperationCanceledException ex)
 | 
			
		||||
            {
 | 
			
		||||
                throw GetCancellationException(url, cancellationToken, ex);
 | 
			
		||||
                throw GetCancellationException(options.Url, options.CancellationToken, ex);
 | 
			
		||||
            }
 | 
			
		||||
            catch (HttpRequestException ex)
 | 
			
		||||
            {
 | 
			
		||||
                _logger.ErrorException("Error getting response from " + url, ex);
 | 
			
		||||
                _logger.ErrorException("Error getting response from " + options.Url, ex);
 | 
			
		||||
 | 
			
		||||
                throw new HttpException(ex.Message, ex);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                _logger.ErrorException("Error getting response from " + url, ex);
 | 
			
		||||
                _logger.ErrorException("Error getting response from " + options.Url, ex);
 | 
			
		||||
 | 
			
		||||
                throw;
 | 
			
		||||
            }
 | 
			
		||||
            finally
 | 
			
		||||
            {
 | 
			
		||||
                if (resourcePool != null)
 | 
			
		||||
                if (options.ResourcePool != null)
 | 
			
		||||
                {
 | 
			
		||||
                    resourcePool.Release();
 | 
			
		||||
                    options.ResourcePool.Release();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs a GET request and returns the resulting stream
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="url">The URL.</param>
 | 
			
		||||
        /// <param name="resourcePool">The resource pool.</param>
 | 
			
		||||
        /// <param name="cancellationToken">The cancellation token.</param>
 | 
			
		||||
        /// <returns>Task{Stream}.</returns>
 | 
			
		||||
        public Task<Stream> Get(string url, SemaphoreSlim resourcePool, CancellationToken cancellationToken)
 | 
			
		||||
        {
 | 
			
		||||
            return Get(new HttpRequestOptions
 | 
			
		||||
            {
 | 
			
		||||
                Url = url,
 | 
			
		||||
                ResourcePool = resourcePool,
 | 
			
		||||
                CancellationToken = cancellationToken,
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the specified URL.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="url">The URL.</param>
 | 
			
		||||
        /// <param name="cancellationToken">The cancellation token.</param>
 | 
			
		||||
        /// <returns>Task{Stream}.</returns>
 | 
			
		||||
        public Task<Stream> Get(string url, CancellationToken cancellationToken)
 | 
			
		||||
        {
 | 
			
		||||
            return Get(url, null, cancellationToken);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the cached response.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
@ -393,13 +421,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
 | 
			
		||||
            options.CancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
 | 
			
		||||
            var message = new HttpRequestMessage(HttpMethod.Get, options.Url);
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrEmpty(options.UserAgent))
 | 
			
		||||
            {
 | 
			
		||||
                message.Headers.Add("User-Agent", options.UserAgent);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (options.ResourcePool != null)
 | 
			
		||||
            {
 | 
			
		||||
                await options.ResourcePool.WaitAsync(options.CancellationToken).ConfigureAwait(false);
 | 
			
		||||
@ -413,7 +434,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
            {
 | 
			
		||||
                options.CancellationToken.ThrowIfCancellationRequested();
 | 
			
		||||
 | 
			
		||||
                using (var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false))
 | 
			
		||||
                using (var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(GetHttpRequestMessage(options), HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false))
 | 
			
		||||
                {
 | 
			
		||||
                    EnsureSuccessStatusCode(response);
 | 
			
		||||
 | 
			
		||||
@ -463,6 +484,28 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
            return tempFile;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the message.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="options">The options.</param>
 | 
			
		||||
        /// <returns>HttpResponseMessage.</returns>
 | 
			
		||||
        private HttpRequestMessage GetHttpRequestMessage(HttpRequestOptions options)
 | 
			
		||||
        {
 | 
			
		||||
            var message = new HttpRequestMessage(HttpMethod.Get, options.Url);
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrEmpty(options.UserAgent))
 | 
			
		||||
            {
 | 
			
		||||
                message.Headers.Add("User-Agent", options.UserAgent);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrEmpty(options.AcceptHeader))
 | 
			
		||||
            {
 | 
			
		||||
                message.Headers.Add("Accept", options.AcceptHeader);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return message;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the length of the content.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
@ -616,17 +659,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the specified URL.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="url">The URL.</param>
 | 
			
		||||
        /// <param name="cancellationToken">The cancellation token.</param>
 | 
			
		||||
        /// <returns>Task{Stream}.</returns>
 | 
			
		||||
        public Task<Stream> Get(string url, CancellationToken cancellationToken)
 | 
			
		||||
        {
 | 
			
		||||
            return Get(url, null, cancellationToken);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Posts the specified URL.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,12 @@ namespace MediaBrowser.Common.Net
 | 
			
		||||
        /// <value>The URL.</value>
 | 
			
		||||
        public string Url { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets or sets the accept header.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <value>The accept header.</value>
 | 
			
		||||
        public string AcceptHeader { get; set; }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets or sets the cancellation token.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,13 @@ namespace MediaBrowser.Common.Net
 | 
			
		||||
        /// <returns>Task{Stream}.</returns>
 | 
			
		||||
        Task<Stream> Get(string url, CancellationToken cancellationToken);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the specified options.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="options">The options.</param>
 | 
			
		||||
        /// <returns>Task{Stream}.</returns>
 | 
			
		||||
        Task<Stream> Get(HttpRequestOptions options);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs a POST request
 | 
			
		||||
        /// </summary>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user