![JAR search and dependency download from the Maven repository](/logo.png)
net.klakegg.pkix.ocsp.fetcher.ApacheOcspFetcher Maven / Gradle / Ivy
package net.klakegg.pkix.ocsp.fetcher;
import net.klakegg.pkix.ocsp.api.OcspFetcher;
import net.klakegg.pkix.ocsp.api.OcspFetcherResponse;
import net.klakegg.pkix.ocsp.builder.BuildHandler;
import net.klakegg.pkix.ocsp.builder.Builder;
import net.klakegg.pkix.ocsp.builder.Properties;
import net.klakegg.pkix.ocsp.builder.Property;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.HttpClientConnectionManager;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
/**
* @author erlend
*/
public class ApacheOcspFetcher extends AbstractOcspFetcher {
public static final Property CONNECTION_MANAGER = Property.create();
public static final Property CONNECTION_MANAGER_SHARED = Property.create(false);
public static final Property TIMEOUT_CONNECTION_MANAGER = Property.create(-1);
/**
* Builder to create an instance of OcspFetcher using Apache HttpClient for connectivity.
*
* @return Prepared fetcher.
*/
public static Builder builder() {
return new Builder<>(new BuildHandler() {
@Override
public OcspFetcher build(Properties properties) {
return new ApacheOcspFetcher(properties);
}
});
}
private ApacheOcspFetcher(Properties properties) {
super(properties);
}
@Override
public OcspFetcherResponse fetch(URI uri, byte[] content) throws IOException {
HttpPost httpPost = new HttpPost(uri);
httpPost.setHeader("Content-Type", "application/ocsp-request");
httpPost.setHeader("Accept", "application/ocsp-response");
httpPost.setEntity(new ByteArrayEntity(content));
httpPost.setConfig(getRequestConfig());
return new ApacheOcspFetcherResponse(getHttpClient().execute(httpPost));
}
protected CloseableHttpClient getHttpClient() {
return HttpClientBuilder.create()
.setConnectionManager(properties.get(CONNECTION_MANAGER))
.setConnectionManagerShared(properties.get(CONNECTION_MANAGER_SHARED))
.build();
}
protected RequestConfig getRequestConfig() {
return RequestConfig.custom()
.setConnectTimeout(properties.get(TIMEOUT_CONNECT))
.setSocketTimeout(properties.get(TIMEOUT_READ))
.setConnectionRequestTimeout(properties.get(TIMEOUT_CONNECTION_MANAGER))
.build();
}
private class ApacheOcspFetcherResponse implements OcspFetcherResponse {
private CloseableHttpResponse response;
public ApacheOcspFetcherResponse(CloseableHttpResponse response) {
this.response = response;
}
@Override
public int getStatus() {
return response.getStatusLine().getStatusCode();
}
@Override
public String getContentType() {
return response.getFirstHeader("Content-Type").getValue();
}
@Override
public InputStream getContent() throws IOException {
return response.getEntity().getContent();
}
@Override
public void close() throws IOException {
response.close();
response = null;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy