From 47ffd5638c8799186a49683f6b4e4bd126a02214 Mon Sep 17 00:00:00 2001 From: Marcin Migdal Date: Tue, 5 Mar 2019 14:58:14 +0100 Subject: Spring removal Change-Id: I7f886d6817d3491f27b9f217d52ccaf3e421c530 Issue-ID: DCAEGEN2-1310 Signed-off-by: mmigdal Signed-off-by: Marcin Migdal --- .../services/adapters/http/CloudHttpClient.java | 47 +++++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java b/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java index cba5c6af..33c39fa6 100644 --- a/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java +++ b/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java @@ -29,10 +29,13 @@ import java.util.Collections; import java.util.Map; import java.util.function.BiConsumer; import java.util.stream.Collectors; +import org.onap.dcaegen2.services.sdk.rest.services.model.ClientModel; +import org.onap.dcaegen2.services.sdk.rest.services.model.JsonBodyBuilder; import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; +import reactor.netty.ByteBufFlux; import reactor.netty.http.client.HttpClient; import reactor.netty.http.client.HttpClientRequest; import reactor.netty.http.client.HttpClientResponse; @@ -64,12 +67,9 @@ public class CloudHttpClient { return get(url, context, Collections.EMPTY_MAP, bodyClass); } - public Mono get(String url, RequestDiagnosticContext context, Map customHeaders, Class bodyClass) { - final HttpClient clientWithHeaders = httpClient - .doOnRequest((req, conn) -> logRequest(context, req)) - .doOnResponse((rsp, conn) -> logResponse(context, rsp)) - .headers(hdrs -> context.remoteCallHttpHeaders().forEach((BiConsumer) hdrs::set)) - .headers(hdrs -> customHeaders.forEach(hdrs::set)); + public Mono get(String url, RequestDiagnosticContext context, Map customHeaders, + Class bodyClass) { + final HttpClient clientWithHeaders = getHttpClientWithHeaders(context, customHeaders); return callHttpGet(clientWithHeaders, url, bodyClass); } @@ -77,6 +77,27 @@ public class CloudHttpClient { return callHttpGet(httpClient, url, bodyClass); } + public Mono post(String url, RequestDiagnosticContext context, Map customHeaders, + JsonBodyBuilder jsonBodyBuilder, ClientModel clientModel) { + final HttpClient clientWithHeaders = getHttpClientWithHeaders(context, customHeaders); + return callHttpPost(clientWithHeaders, url, jsonBodyBuilder, clientModel); + } + + public Mono patch(String url, RequestDiagnosticContext context, Map customHeaders, + JsonBodyBuilder jsonBodyBuilder, ClientModel clientModel) { + final HttpClient clientWithHeaders = getHttpClientWithHeaders(context, customHeaders); + return callHttpPatch(clientWithHeaders, url, jsonBodyBuilder, clientModel); + } + + private HttpClient getHttpClientWithHeaders(RequestDiagnosticContext context, Map customHeaders) { + final HttpClient clientWithHeaders = httpClient + .doOnRequest((req, conn) -> logRequest(context, req)) + .doOnResponse((rsp, conn) -> logResponse(context, rsp)) + .headers(hdrs -> context.remoteCallHttpHeaders().forEach((BiConsumer) hdrs::set)) + .headers(hdrs -> customHeaders.forEach(hdrs::set)); + return clientWithHeaders; + } + private Mono callHttpGet(HttpClient client, String url, Class bodyClass) { return client.get() .uri(url) @@ -86,6 +107,20 @@ public class CloudHttpClient { .map(body -> parseJson(body, bodyClass)); } + private Mono callHttpPost(HttpClient client, String url, + JsonBodyBuilder jsonBodyBuilder, T clientModel) { + return client.baseUrl(url).post() + .send(ByteBufFlux.fromString(Mono.just(jsonBodyBuilder.createJsonBody(clientModel)))) + .responseSingle((httpClientResponse, byteBufMono) -> Mono.just(httpClientResponse.status().code())); + } + + private Mono callHttpPatch(HttpClient client, String url, + JsonBodyBuilder jsonBodyBuilder, T clientModel) { + return client.baseUrl(url).patch() + .send(ByteBufFlux.fromString(Mono.just(jsonBodyBuilder.createJsonBody(clientModel)))) + .responseSingle((httpClientResponse, byteBufMono) -> Mono.just(httpClientResponse.status().code())); + } + private Exception createException(String url, HttpClientResponse response) { return new IOException(String.format("Request failed for URL '%s'. Response code: %s", url, -- cgit 1.2.3-korg