MockClassicHttpResponse.java
package com.google.api.client.http.apache.v5;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
import org.apache.hc.core5.http.ClassicHttpResponse;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpEntity;
import org.apache.hc.core5.http.HttpVersion;
import org.apache.hc.core5.http.ProtocolException;
import org.apache.hc.core5.http.ProtocolVersion;
public class MockClassicHttpResponse implements ClassicHttpResponse {
List<Header> headers = new ArrayList<>();
int code = 200;
@Override
public int getCode() {
return code;
}
@Override
public void setCode(int code) {
this.code = code;
}
@Override
public String getReasonPhrase() {
return null;
}
@Override
public void setReasonPhrase(String reason) {}
@Override
public Locale getLocale() {
return null;
}
@Override
public void setLocale(Locale loc) {}
@Override
public void setVersion(ProtocolVersion version) {}
@Override
public ProtocolVersion getVersion() {
return HttpVersion.HTTP_1_1;
}
@Override
public void addHeader(Header header) {
headers.add(header);
}
@Override
public void addHeader(String name, Object value) {
addHeader(newHeader(name, value));
}
private Header newHeader(String key, Object value) {
return new Header() {
@Override
public boolean isSensitive() {
return false;
}
@Override
public String getName() {
return key;
}
@Override
public String getValue() {
return value.toString();
}
};
}
@Override
public void setHeader(Header header) {
if (headers.contains(header)) {
int index = headers.indexOf(header);
headers.set(index, header);
} else {
addHeader(header);
}
}
@Override
public void setHeader(String name, Object value) {
setHeader(newHeader(name, value));
}
@Override
public void setHeaders(Header... headers) {
for (Header header : headers) {
setHeader(header);
}
}
@Override
public boolean removeHeader(Header header) {
if (headers.contains(header)) {
headers.remove(headers.indexOf(header));
return true;
}
return false;
}
@Override
public boolean removeHeaders(String name) {
int initialSize = headers.size();
for (Header header :
headers.stream().filter(h -> h.getName() == name).collect(Collectors.toList())) {
removeHeader(header);
}
return headers.size() < initialSize;
}
@Override
public boolean containsHeader(String name) {
return headers.stream().anyMatch(h -> h.getName() == name);
}
@Override
public int countHeaders(String name) {
return headers.size();
}
@Override
public Header getFirstHeader(String name) {
return headers.stream().findFirst().orElse(null);
}
@Override
public Header getHeader(String name) throws ProtocolException {
return headers.stream().filter(h -> h.getName() == name).findFirst().orElse(null);
}
@Override
public Header[] getHeaders() {
return headers.toArray(new Header[0]);
}
@Override
public Header[] getHeaders(String name) {
return headers.stream()
.filter(h -> h.getName() == name)
.collect(Collectors.toList())
.toArray(new Header[0]);
}
@Override
public Header getLastHeader(String name) {
return headers.isEmpty() ? null : headers.get(headers.size() - 1);
}
@Override
public Iterator<Header> headerIterator() {
return headers.iterator();
}
@Override
public Iterator<Header> headerIterator(String name) {
return headers.stream().filter(h -> h.getName() == name).iterator();
}
@Override
public void close() throws IOException {}
@Override
public HttpEntity getEntity() {
return null;
}
@Override
public void setEntity(HttpEntity entity) {}
}