From 38f720752af4d4aad8c4e467a288d9048659f688 Mon Sep 17 00:00:00 2001 From: Rob Daugherty Date: Wed, 14 Mar 2018 02:07:32 -0400 Subject: AT&T 1712 and 1802 release code This is code from AT&T's 1712 and 1802 releases. Change-Id: Ie1e85851e94bc66c4d9514a0226c221939531a04 Issue-ID: SO-425 Signed-off-by: Rob Daugherty --- .../mso/cloudify/base/client/CloudifyRequest.java | 188 +++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 cloudify-client/src/main/java/org/openecomp/mso/cloudify/base/client/CloudifyRequest.java (limited to 'cloudify-client/src/main/java/org/openecomp/mso/cloudify/base/client/CloudifyRequest.java') diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/base/client/CloudifyRequest.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/base/client/CloudifyRequest.java new file mode 100644 index 0000000000..6b0a4c1d13 --- /dev/null +++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/base/client/CloudifyRequest.java @@ -0,0 +1,188 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T 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.openecomp.mso.cloudify.base.client; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.ArrayList; +import java.util.Map; + +public class CloudifyRequest { + + private CloudifyClient client; + + public CloudifyRequest() { + + } + + public CloudifyRequest(CloudifyClient client, HttpMethod method, CharSequence path, Entity entity, Class returnType) { + this.client = client; + this.method = method; + this.path = new StringBuilder(path); + this.entity = entity; + this.returnType = returnType; + header("Accept", "application/json"); + } + + private String endpoint; + + private HttpMethod method; + + private StringBuilder path = new StringBuilder(); + + private Map> headers = new HashMap>(); + + private Entity entity; + + private Class returnType; + + private boolean basicAuth = false; + private String user = null; + private String password = null; + + public CloudifyRequest endpoint(String endpoint) { + this.endpoint = endpoint; + return this; + } + + public String endpoint() { + return endpoint; + } + + public CloudifyRequest method(HttpMethod method) { + this.method = method; + return this; + } + + public HttpMethod method() { + return method; + } + + public CloudifyRequest path(String path) { + this.path.append(path); + return this; + } + + public String path() { + return path.toString(); + } + + public CloudifyRequest header(String name, Object value) { + if(value != null) { + headers.put(name, Arrays.asList(value)); + } + return this; + } + + public Map> headers() { + return headers; + } + + public Entity entity(T entity, String contentType) { + return new Entity(entity, contentType); + } + + public Entity entity() { + return entity; + } + + public Entity json(T entity) { + return entity(entity, "application/json"); + } + + public void returnType(Class returnType) { + this.returnType = returnType; + } + + public Class returnType() { + return returnType; + } + + /* + * Use Basic Authentication for this request. If not set, the client will use Token authentication + * if a token provider is defined. Otherwise, no authentication will be applied. + */ + public void setBasicAuthentication (String user, String password) { + this.basicAuth = true; + this.user = user; + this.password= password; + } + + public boolean isBasicAuth () { + return this.basicAuth; + } + + public String getUser() { + return user; + } + + public String getPassword() { + return password; + } + + public R execute() { + return client.execute(this); + } + + public CloudifyResponse request() { + return client.request(this); + } + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "CloudifyRequest [endpoint=" + endpoint + ", method=" + method + + ", path=" + path + ", headers=" + headers + ", entity=" + + entity + ", returnType=" + returnType + "]"; + } + + private Map > queryParams = new LinkedHashMap >(); + + public Map > queryParams() { + return queryParams; + } + + public CloudifyRequest queryParam(String key, Object value) { + if (queryParams.containsKey(key)) { + List values = queryParams.get(key); + values.add(value); + } else { + List values = new ArrayList(); + values.add(value); + queryParams.put(key, values); + } + + return this; + } + + protected static String buildPath(String ... elements) { + StringBuilder stringBuilder = new StringBuilder(); + for (String element : elements) { + stringBuilder.append(element); + } + + return stringBuilder.toString(); + } +} -- cgit 1.2.3-korg