using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
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);
        /// 
        /// Sends the asynchronous.
        /// 
        /// The options.
        /// The HTTP method.
        /// Task{HttpResponseInfo}.
        Task SendAsync(HttpRequestOptions options, string httpMethod);
        /// 
        /// Posts the specified options.
        /// 
        /// The options.
        /// Task{HttpResponseInfo}.
        Task Post(HttpRequestOptions options);
        /// 
        /// Downloads the contents of a given url into a temporary location
        /// 
        /// The options.
        /// Task{System.String}.
        /// progress
        /// 
        Task GetTempFile(HttpRequestOptions options);
        /// 
        /// Gets the temporary file response.
        /// 
        /// The options.
        /// Task{HttpResponseInfo}.
        Task GetTempFileResponse(HttpRequestOptions options);
    }
}