module mars.HttpClient;

import std.stdio;

import mars.HttpClientOptions;
import mars.HttpRequest;
import mars.HttpResponse;
import mars.HttpResponseHandler;

interface HttpClient {

	static HttpClient init(HttpClientOptions options);

	void post(HttpRequest request, HttpResponseHandler responseHandler);

	HttpResponse post(HttpRequest request);

	void get(HttpRequest request, HttpResponseHandler responseHandler);

	HttpResponse get(HttpRequest request);

	void put(HttpRequest request, HttpResponseHandler responseHandler);

	HttpResponse put(HttpRequest request);

	void del(HttpRequest request, HttpResponseHandler responseHandler);

	HttpResponse del(HttpRequest request);

	void patch(HttpRequest request, HttpResponseHandler responseHandler);

	HttpResponse patch(HttpRequest request);

    void upload(HttpRequest request, File file, HttpResponseHandler responseHandler);

    HttpResponse upload(HttpRequest request, File file);
}