Skip to content

Commit

Permalink
fix(httpClient): allow path in endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolasGeraud authored and brasseld committed Dec 18, 2019
1 parent 1a1da13 commit f23b5d0
Showing 1 changed file with 32 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@

/**
* @author David BRASSELY (david.brassely at graviteesource.com)
* @author Nicolas GERAUD (nicolas.geraud at graviteesource.com)
* @author GraviteeSource Team
*/
public class HttpClient implements Client {
Expand All @@ -63,13 +64,13 @@ public class HttpClient implements Client {
private static final String HTTPS_SCHEME = "https";
private static final String CONTENT_TYPE = MediaType.APPLICATION_JSON + ";charset=UTF-8";

private static final String URL_ROOT = "/";
private static final String URL_STATE_CLUSTER = "/_cluster/health";
private static final String URL_BULK = "/_bulk";
private static final String URL_TEMPLATE = "/_template";
private static final String URL_INGEST = "/_ingest/pipeline";
private static final String URL_SEARCH = "/_search?ignore_unavailable=true";
private static final String URL_COUNT = "/_count?ignore_unavailable=true";
private static String URL_ROOT;
private static String URL_STATE_CLUSTER;
private static String URL_BULK;
private static String URL_TEMPLATE;
private static String URL_INGEST;
private static String URL_SEARCH;
private static String URL_COUNT;

@Autowired
private Vertx vertx;
Expand Down Expand Up @@ -104,6 +105,7 @@ public void initialize() {
if (! configuration.getEndpoints().isEmpty()) {
final Endpoint endpoint = configuration.getEndpoints().get(0);
final URI elasticEdpt = URI.create(endpoint.getUrl());
initializePaths(elasticEdpt);

WebClientOptions options = new WebClientOptions()
.setDefaultHost(elasticEdpt.getHost())
Expand All @@ -128,25 +130,35 @@ public void initialize() {
this.configuration.getPassword());
}

((WebClientInternal) this.httpClient.getDelegate()).addInterceptor(new Handler<HttpContext<?>>() {
@Override
public void handle(HttpContext context) {
context.request()
.timeout(configuration.getRequestTimeout())
.putHeader(HttpHeaders.ACCEPT, CONTENT_TYPE)
.putHeader(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.name());

// Basic authentication
if (authorizationHeader != null) {
context.request().putHeader(HttpHeaders.AUTHORIZATION, authorizationHeader);
}
((WebClientInternal) this.httpClient.getDelegate()).addInterceptor(context -> {
context.request()
.timeout(configuration.getRequestTimeout())
.putHeader(HttpHeaders.ACCEPT, CONTENT_TYPE)
.putHeader(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.name());

context.next();
// Basic authentication
if (authorizationHeader != null) {
context.request().putHeader(HttpHeaders.AUTHORIZATION, authorizationHeader);
}

context.next();
});

}
}

private void initializePaths(URI uri) {
String urlPrefix = uri.getPath().replaceAll("/$", "");

URL_ROOT = urlPrefix + "/";
URL_STATE_CLUSTER = urlPrefix + "/_cluster/health";
URL_BULK = urlPrefix + "/_bulk";
URL_TEMPLATE = urlPrefix + "/_template";
URL_INGEST = urlPrefix + "/_ingest/pipeline";
URL_SEARCH = urlPrefix + "/_search?ignore_unavailable=true";
URL_COUNT = urlPrefix + "/_count?ignore_unavailable=true";
}

@Override
public Single<ElasticsearchInfo> getInfo() throws ElasticsearchException {
return httpClient
Expand Down

0 comments on commit f23b5d0

Please sign in to comment.