com.hubspot.horizon.ning.internal.NingCompletionHandler Maven / Gradle / Ivy
package com.hubspot.horizon.ning.internal;
import com.google.common.net.HttpHeaders;
import com.hubspot.horizon.HttpRequest;
import com.hubspot.horizon.HttpResponse;
import com.ning.http.client.AsyncCompletionHandler;
import com.ning.http.client.Response;
import java.io.IOException;
public class NingCompletionHandler extends AsyncCompletionHandler {
private final HttpRequest request;
private final NingFuture future;
private final NingRetryHandler retryHandler;
public NingCompletionHandler(HttpRequest request, NingFuture future, NingRetryHandler retryHandler) {
this.request = request;
this.future = future;
this.retryHandler = retryHandler;
}
@Override
public HttpResponse onCompleted(Response ningResponse) throws Exception {
HttpResponse response = new NingHttpResponse(request, ningResponse);
if ("snappy".equals(ningResponse.getHeader(HttpHeaders.CONTENT_ENCODING))) {
response = new SnappyHttpResponseWrapper(response);
}
if (retryHandler.shouldRetry(request, response)) {
retryHandler.retry();
} else {
future.setNonnull(response);
}
return response;
}
@Override
public void onThrowable(Throwable t) {
IOException e = t instanceof IOException ? (IOException) t : new IOException(t);
if (retryHandler.shouldRetry(request, e)) {
retryHandler.retry();
} else {
future.setException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy