All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xcase.rest.generator.swagger.OpenCloudSwaggerProxy Maven / Gradle / Ivy

/**
 * Copyright 2019 Xcase All rights reserved.
 */
package com.xcase.rest.generator.swagger;

import com.google.gson.*;
import com.xcase.common.impl.simple.core.CommonHTTPManager;
import com.xcase.common.utils.ConverterUtils;
import java.lang.invoke.*;
import java.net.*;
import java.util.*;
import org.apache.http.*;
import org.apache.http.message.*;
import org.apache.http.util.EntityUtils;
import org.apache.logging.log4j.*;

/**
 *
 * @author martin
 */
public class OpenCloudSwaggerProxy extends SwaggerProxy implements ISwaggerProxy {

    /**
     * log4j object.
     */
    protected static final Logger LOGGER = LogManager.getLogger(MethodHandles.lookup().lookupClass());

    /**
     * This constructor sets the base URL used by the proxy classes. The URL
     * must end in a /.
     *
     * @param url
     */
    public OpenCloudSwaggerProxy(URL url) {
        _baseUrl = url;
    }

    /**
     * This constructor sets the base URL used by the proxy classes. The URL
     * must end in a /.
     *
     * @param url
     */
    public OpenCloudSwaggerProxy(URL url, String accessToken) {
        this.token = accessToken;
        this._baseUrl = url;
    }

    public OpenCloudSwaggerProxy(URL baseUrl, String username, String password, String tenant) {
        _baseUrl = baseUrl;
        _username = username;
        _password = password;
        _tenantId = tenant;
    }

    public CommonHTTPManager buildHttpClient() {
        LOGGER.debug("starting buildHttpClient()");
        CommonHTTPManager commonHTTPManager = CommonHTTPManager.getCommonHTTPManager();
        getAuthenticationToken(commonHTTPManager);
        return commonHTTPManager;
    }

    public CommonHTTPManager buildHttpClient(String accessToken) {
        LOGGER.debug("starting buildHttpClient()");
        CommonHTTPManager commonHTTPManager = CommonHTTPManager.getCommonHTTPManager();
        return commonHTTPManager;
    }

    public void getAuthenticationToken(CommonHTTPManager httpClient) {
        LOGGER.debug("starting getAuthenticationToken()");
        try {
            List parameters = new ArrayList();
            parameters.add(new BasicNameValuePair("grant_type", "password"));
            parameters.add(new BasicNameValuePair("username", "Admin"));
            parameters.add(new BasicNameValuePair("password", "pass2app"));
            parameters.add(new BasicNameValuePair("tenantId", "stage1"));
            String baseUrl = _baseUrl.toString();
            LOGGER.debug("baseUrl is " + baseUrl);
            baseUrl = baseUrl.substring(0, baseUrl.length() - 4);
            LOGGER.debug("baseUrl is " + baseUrl);
            LOGGER.debug("_baseUrl is " + _baseUrl);
            HttpResponse httpResponse = httpClient.doHttpResponsePost(baseUrl + "auth/oauth/token", null, parameters, null);
            LOGGER.debug("posted request");
            HttpEntity httpEntity = httpResponse.getEntity();
            LOGGER.debug("got responseEntity");
            if (httpEntity != null) {
                String responseEntityString = EntityUtils.toString(httpEntity);
                LOGGER.debug("responseEntityString is " + responseEntityString);
                JsonParser jsonParser = new JsonParser();
                JsonElement jsonElement = ConverterUtils.parseStringToJson(responseEntityString);
                if (jsonElement != null) {
                    JsonElement tokenElement = ((JsonObject) jsonElement).get("access_token");
                    token = tokenElement.getAsString();
                    LOGGER.debug("token is " + token);
                }
            }
        } catch (Exception e) {
            LOGGER.warn("exception getting authentication token: " + e.getMessage());
        }
    }

    public Header[] setHeaders() {
        Header acceptHeader = new BasicHeader("Accept", "application/json");
        Header bearerHeader = new BasicHeader("Authorization", "Bearer " + token);
        Header contentTypeHeader = new BasicHeader("Content-Type", "application/json");
        Header[] headers = new Header[] { acceptHeader, bearerHeader, contentTypeHeader };
        return headers;
    }

    // helper function for building uris.
    public String appendQuery(String currentUrl, String paramName, String value) {
        try {
            LOGGER.debug("value is " + value);
            if (currentUrl.contains("?")) {
                currentUrl += String.format("&" + paramName + "=" + URLEncoder.encode(value, "UTF-8"));
            } else {
                currentUrl += String.format("?" + paramName + "=" + URLEncoder.encode(value, "UTF-8"));
            }
            LOGGER.debug("currentUrl is " + currentUrl);
        } catch (Exception e) {
            LOGGER.warn("exception appending query " + e.getMessage());
        }

        return currentUrl;
    }

    @Override
    public String getSwaggerDocument() throws Exception {
        LOGGER.debug("starting GetOpenSwaggerDocument()");
        String url = "api/swagger/docs/v1";
        LOGGER.debug("url is " + url);
        CommonHTTPManager apiClient = buildHttpClient();
        LOGGER.debug("about to invoke method using url " + url);
        LOGGER.debug("method is GET");
        String requestURL = _baseUrl + url;
        LOGGER.debug("requestURL is " + requestURL);
        LOGGER.debug("about to send request for Swagger document");
        Header[] headers = setHeaders();
        String content = apiClient.doStringGet(requestURL, headers, null);
        LOGGER.debug("content is " + content);
        return content;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy