aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openecomp/datarouter/util/client/NoAuthRestClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openecomp/datarouter/util/client/NoAuthRestClient.java')
-rw-r--r--src/main/java/org/openecomp/datarouter/util/client/NoAuthRestClient.java226
1 files changed, 226 insertions, 0 deletions
diff --git a/src/main/java/org/openecomp/datarouter/util/client/NoAuthRestClient.java b/src/main/java/org/openecomp/datarouter/util/client/NoAuthRestClient.java
new file mode 100644
index 0000000..33874a8
--- /dev/null
+++ b/src/main/java/org/openecomp/datarouter/util/client/NoAuthRestClient.java
@@ -0,0 +1,226 @@
+/**
+ * ============LICENSE_START=======================================================
+ * DataRouter
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * 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=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.datarouter.util.client;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.core.MediaType;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.component.http.HttpMessage;
+import org.apache.camel.Message;
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.cl.mdc.MdcContext;
+import org.openecomp.datarouter.logging.DataRouterMsgs;
+import org.openecomp.datarouter.util.AaiUiSvcPolicyUtil;
+import org.openecomp.datarouter.util.NodeUtils;
+import org.openecomp.datarouter.util.RouterServiceUtil;
+import org.openecomp.restclient.client.Headers;
+import org.openecomp.restclient.client.OperationResult;
+import org.openecomp.restclient.client.RestClient;
+import org.openecomp.restclient.enums.RestAuthenticationMode;
+import org.slf4j.MDC;
+
+import org.springframework.http.HttpStatus;
+
+import org.openecomp.restclient.rest.HttpUtil;
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class NoAuthRestClient implements SvcRoutingRestClient {
+
+ private RestClient restClient;
+
+ private String host;
+ private String port;
+ private String originUrl;
+ private String targetUri;
+ private JsonNode targetPayload;
+ private Logger logger;
+ private Logger auditLogger;
+
+ public NoAuthRestClient(int connectTimeOut, int readTimeOut) {
+ LoggerFactory loggerFactoryInstance = LoggerFactory.getInstance();
+ logger = loggerFactoryInstance.getLogger(NoAuthRestClient.class.getName());
+ auditLogger = loggerFactoryInstance.getAuditLogger(NoAuthRestClient.class.getName());
+ restClient = new RestClient().authenticationMode(RestAuthenticationMode.HTTP_NOAUTH)
+ .connectTimeoutMs(connectTimeOut).readTimeoutMs(readTimeOut);
+ }
+
+
+ private OperationResult getResults(String url, JsonNode payload){
+ Map<String, List<String>> headers = new HashMap<>();
+ headers.put(Headers.FROM_APP_ID, Arrays.asList("Synapse"));
+ headers.put(Headers.TRANSACTION_ID, Arrays.asList(MDC.get(MdcContext.MDC_REQUEST_ID)));
+ return this.getRestClient().post(url, payload.asText(), headers, MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON_TYPE);
+ }
+
+ public final void handleRequest (String host, String port, Exchange exchange) throws Exception {
+ RouterServiceUtil.setMdcContext(exchange);
+ Message message = exchange.getIn();
+ String body = message.getBody(String.class);
+ OperationResult result = new OperationResult();
+
+ this.setHost(host);
+ this.setPort(port);
+
+ this.setOriginUrl(message.getHeader(Exchange.HTTP_URL).toString());
+ if (body != null && body.length() != 0) {
+ JsonNode node = NodeUtils.convertJsonStrToJsonNode(body);
+ this.setTargetPayload(AaiUiSvcPolicyUtil.getOriginPayload(node));
+ this.setTargetUri(AaiUiSvcPolicyUtil.getTargetUri(node));
+ }
+
+ if ( this.getTargetPayload() == null || this.getTargetUri() == null){
+ logger.error(DataRouterMsgs.INVALID_ORIGIN_PAYLOAD, body);
+ result.setResultCode(HttpStatus.BAD_REQUEST.value());
+ result.setFailureCause("Invalid payload");
+ }
+
+ String targetUrl = "http://" + host + ":" + port + "/" + this.targetUri;
+ auditLogger.info(DataRouterMsgs.ROUTING_FROM_TO, this.getOriginUrl(), targetUrl);
+ long startTimeInMs = System.currentTimeMillis();
+
+ result = this.getResults(targetUrl, targetPayload);
+
+ long targetMsOpTime = (System.currentTimeMillis() - startTimeInMs);
+ auditLogger.info(DataRouterMsgs.OP_TIME, "Target service at "+ targetUrl, String.valueOf(targetMsOpTime));
+
+ int rc = result.getResultCode();
+ String resultStr = "";
+ if (HttpUtil.isHttpResponseClassSuccess(rc)) {
+ resultStr = result.getResult();
+ } else {
+ resultStr = result.getFailureCause();
+ }
+
+ logger.debug(DataRouterMsgs.ROUTING_RESPONSE, targetUrl, result.toString());
+ exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, rc);
+ exchange.getOut().setBody(resultStr);
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#getHost()
+ */
+ @Override
+ public String getHost() {
+ return host;
+ }
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#setHost(java.lang.String)
+ */
+ @Override
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#getPort()
+ */
+ @Override
+ public String getPort() {
+ return port;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#setPort(java.lang.String)
+ */
+ @Override
+ public void setPort(String port) {
+ this.port = port;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#getTargetUri()
+ */
+ @Override
+ public String getTargetUri() {
+ return targetUri;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#setTargetUri(java.lang.String)
+ */
+ @Override
+ public void setTargetUri(String targetUri) {
+ this.targetUri = targetUri;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#getTargetPayload()
+ */
+ @Override
+ public JsonNode getTargetPayload() {
+ return targetPayload;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#setTargetPayload(com.fasterxml.jackson.databind.JsonNode)
+ */
+ @Override
+ public void setTargetPayload(JsonNode targetPayload) {
+ this.targetPayload = targetPayload;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#getRestClient()
+ */
+ @Override
+ public RestClient getRestClient() {
+ return restClient;
+ }
+
+ /* (non-Javadoc)
+ * @see org.openecomp.datarouter.util.client.SvcRoutingRestClient#setRestClient()
+ */
+ @Override
+ public void setRestClient(RestClient client) {
+ this.restClient = client;
+ }
+
+
+ public String getOriginUrl() {
+ return originUrl;
+ }
+
+
+ public void setOriginUrl(String originUrl) {
+ this.originUrl = originUrl;
+ }
+
+
+}