package br.com.caelum.restfulie.http; import java.net.URI; import java.util.Map; import java.util.concurrent.Future; import br.com.caelum.restfulie.Response; import br.com.caelum.restfulie.feature.RequestFeature; import br.com.caelum.restfulie.feature.ResponseFeature; /** * An http request. Defaults verb to GET. * * @author guilherme silveira */ public interface Request { /** * Access the resource, returning the request result. * @return */ Response access(); /** * Adds a request header. */ Request with(String key, String value); /** * Sets the verb to use (default GET). */ Request using(String verb); Request as(String contentType); /** * Accepts one specific content type. */ Request accept(String type); Response get(); Future<Response> getAsync(RequestCallback requestCallback); <T> Response post(T object); <T> Future<Response> postAsync(T payload, RequestCallback requestCallback); <T> Response put(T object); <T> Future<Response> putAsync(T payload, RequestCallback requestCallback); <T> Response patch(T object); Response delete(); Future<Response> deleteAsync(RequestCallback requestCallback); Response options(); Response head(); Map<String, String> getHeaders(); Request addHeaders(Map<String, String> headers); /** * Shortcut for accepting and sending some media type. It has the same effect * as invoking as(type).accepts(type) */ Request handling(String type); URI getURI(); /** * Add feature to RequestStack */ Request with(RequestFeature feature); /** * Add feature to the ResponseStack */ Request with(ResponseFeature feature); }