package com.koushikdutta.async.http;
import com.koushikdutta.async.AsyncSSLSocketWrapper;
import com.koushikdutta.async.AsyncSocket;
import com.koushikdutta.async.callback.ConnectCallback;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import java.net.URI;
public class AsyncSSLSocketMiddleware extends AsyncSocketMiddleware {
public AsyncSSLSocketMiddleware(AsyncHttpClient client) {
super(client, "https", 443);
}
SSLContext sslContext;
public void setSSLContext(SSLContext sslContext) {
this.sslContext = sslContext;
}
TrustManager[] trustManagers;
public void setTrustManagers(TrustManager[] trustManagers) {
this.trustManagers = trustManagers;
}
HostnameVerifier hostnameVerifier;
public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
this.hostnameVerifier = hostnameVerifier;
}
@Override
protected ConnectCallback wrapCallback(final ConnectCallback callback, final URI uri, final int port) {
return new ConnectCallback() {
@Override
public void onConnectCompleted(Exception ex, AsyncSocket socket) {
if (ex == null) {
callback.onConnectCompleted(ex, new AsyncSSLSocketWrapper(socket, uri.getHost(), port, sslContext, trustManagers, hostnameVerifier, true));
}
else {
callback.onConnectCompleted(ex, socket);
}
}
};
}
}