private PixAPI getPixAPI() {
PixAPI pixAPI = Feign.builder()
.decoder(new GsonDecoder())
.logLevel(feign.Logger.Level.FULL)
.logger(new MyLogger())
.client(new Client.Default(getSSLSocketFactory(), null))
.target(PixAPI.class, pixRestUrl);
return pixAPI;
}
SSLSocketFactory getSSLSocketFactory() {
try {
URL keyMaterialUrl;
File file = ResourceUtils.getFile(pixRestCertPemPath);
if (!file.exists()) {
log.error("File not found: " + pixRestCertPemPath);
URL resource = Thread.currentThread().getContextClassLoader().getResource(pixRestCertPemPath);
if (resource != null) {
log.info("Resource found : " + resource);
keyMaterialUrl = resource;
} else {
throw new RuntimeException("Resource not found : " + pixRestCertPemPath);
}
} else {
keyMaterialUrl = file.toURI().toURL();
}
SSLContext sslContext = SSLContextBuilder
.create()
.setKeyStoreType("PKCS12")
.loadKeyMaterial(keyMaterialUrl, null, null)
.build();
return sslContext.getSocketFactory();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Could not configure SSLSocketFactory", e);
}
}