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 : IDisposable
{
///
/// Gets the response.
///
/// The options.
/// Task{HttpResponseInfo}.
Task GetResponse(HttpRequestOptions options);
///
/// Performs a GET request and returns the resulting stream
///
/// The URL.
/// The resource pool.
/// The cancellation token.
/// Task{Stream}.
///
Task Get(string url, SemaphoreSlim resourcePool, CancellationToken cancellationToken);
///
/// Gets the specified URL.
///
/// The URL.
/// The cancellation token.
/// Task{Stream}.
Task Get(string url, CancellationToken cancellationToken);
///
/// Gets the specified options.
///
/// The options.
/// Task{Stream}.
Task Get(HttpRequestOptions options);
///
/// Performs a POST request
///
/// The URL.
/// Params to add to the POST data.
/// The resource pool.
/// The cancellation token.
/// stream on success, null on failure
/// postData
///
Task Post(string url, Dictionary postData, SemaphoreSlim resourcePool, CancellationToken cancellationToken);
///
/// Posts the specified URL.
///
/// The URL.
/// The post data.
/// The cancellation token.
/// Task{Stream}.
Task Post(string url, Dictionary postData, CancellationToken cancellationToken);
///
/// Posts the specified options with post data
///
/// The options
/// The post data
/// Task{Stream}
Task Post(HttpRequestOptions options, Dictionary postData);
///
/// 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);
}
}