package com.loopj.android.http;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import java.io.IOException;
import java.net.URI;
/**
* Interface to standardize implementations
*/
public interface ResponseHandlerInterface {
/**
* Returns data whether request completed successfully
*
* @param response HttpResponse object with data
* @throws java.io.IOException if retrieving data from response fails
*/
void sendResponseMessage(HttpResponse response) throws IOException;
/**
* Notifies callback, that request started execution
*/
void sendStartMessage();
/**
* Notifies callback, that request was completed and is being removed from thread pool
*/
void sendFinishMessage();
/**
* Notifies callback, that request (mainly uploading) has progressed
*
* @param bytesWritten number of written bytes
* @param bytesTotal number of total bytes to be written
*/
void sendProgressMessage(int bytesWritten, int bytesTotal);
/**
* Notifies callback, that request was cancelled
*/
void sendCancelMessage();
/**
* Notifies callback, that request was handled successfully
*
* @param statusCode HTTP status code
* @param headers returned headers
* @param responseBody returned data
*/
void sendSuccessMessage(int statusCode, Header[] headers, byte[] responseBody);
/**
* Returns if request was completed with error code or failure of implementation
*
* @param statusCode returned HTTP status code
* @param headers returned headers
* @param responseBody returned data
* @param error cause of request failure
*/
void sendFailureMessage(int statusCode, Header[] headers, byte[] responseBody, Throwable error);
/**
* Notifies callback of retrying request
*
* @param retryNo number of retry within one request
*/
void sendRetryMessage(int retryNo);
/**
* Returns URI which was used to request
*
* @return uri of origin request
*/
public URI getRequestURI();
/**
* Returns Header[] which were used to request
*
* @return headers from origin request
*/
public Header[] getRequestHeaders();
/**
* Helper for handlers to receive Request URI info
*
* @param requestURI claimed request URI
*/
public void setRequestURI(URI requestURI);
/**
* Helper for handlers to receive Request Header[] info
*
* @param requestHeaders Headers, claimed to be from original request
*/
public void setRequestHeaders(Header[] requestHeaders);
/**
* Can set, whether the handler should be asynchronous or synchronous
*
* @param useSynchronousMode whether data should be handled on background Thread on UI Thread
*/
void setUseSynchronousMode(boolean useSynchronousMode);
/**
* Can set, whether the handler should be asynchronous or synchronous
*
* @return boolean if the ResponseHandler is running in synchronous mode
*/
boolean getUseSynchronousMode();
}