using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
namespace MediaBrowser.Common.Net
{
    /// 
    /// Interface IHttpClient.
    /// 
    public interface IHttpClient
    {
        /// 
        /// Gets the response.
        /// 
        /// The options.
        /// Task{HttpResponseInfo}.
        Task GetResponse(HttpRequestOptions options);
        /// 
        /// Gets the specified options.
        /// 
        /// The options.
        /// Task{Stream}.
        Task Get(HttpRequestOptions options);
        /// 
        /// Warning: Deprecated function,
        /// use 'Task{HttpResponseInfo} SendAsync(HttpRequestOptions options, HttpMethod httpMethod);' instead
        /// Sends the asynchronous.
        /// 
        /// The options.
        /// The HTTP method.
        /// Task{HttpResponseInfo}.
        [Obsolete("Use 'Task{HttpResponseInfo} SendAsync(HttpRequestOptions options, HttpMethod httpMethod);' instead")]
        Task SendAsync(HttpRequestOptions options, string httpMethod);
        /// 
        /// Sends the asynchronous.
        /// 
        /// The options.
        /// The HTTP method.
        /// Task{HttpResponseInfo}.
        Task SendAsync(HttpRequestOptions options, HttpMethod httpMethod);
        /// 
        /// Posts the specified options.
        /// 
        /// The options.
        /// Task{HttpResponseInfo}.
        Task Post(HttpRequestOptions options);
    }
}