package com.linkedin.parseq.httpclient;
import java.io.File;
import java.io.InputStream;
import java.net.InetAddress;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.linkedin.parseq.Task;
import com.linkedin.parseq.promise.Promises;
import com.linkedin.parseq.promise.SettablePromise;
import com.ning.http.client.AsyncHttpClient.BoundRequestBuilder;
import com.ning.http.client.AsyncCompletionHandler;
import com.ning.http.client.BodyGenerator;
import com.ning.http.client.ConnectionPoolPartitioning;
import com.ning.http.client.FluentCaseInsensitiveStringsMap;
import com.ning.http.client.Param;
import com.ning.http.client.ProxyServer;
import com.ning.http.client.Realm;
import com.ning.http.client.Request;
import com.ning.http.client.Response;
import com.ning.http.client.SignatureCalculator;
import com.ning.http.client.cookie.Cookie;
import com.ning.http.client.multipart.Part;
import com.ning.http.client.uri.Uri;
public class WrappedRequestBuilder {
private final BoundRequestBuilder _delegate;
private final String _method;
public WrappedRequestBuilder(BoundRequestBuilder delegate, String method) {
_delegate = delegate;
_method = method;
}
public int hashCode() {
return _delegate.hashCode();
}
public boolean equals(Object obj) {
return _delegate.equals(obj);
}
public String toString() {
return _delegate.toString();
}
public WrappedRequestBuilder setUri(Uri uri) {
_delegate.setUri(uri);
return this;
}
public WrappedRequestBuilder addBodyPart(Part part) {
_delegate.addBodyPart(part);
return this;
}
public WrappedRequestBuilder setInetAddress(InetAddress address) {
_delegate.setInetAddress(address);
return this;
}
public WrappedRequestBuilder setLocalInetAddress(InetAddress address) {
_delegate.setLocalInetAddress(address);
return this;
}
public WrappedRequestBuilder addCookie(Cookie cookie) {
_delegate.addCookie(cookie);
return this;
}
public WrappedRequestBuilder addHeader(String name, String value) {
_delegate.addHeader(name, value);
return this;
}
public WrappedRequestBuilder addFormParam(String key, String value) {
_delegate.addFormParam(key, value);
return this;
}
public WrappedRequestBuilder addQueryParam(String name, String value) {
_delegate.addQueryParam(name, value);
return this;
}
public Request build() {
return _delegate.build();
}
public WrappedRequestBuilder setBody(byte[] data) {
_delegate.setBody(data);
return this;
}
public WrappedRequestBuilder setBody(InputStream stream) {
_delegate.setBody(stream);
return this;
}
public WrappedRequestBuilder setContentLength(int length) {
_delegate.setContentLength(length);
return this;
}
public WrappedRequestBuilder setBody(String data) {
_delegate.setBody(data);
return this;
}
public WrappedRequestBuilder setHeader(String name, String value) {
_delegate.setHeader(name, value);
return this;
}
public WrappedRequestBuilder setCookies(Collection<Cookie> cookies) {
_delegate.setCookies(cookies);
return this;
}
public WrappedRequestBuilder setHeaders(FluentCaseInsensitiveStringsMap headers) {
_delegate.setHeaders(headers);
return this;
}
public WrappedRequestBuilder setHeaders(Map<String, Collection<String>> headers) {
_delegate.setHeaders(headers);
return this;
}
public WrappedRequestBuilder addOrReplaceCookie(Cookie cookie) {
_delegate.addOrReplaceCookie(cookie);
return this;
}
public WrappedRequestBuilder setFormParams(Map<String, List<String>> params) {
_delegate.setFormParams(params);
return this;
}
public WrappedRequestBuilder setFormParams(List<Param> params) {
_delegate.setFormParams(params);
return this;
}
public WrappedRequestBuilder setUrl(String url) {
_delegate.setUrl(url);
return this;
}
public WrappedRequestBuilder setVirtualHost(String virtualHost) {
_delegate.setVirtualHost(virtualHost);
return this;
}
public void resetCookies() {
_delegate.resetCookies();
}
public void resetQuery() {
_delegate.resetQuery();
}
public WrappedRequestBuilder setSignatureCalculator(SignatureCalculator signatureCalculator) {
_delegate.setSignatureCalculator(signatureCalculator);
return this;
}
public void resetFormParams() {
_delegate.resetFormParams();
}
public void resetNonMultipartData() {
_delegate.resetNonMultipartData();
}
public void resetMultipartData() {
_delegate.resetMultipartData();
}
public WrappedRequestBuilder setBody(File file) {
_delegate.setBody(file);
return this;
}
public WrappedRequestBuilder setBody(List<byte[]> data) {
_delegate.setBody(data);
return this;
}
public WrappedRequestBuilder setBody(BodyGenerator bodyGenerator) {
_delegate.setBody(bodyGenerator);
return this;
}
public WrappedRequestBuilder addQueryParams(List<Param> params) {
_delegate.addQueryParams(params);
return this;
}
public WrappedRequestBuilder setQueryParams(Map<String, List<String>> map) {
_delegate.setQueryParams(map);
return this;
}
public WrappedRequestBuilder setQueryParams(List<Param> params) {
_delegate.setQueryParams(params);
return this;
}
public WrappedRequestBuilder setProxyServer(ProxyServer proxyServer) {
_delegate.setProxyServer(proxyServer);
return this;
}
public WrappedRequestBuilder setRealm(Realm realm) {
_delegate.setRealm(realm);
return this;
}
public WrappedRequestBuilder setFollowRedirects(boolean followRedirects) {
_delegate.setFollowRedirects(followRedirects);
return this;
}
public WrappedRequestBuilder setRequestTimeout(int requestTimeout) {
_delegate.setRequestTimeout(requestTimeout);
return this;
}
public WrappedRequestBuilder setRangeOffset(long rangeOffset) {
_delegate.setRangeOffset(rangeOffset);
return this;
}
public WrappedRequestBuilder setMethod(String method) {
_delegate.setMethod(method);
return this;
}
public WrappedRequestBuilder setBodyEncoding(String charset) {
_delegate.setBodyEncoding(charset);
return this;
}
public WrappedRequestBuilder setConnectionPoolKeyStrategy(ConnectionPoolPartitioning connectionPoolKeyStrategy) {
_delegate.setConnectionPoolKeyStrategy(connectionPoolKeyStrategy);
return this;
}
public Task<Response> task(final String desc) {
return Task.async(desc, () -> {
final SettablePromise<Response> result = Promises.settable();
_delegate.execute(new AsyncCompletionHandler<Response>() {
@Override
public Response onCompleted(final Response response) throws Exception {
result.done(response);
return response;
}
@Override
public void onThrowable(Throwable t) {
result.fail(t);
}
});
return result;
});
}
public Task<Response> task() {
return task(_method);
}
}