using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Common.Net { /// <summary> /// Interface IHttpClient /// </summary> public interface IHttpClient : IDisposable { /// <summary> /// Gets the response. /// </summary> /// <param name="options">The options.</param> /// <returns>Task{HttpResponseInfo}.</returns> Task<HttpResponseInfo> GetResponse(HttpRequestOptions options); /// <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> /// <exception cref="MediaBrowser.Model.Net.HttpException"></exception> Task<Stream> Get(string url, SemaphoreSlim 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> 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> /// Sends the asynchronous. /// </summary> /// <param name="options">The options.</param> /// <param name="httpMethod">The HTTP method.</param> /// <returns>Task{HttpResponseInfo}.</returns> Task<HttpResponseInfo> SendAsync(HttpRequestOptions options, string httpMethod); /// <summary> /// Performs a POST request /// </summary> /// <param name="url">The URL.</param> /// <param name="postData">Params to add to the POST data.</param> /// <param name="resourcePool">The resource pool.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>stream on success, null on failure</returns> /// <exception cref="System.ArgumentNullException">postData</exception> /// <exception cref="MediaBrowser.Model.Net.HttpException"></exception> Task<Stream> Post(string url, Dictionary<string, string> postData, SemaphoreSlim resourcePool, CancellationToken cancellationToken); /// <summary> /// Posts the specified URL. /// </summary> /// <param name="url">The URL.</param> /// <param name="postData">The post data.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{Stream}.</returns> Task<Stream> Post(string url, Dictionary<string, string> postData, CancellationToken cancellationToken); /// <summary> /// Posts the specified options with post data /// </summary> /// <param name="options">The options</param> /// <param name="postData">The post data</param> /// <returns>Task{Stream}</returns> Task<Stream> Post(HttpRequestOptions options, Dictionary<string, string> postData); /// <summary> /// Posts the specified options. /// </summary> /// <param name="options">The options.</param> /// <returns>Task{HttpResponseInfo}.</returns> Task<HttpResponseInfo> Post(HttpRequestOptions options); /// <summary> /// Downloads the contents of a given url into a temporary location /// </summary> /// <param name="options">The options.</param> /// <returns>Task{System.String}.</returns> /// <exception cref="System.ArgumentNullException">progress</exception> /// <exception cref="MediaBrowser.Model.Net.HttpException"></exception> Task<string> GetTempFile(HttpRequestOptions options); /// <summary> /// Gets the temporary file response. /// </summary> /// <param name="options">The options.</param> /// <returns>Task{HttpResponseInfo}.</returns> Task<HttpResponseInfo> GetTempFileResponse(HttpRequestOptions options); } }