package com.cloudesire.tisana4j;
import com.cloudesire.tisana4j.exceptions.RestException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.InputStream;
import java.net.URL;
import java.util.List;
import java.util.Map;
public interface RestClientInterface
{
/**
* @return The response headers of the last executed request
*/
Map<String, List<String>> getLastResponseHeaders();
void delete( URL url ) throws RestException;
void delete( URL url, Map<String, String> newHeaders ) throws RestException;
<T> T get( URL url, Class<T> clazz ) throws RestException;
<T> T get( URL url, TypeReference<T> typeReference ) throws RestException;
<T> T get( URL url, Class<T> clazz, Map<String, String> newHeaders ) throws RestException;
<T> T get( URL url, TypeReference<T> typeReference, Map<String, String> newHeaders )
throws RestException;
InputStream getData( URL url, Map<String, String> newHeaders ) throws RestException;
InputStream get( URL url ) throws RestException;
InputStream get( URL url, Map<String, String> headers ) throws RestException;
<T> List<T> getCollection( URL url, Class<T> clazz ) throws RestException;
<T> List<T> getCollection( URL url, Class<T> clazz, Map<String, String> newHeaders )
throws RestException;
Map<String, String> head( URL url ) throws RestException;
Map<String, String> head( URL url, Map<String, String> newHeaders ) throws RestException;
String[] options( URL url ) throws RestException;
String[] options( URL url, Map<String, String> newHeaders ) throws RestException;
void patch( URL url, Object object ) throws RestException;
void patch( URL url, Object object, Map<String, String> newHeaders ) throws RestException;
@Deprecated
void patchO( URL url, Map<String, Object> paramMap ) throws RestException;
@Deprecated
void patchO( URL url, Map<String, Object> paramMap, Map<String, String> newHeaders )
throws RestException;
<T> T patchEntity( URL url, Map<String, String> paramMap, Class<T> clazz )
throws RestException;
<T> T patchEntityO( URL url, Map<String, Object> paramMap, Class<T> clazz )
throws RestException;
<T> T patchEntity( URL url, Map<String, String> paramMap, Class<T> clazz, Map<String, String> newHeaders )
throws RestException;
<T> T patchEntityO( URL url, Map<String, Object> paramMap, Class<T> clazz, Map<String, String> newHeaders )
throws RestException;
<T> T post( URL url, T obj ) throws RestException;
<T> T post( URL url, T obj, Map<String, String> newHeaders ) throws RestException;
<T, R> R post( URL url, T obj, Map<String, String> newHeaders, Class<R> responseClass )
throws RestException;
<T> T postData( URL url, String filename, InputStream content, Class<T> responseClass )
throws RestException;
<T> T postData( URL url, String filename, InputStream content, Class<T> responseClass,
Map<String, String> newHeaders ) throws RestException;
<T> T postFormData( URL url, List<Pair> keyValueList, Class<T> responseClass )
throws RestException;
<T> T put( URL url, T obj ) throws RestException;
<T> T put( URL url, T obj, Map<String, String> newHeaders ) throws RestException;
<T, R> R put( URL url, T obj, Map<String, String> newHeaders, Class<R> responseClass )
throws RestException;
/**
* Set an exception translator for server errors
*
* @param exceptionTranslator the custom handler for errors
*/
void setExceptionTranslator( ExceptionTranslator exceptionTranslator );
Map<String, String> getHeaders();
void setHeaders( Map<String, String> headers );
/**
* @param useXml if true client uses xml instead of json.
*/
void setUseXml( boolean useXml );
void toggleAuthentication();
String getUsername();
void setHttpContentCompressionOverride( boolean disableContentCompression );
void setObjectMapperFailOnUknownField( boolean flag );
void setProxyHostname( String proxyHostname );
void setProxyPort( int proxyPort );
void setProxyScheme( String proxyScheme );
void setHttpClientMaxConnectionsPerRoute( int httpClientMaxConnPerRoute );
void setHttpClientMaxConnTotal( int httpClientMaxConnTotal );
ObjectMapper getObjectMapper();
void setObjectMapper( ObjectMapper mapper );
}