package org.commcare.network; import org.apache.http.Header; import org.apache.http.HeaderIterator; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ProtocolVersion; import org.apache.http.StatusLine; import org.apache.http.message.BasicHeader; import org.apache.http.params.HttpParams; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Locale; import java.util.Map; /** * @author Phillip Mates (pmates@dimagi.com) */ public class HttpResponseMock { public static HttpResponse buildHttpResponseMock(final int statusCode, final InputStream entityStream) { return new HttpResponse() { private final Map<String,Header> headers = new HashMap<>(); private final StatusLine statusLine = new StatusLine() { @Override public ProtocolVersion getProtocolVersion() { return null; } @Override public int getStatusCode() { return statusCode; } @Override public String getReasonPhrase() { return null; } }; @Override public StatusLine getStatusLine() { return statusLine; } @Override public void setStatusLine(StatusLine statusLine) { throw new RuntimeException("not supported in mock"); } @Override public void setStatusLine(ProtocolVersion protocolVersion, int i) { throw new RuntimeException("not supported in mock"); } @Override public void setStatusLine(ProtocolVersion protocolVersion, int i, String s) { throw new RuntimeException("not supported in mock"); } @Override public void setStatusCode(int i) throws IllegalStateException { throw new RuntimeException("not supported in mock"); } @Override public void setReasonPhrase(String s) throws IllegalStateException { throw new RuntimeException("not supported in mock"); } @Override public HttpEntity getEntity() { return new HttpEntity() { @Override public boolean isRepeatable() { return false; } @Override public boolean isChunked() { return false; } @Override public long getContentLength() { return 0; } @Override public Header getContentType() { return null; } @Override public Header getContentEncoding() { return null; } @Override public InputStream getContent() throws IOException, IllegalStateException { return entityStream; } @Override public void writeTo(OutputStream outputStream) throws IOException { } @Override public boolean isStreaming() { return false; } @Override public void consumeContent() throws IOException { } }; } @Override public void setEntity(HttpEntity httpEntity) { throw new RuntimeException("not supported in mock"); } @Override public Locale getLocale() { throw new RuntimeException("not supported in mock"); } @Override public void setLocale(Locale locale) { throw new RuntimeException("not supported in mock"); } @Override public ProtocolVersion getProtocolVersion() { throw new RuntimeException("not supported in mock"); } @Override public boolean containsHeader(String s) { return false; } @Override public Header[] getHeaders(String s) { throw new RuntimeException("not supported in mock"); } @Override public Header getFirstHeader(String s) { return headers.get(s); } @Override public Header getLastHeader(String s) { throw new RuntimeException("not supported in mock"); } @Override public Header[] getAllHeaders() { throw new RuntimeException("not supported in mock"); } @Override public void addHeader(Header header) { throw new RuntimeException("not supported in mock"); } @Override public void addHeader(String s, String s1) { throw new RuntimeException("not supported in mock"); } @Override public void setHeader(Header header) { throw new RuntimeException("not supported in mock"); } @Override public void setHeader(String s, String s1) { headers.put(s, new BasicHeader(s, s1)); } @Override public void setHeaders(Header[] headers) { throw new RuntimeException("not supported in mock"); } @Override public void removeHeader(Header header) { throw new RuntimeException("not supported in mock"); } @Override public void removeHeaders(String s) { throw new RuntimeException("not supported in mock"); } @Override public HeaderIterator headerIterator() { throw new RuntimeException("not supported in mock"); } @Override public HeaderIterator headerIterator(String s) { throw new RuntimeException("not supported in mock"); } @Override public HttpParams getParams() { throw new RuntimeException("not supported in mock"); } @Override public void setParams(HttpParams httpParams) { throw new RuntimeException("not supported in mock"); } }; } public static HttpResponse buildHttpResponseMockForAsyncRestore() { HttpResponse response = buildHttpResponseMock(202, null); response.setHeader("Retry-After", "2"); return response; } }