All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.github.scribejava.httpclient.ahc.AhcHttpClient Maven / Gradle / Ivy
package com.github.scribejava.httpclient.ahc;
import com.github.scribejava.core.httpclient.AbstractAsyncOnlyHttpClient;
import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.Verb;
import org.asynchttpclient.AsyncHttpClient;
import org.asynchttpclient.DefaultAsyncHttpClient;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.Future;
import java.io.File;
import java.util.function.Consumer;
import org.asynchttpclient.AsyncHttpClientConfig;
import org.asynchttpclient.BoundRequestBuilder;
public class AhcHttpClient extends AbstractAsyncOnlyHttpClient {
private final AsyncHttpClient client;
public AhcHttpClient() {
this(AhcHttpClientConfig.defaultConfig());
}
public AhcHttpClient(AhcHttpClientConfig ahcConfig) {
final AsyncHttpClientConfig clientConfig = ahcConfig.getClientConfig();
client = clientConfig == null ? new DefaultAsyncHttpClient() : new DefaultAsyncHttpClient(clientConfig);
}
public AhcHttpClient(AsyncHttpClient ahcClient) {
client = ahcClient;
}
@Override
public void close() throws IOException {
client.close();
}
@Override
public Future executeAsync(String userAgent, Map headers, Verb httpVerb, String completeUrl,
byte[] bodyContents, OAuthAsyncRequestCallback callback, OAuthRequest.ResponseConverter converter) {
return doExecuteAsync(userAgent, headers, httpVerb, completeUrl,
requestBuilder -> requestBuilder.setBody(bodyContents), callback, converter);
}
@Override
public Future executeAsync(String userAgent, Map headers, Verb httpVerb, String completeUrl,
String bodyContents, OAuthAsyncRequestCallback callback, OAuthRequest.ResponseConverter converter) {
return doExecuteAsync(userAgent, headers, httpVerb, completeUrl,
requestBuilder -> requestBuilder.setBody(bodyContents), callback, converter);
}
@Override
public Future executeAsync(String userAgent, Map headers, Verb httpVerb, String completeUrl,
File bodyContents, OAuthAsyncRequestCallback callback, OAuthRequest.ResponseConverter converter) {
return doExecuteAsync(userAgent, headers, httpVerb, completeUrl,
requestBuilder -> requestBuilder.setBody(bodyContents), callback, converter);
}
private Future doExecuteAsync(String userAgent, Map headers, Verb httpVerb,
String completeUrl, Consumer bodySetter, OAuthAsyncRequestCallback callback,
OAuthRequest.ResponseConverter converter) {
final BoundRequestBuilder boundRequestBuilder;
switch (httpVerb) {
case GET:
boundRequestBuilder = client.prepareGet(completeUrl);
break;
case POST:
boundRequestBuilder = client.preparePost(completeUrl);
break;
case PUT:
boundRequestBuilder = client.preparePut(completeUrl);
break;
case DELETE:
boundRequestBuilder = client.prepareDelete(completeUrl);
break;
default:
throw new IllegalArgumentException("message build error: unknown verb type");
}
if (httpVerb.isPermitBody()) {
if (!headers.containsKey(CONTENT_TYPE)) {
boundRequestBuilder.addHeader(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
}
bodySetter.accept(boundRequestBuilder);
}
headers.forEach((headerKey, headerValue) -> boundRequestBuilder.addHeader(headerKey, headerValue));
if (userAgent != null) {
boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
}
return boundRequestBuilder.execute(new OAuthAsyncCompletionHandler<>(callback, converter));
}
}