com.outbrain.ob1k.http.ning.NingResponse Maven / Gradle / Ivy
The newest version!
package com.outbrain.ob1k.http.ning;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.ning.http.client.Response;
import com.outbrain.ob1k.http.TypedResponse;
import com.outbrain.ob1k.http.common.Cookie;
import com.outbrain.ob1k.http.marshalling.MarshallingStrategy;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Type;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.ByteBuffer;
import java.util.List;
import java.util.Map;
/**
* @author marenzon
*/
public class NingResponse implements TypedResponse {
private final MarshallingStrategy marshallingStrategy;
private final Type type;
private final Response ningResponse;
private volatile T typedBody;
public NingResponse(final Response ningResponse, final Type type, final MarshallingStrategy marshallingStrategy) throws IOException {
checkNotNull(ningResponse, "ningResponse may not be null");
this.ningResponse = ningResponse;
this.marshallingStrategy = marshallingStrategy;
this.type = type;
}
@Override
public int getStatusCode() {
return ningResponse.getStatusCode();
}
@Override
public String getStatusText() {
return ningResponse.getStatusText();
}
@Override
public URI getUri() throws URISyntaxException {
return ningResponse.getUri().toJavaNetURI();
}
@Override
public String getUrl() {
return ningResponse.getUri().toUrl();
}
@Override
public String getContentType() {
return ningResponse.getContentType();
}
@Override
public T getTypedBody() throws IOException {
if (typedBody == null) {
checkNotNull(marshallingStrategy, "unmarshallingStrategy may not be null");
checkNotNull(type, "class type may not be null");
typedBody = marshallingStrategy.unmarshall(type, this);
}
return typedBody;
}
@Override
public String getResponseBody() throws IOException {
return ningResponse.getResponseBody();
}
@Override
public byte[] getResponseBodyAsBytes() throws IOException {
return ningResponse.getResponseBodyAsBytes();
}
@Override
public InputStream getResponseBodyAsStream() throws IOException {
return ningResponse.getResponseBodyAsStream();
}
@Override
public ByteBuffer getResponseBodyAsByteBuffer() throws IOException {
return ningResponse.getResponseBodyAsByteBuffer();
}
@Override
public List getCookies() {
return transformNingResponseCookies(ningResponse.getCookies());
}
@Override
public String getHeader(final String name) {
return ningResponse.getHeader(name);
}
@Override
public List getHeaders(final String name) {
return ningResponse.getHeaders(name);
}
@Override
public Map> getHeaders() {
return ningResponse.getHeaders();
}
@Override
public boolean isRedirected() {
return ningResponse.isRedirected();
}
@Override
public boolean hasResponseBody() {
return ningResponse.hasResponseBody();
}
@Override
public boolean hasResponseStatus() {
return ningResponse.hasResponseStatus();
}
@Override
public boolean hasResponseHeaders() {
return ningResponse.hasResponseHeaders();
}
private List transformNingResponseCookies(final List cookies) {
final Function transformer = new Function() {
@Override
public Cookie apply(final com.ning.http.client.cookie.Cookie ningCookie) {
return new Cookie(ningCookie.getName(), ningCookie.getValue(), ningCookie.getDomain(),
ningCookie.getPath(), ningCookie.getMaxAge(),
ningCookie.isSecure(), ningCookie.isHttpOnly());
}
};
return Lists.transform(cookies, transformer);
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy