diff options
Diffstat (limited to 'prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/HttpClientExecutorService.java')
-rw-r--r-- | prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/HttpClientExecutorService.java | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/HttpClientExecutorService.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/HttpClientExecutorService.java deleted file mode 100644 index 1b69f5fd..00000000 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/HttpClientExecutorService.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * PNF-REGISTRATION-HANDLER - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.dcaegen2.services.prh.service; - -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import org.onap.dcaegen2.services.prh.model.EnvProperties; -import org.reactivestreams.Publisher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.ExchangeFilterFunction; -import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Mono; - -/** - * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 8/10/18 - */ - -@Service -public class HttpClientExecutorService { - - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - public Mono<String> callConsulForConfigBindingServiceEndpoint(EnvProperties envProperties) { - - return HttpGetClient.callHttpGet( - envProperties.consulHost() + ":" + envProperties.consulPort() + "/v1/catalog/service/" + envProperties - .cbsName()) - .flatMap(this::getJsonArrayFromRequest) - .flatMap(jsonArray -> Mono.just(jsonArray.get(0))) - .flatMap(this::createConfigBindingServiceURL); - - } - - public Publisher<JsonObject> callConfigBindingServiceForPrhConfiguration(EnvProperties envProperties, - Mono<String> configBindingServiceUri) { - return HttpGetClient.callHttpGet(configBindingServiceUri + "/service_component/" + envProperties.appName()) - .flatMap(this::getJsonConfiguration); - } - - private Mono<? extends JsonObject> getJsonConfiguration(String body) { - JsonElement jsonElement = new Gson().toJsonTree(body); - try { - return Mono.just(jsonElement.getAsJsonObject()); - } catch (IllegalStateException e) { - return Mono.error(e); - } - } - - private Mono<String> createConfigBindingServiceURL(JsonElement jsonElement) { - JsonObject jsonObject; - try { - jsonObject = jsonElement.getAsJsonObject(); - } catch (IllegalStateException e) { - return Mono.error(e); - } - return Mono.just(jsonObject.get("ServiceAddress").toString() + ":" + jsonObject.get("ServicePort").toString()); - } - - - private Mono<? extends JsonArray> getJsonArrayFromRequest(String body) { - JsonElement jsonElement = new Gson().toJsonTree(body); - try { - return Mono.just(jsonElement.getAsJsonArray()); - } catch (IllegalStateException e) { - logger.warn("Converting string to jsonArray threw error: " + e); - return Mono.error(e); - } - } - - private static class HttpGetClient { - - private static final Logger logger = LoggerFactory.getLogger(HttpGetClient.class); - - private static WebClient webClient; - - private HttpGetClient() { - } - - private static Mono<String> callHttpGet(String url) { - return webClient - .get() - .uri(url) - .retrieve() - .onStatus(HttpStatus::is4xxClientError, response -> - Mono.error(new Exception("Request for cloud config failed: HTTP 400"))) - .onStatus(HttpStatus::is5xxServerError, response -> - Mono.error(new Exception("Request for cloud config failed: HTTP 500"))) - .bodyToMono(String.class); - } - - private static ExchangeFilterFunction logResponse() { - return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> { - logger.info("Response status {}", clientResponse.statusCode()); - return Mono.just(clientResponse); - }); - } - - private static ExchangeFilterFunction logRequest() { - return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> { - logger.info("Request: {} {}", clientRequest.method(), clientRequest.url()); - clientRequest.headers() - .forEach((name, values) -> values.forEach(value -> logger.info("{}={}", name, value))); - return Mono.just(clientRequest); - }); - } - - static { - webClient = WebClient.builder().filter(logRequest()).filter(logResponse()).build(); - } - - - } -} |