Search in sources :

Example 21 with HttpPatch

use of org.apache.http.client.methods.HttpPatch in project cerberus-source by cerberustesting.

the class RestService method callREST.

@Override
public AnswerItem<AppService> callREST(String servicePath, String requestString, String method, List<AppServiceHeader> headerList, List<AppServiceContent> contentList, String token, int timeOutMs, String system) {
    AnswerItem result = new AnswerItem();
    AppService serviceREST = factoryAppService.create("", AppService.TYPE_REST, method, "", "", "", "", "", "", "", "", null, "", null);
    serviceREST.setProxy(false);
    serviceREST.setProxyHost(null);
    serviceREST.setProxyPort(0);
    serviceREST.setProxyWithCredential(false);
    serviceREST.setProxyUser(null);
    serviceREST.setTimeoutms(timeOutMs);
    MessageEvent message = null;
    if (StringUtil.isNullOrEmpty(servicePath)) {
        message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE_SERVICEPATHMISSING);
        result.setResultMessage(message);
        return result;
    }
    if (StringUtil.isNullOrEmpty(method)) {
        message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE_METHODMISSING);
        result.setResultMessage(message);
        return result;
    }
    // If token is defined, we add 'cerberus-token' on the http header.
    if (!StringUtil.isNullOrEmpty(token)) {
        headerList.add(factoryAppServiceHeader.create(null, "cerberus-token", token, "Y", 0, "", "", null, "", null));
    }
    CloseableHttpClient httpclient;
    if (proxyService.useProxy(servicePath, system)) {
        String proxyHost = parameterService.getParameterStringByKey("cerberus_proxy_host", system, DEFAULT_PROXY_HOST);
        int proxyPort = parameterService.getParameterIntegerByKey("cerberus_proxy_port", system, DEFAULT_PROXY_PORT);
        serviceREST.setProxy(true);
        serviceREST.setProxyHost(proxyHost);
        serviceREST.setProxyPort(proxyPort);
        HttpHost proxyHostObject = new HttpHost(proxyHost, proxyPort);
        if (parameterService.getParameterBooleanByKey("cerberus_proxyauthentification_active", system, DEFAULT_PROXYAUTHENT_ACTIVATE)) {
            String proxyUser = parameterService.getParameterStringByKey("cerberus_proxyauthentification_user", system, DEFAULT_PROXYAUTHENT_USER);
            String proxyPassword = parameterService.getParameterStringByKey("cerberus_proxyauthentification_password", system, DEFAULT_PROXYAUTHENT_PASSWORD);
            serviceREST.setProxyWithCredential(true);
            serviceREST.setProxyUser(proxyUser);
            CredentialsProvider credsProvider = new BasicCredentialsProvider();
            credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort), new UsernamePasswordCredentials(proxyUser, proxyPassword));
            LOG.debug("Activating Proxy With Authentification.");
            httpclient = HttpClientBuilder.create().setProxy(proxyHostObject).setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy()).setDefaultCredentialsProvider(credsProvider).build();
        } else {
            LOG.debug("Activating Proxy (No Authentification).");
            httpclient = HttpClientBuilder.create().setProxy(proxyHostObject).build();
        }
    } else {
        httpclient = HttpClients.createDefault();
    }
    try {
        RequestConfig requestConfig;
        // Timeout setup.
        requestConfig = RequestConfig.custom().setConnectTimeout(timeOutMs).setConnectionRequestTimeout(timeOutMs).setSocketTimeout(timeOutMs).build();
        AppService responseHttp = null;
        switch(method) {
            case AppService.METHOD_HTTPGET:
                LOG.info("Start preparing the REST Call (GET). " + servicePath + " - " + requestString);
                // Adding query string from requestString
                servicePath = StringUtil.addQueryString(servicePath, requestString);
                // Adding query string from contentList
                String newRequestString = AppServiceService.convertContentListToQueryString(contentList);
                servicePath = StringUtil.addQueryString(servicePath, newRequestString);
                serviceREST.setServicePath(servicePath);
                HttpGet httpGet = new HttpGet(servicePath);
                // Timeout setup.
                httpGet.setConfig(requestConfig);
                // Header.
                if (headerList != null) {
                    for (AppServiceHeader contentHeader : headerList) {
                        httpGet.addHeader(contentHeader.getKey(), contentHeader.getValue());
                    }
                }
                serviceREST.setHeaderList(headerList);
                // Saving the service before the call Just in case it goes wrong (ex : timeout).
                result.setItem(serviceREST);
                LOG.info("Executing request " + httpGet.getRequestLine());
                responseHttp = executeHTTPCall(httpclient, httpGet);
                if (responseHttp != null) {
                    serviceREST.setResponseHTTPBody(responseHttp.getResponseHTTPBody());
                    serviceREST.setResponseHTTPCode(responseHttp.getResponseHTTPCode());
                    serviceREST.setResponseHTTPVersion(responseHttp.getResponseHTTPVersion());
                    serviceREST.setResponseHeaderList(responseHttp.getResponseHeaderList());
                }
                break;
            case AppService.METHOD_HTTPPOST:
                LOG.info("Start preparing the REST Call (POST). " + servicePath);
                serviceREST.setServicePath(servicePath);
                HttpPost httpPost = new HttpPost(servicePath);
                // Timeout setup.
                httpPost.setConfig(requestConfig);
                // Content
                if (!(StringUtil.isNullOrEmpty(requestString))) {
                    // If requestString is defined, we POST it.
                    InputStream stream = new ByteArrayInputStream(requestString.getBytes(StandardCharsets.UTF_8));
                    InputStreamEntity reqEntity = new InputStreamEntity(stream);
                    reqEntity.setChunked(true);
                    httpPost.setEntity(reqEntity);
                    serviceREST.setServiceRequest(requestString);
                } else {
                    // If requestString is not defined, we POST the list of key/value request.
                    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
                    for (AppServiceContent contentVal : contentList) {
                        nvps.add(new BasicNameValuePair(contentVal.getKey(), contentVal.getValue()));
                    }
                    httpPost.setEntity(new UrlEncodedFormEntity(nvps));
                    serviceREST.setContentList(contentList);
                }
                // Header.
                for (AppServiceHeader contentHeader : headerList) {
                    httpPost.addHeader(contentHeader.getKey(), contentHeader.getValue());
                }
                serviceREST.setHeaderList(headerList);
                // Saving the service before the call Just in case it goes wrong (ex : timeout).
                result.setItem(serviceREST);
                LOG.info("Executing request " + httpPost.getRequestLine());
                responseHttp = executeHTTPCall(httpclient, httpPost);
                if (responseHttp != null) {
                    serviceREST.setResponseHTTPBody(responseHttp.getResponseHTTPBody());
                    serviceREST.setResponseHTTPCode(responseHttp.getResponseHTTPCode());
                    serviceREST.setResponseHTTPVersion(responseHttp.getResponseHTTPVersion());
                    serviceREST.setResponseHeaderList(responseHttp.getResponseHeaderList());
                } else {
                    message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE);
                    message.setDescription(message.getDescription().replace("%SERVICE%", servicePath));
                    message.setDescription(message.getDescription().replace("%DESCRIPTION%", "Any issue was found when calling the service. Coud be a reached timeout during the call (." + timeOutMs + ")"));
                    result.setResultMessage(message);
                    return result;
                }
                break;
            case AppService.METHOD_HTTPDELETE:
                LOG.info("Start preparing the REST Call (DELETE). " + servicePath);
                servicePath = StringUtil.addQueryString(servicePath, requestString);
                serviceREST.setServicePath(servicePath);
                HttpDelete httpDelete = new HttpDelete(servicePath);
                // Timeout setup.
                httpDelete.setConfig(requestConfig);
                // Header.
                for (AppServiceHeader contentHeader : headerList) {
                    httpDelete.addHeader(contentHeader.getKey(), contentHeader.getValue());
                }
                serviceREST.setHeaderList(headerList);
                // Saving the service before the call Just in case it goes wrong (ex : timeout).
                result.setItem(serviceREST);
                LOG.info("Executing request " + httpDelete.getRequestLine());
                responseHttp = executeHTTPCall(httpclient, httpDelete);
                if (responseHttp != null) {
                    serviceREST.setResponseHTTPBody(responseHttp.getResponseHTTPBody());
                    serviceREST.setResponseHTTPCode(responseHttp.getResponseHTTPCode());
                    serviceREST.setResponseHTTPVersion(responseHttp.getResponseHTTPVersion());
                    serviceREST.setResponseHeaderList(responseHttp.getResponseHeaderList());
                }
                break;
            case AppService.METHOD_HTTPPUT:
                LOG.info("Start preparing the REST Call (PUT). " + servicePath);
                serviceREST.setServicePath(servicePath);
                HttpPut httpPut = new HttpPut(servicePath);
                // Timeout setup.
                httpPut.setConfig(requestConfig);
                // Content
                if (!(StringUtil.isNullOrEmpty(requestString))) {
                    // If requestString is defined, we POST it.
                    InputStream stream = new ByteArrayInputStream(requestString.getBytes(StandardCharsets.UTF_8));
                    InputStreamEntity reqEntity = new InputStreamEntity(stream);
                    reqEntity.setChunked(true);
                    httpPut.setEntity(reqEntity);
                    serviceREST.setServiceRequest(requestString);
                } else {
                    // If requestString is not defined, we PUT the list of key/value request.
                    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
                    for (AppServiceContent contentVal : contentList) {
                        nvps.add(new BasicNameValuePair(contentVal.getKey(), contentVal.getValue()));
                    }
                    httpPut.setEntity(new UrlEncodedFormEntity(nvps));
                    serviceREST.setContentList(contentList);
                }
                // Header.
                for (AppServiceHeader contentHeader : headerList) {
                    httpPut.addHeader(contentHeader.getKey(), contentHeader.getValue());
                }
                serviceREST.setHeaderList(headerList);
                // Saving the service before the call Just in case it goes wrong (ex : timeout).
                result.setItem(serviceREST);
                LOG.info("Executing request " + httpPut.getRequestLine());
                responseHttp = executeHTTPCall(httpclient, httpPut);
                if (responseHttp != null) {
                    serviceREST.setResponseHTTPBody(responseHttp.getResponseHTTPBody());
                    serviceREST.setResponseHTTPCode(responseHttp.getResponseHTTPCode());
                    serviceREST.setResponseHTTPVersion(responseHttp.getResponseHTTPVersion());
                    serviceREST.setResponseHeaderList(responseHttp.getResponseHeaderList());
                } else {
                    message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE);
                    message.setDescription(message.getDescription().replace("%SERVICE%", servicePath));
                    message.setDescription(message.getDescription().replace("%DESCRIPTION%", "Any issue was found when calling the service. Coud be a reached timeout during the call (." + timeOutMs + ")"));
                    result.setResultMessage(message);
                    return result;
                }
                break;
            case AppService.METHOD_HTTPPATCH:
                LOG.info("Start preparing the REST Call (PUT). " + servicePath);
                serviceREST.setServicePath(servicePath);
                HttpPatch httpPatch = new HttpPatch(servicePath);
                // Timeout setup.
                httpPatch.setConfig(requestConfig);
                // Content
                if (!(StringUtil.isNullOrEmpty(requestString))) {
                    // If requestString is defined, we POST it.
                    InputStream stream = new ByteArrayInputStream(requestString.getBytes(StandardCharsets.UTF_8));
                    InputStreamEntity reqEntity = new InputStreamEntity(stream);
                    reqEntity.setChunked(true);
                    httpPatch.setEntity(reqEntity);
                    serviceREST.setServiceRequest(requestString);
                } else {
                    // If requestString is not defined, we PUT the list of key/value request.
                    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
                    for (AppServiceContent contentVal : contentList) {
                        nvps.add(new BasicNameValuePair(contentVal.getKey(), contentVal.getValue()));
                    }
                    httpPatch.setEntity(new UrlEncodedFormEntity(nvps));
                    serviceREST.setContentList(contentList);
                }
                // Header.
                for (AppServiceHeader contentHeader : headerList) {
                    httpPatch.addHeader(contentHeader.getKey(), contentHeader.getValue());
                }
                serviceREST.setHeaderList(headerList);
                // Saving the service before the call Just in case it goes wrong (ex : timeout).
                result.setItem(serviceREST);
                LOG.info("Executing request " + httpPatch.getRequestLine());
                responseHttp = executeHTTPCall(httpclient, httpPatch);
                if (responseHttp != null) {
                    serviceREST.setResponseHTTPBody(responseHttp.getResponseHTTPBody());
                    serviceREST.setResponseHTTPCode(responseHttp.getResponseHTTPCode());
                    serviceREST.setResponseHTTPVersion(responseHttp.getResponseHTTPVersion());
                    serviceREST.setResponseHeaderList(responseHttp.getResponseHeaderList());
                } else {
                    message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE);
                    message.setDescription(message.getDescription().replace("%SERVICE%", servicePath));
                    message.setDescription(message.getDescription().replace("%DESCRIPTION%", "Any issue was found when calling the service. Coud be a reached timeout during the call (." + timeOutMs + ")"));
                    result.setResultMessage(message);
                    return result;
                }
                break;
        }
        // Get result Content Type.
        if (responseHttp != null) {
            serviceREST.setResponseHTTPBodyContentType(AppServiceService.guessContentType(serviceREST, AppService.RESPONSEHTTPBODYCONTENTTYPE_JSON));
        }
        result.setItem(serviceREST);
        message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_CALLSERVICE);
        message.setDescription(message.getDescription().replace("%SERVICEMETHOD%", method));
        message.setDescription(message.getDescription().replace("%SERVICEPATH%", servicePath));
        result.setResultMessage(message);
    } catch (SocketTimeoutException ex) {
        LOG.info("Exception when performing the REST Call. " + ex.toString());
        message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE_TIMEOUT);
        message.setDescription(message.getDescription().replace("%SERVICEURL%", servicePath));
        message.setDescription(message.getDescription().replace("%TIMEOUT%", String.valueOf(timeOutMs)));
        result.setResultMessage(message);
        return result;
    } catch (Exception ex) {
        LOG.error("Exception when performing the REST Call. " + ex.toString(), ex);
        message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE);
        message.setDescription(message.getDescription().replace("%SERVICE%", servicePath));
        message.setDescription(message.getDescription().replace("%DESCRIPTION%", "Error on CallREST : " + ex.toString()));
        result.setResultMessage(message);
        return result;
    } finally {
        try {
            httpclient.close();
        } catch (IOException ex) {
            LOG.error(ex.toString());
        }
    }
    return result;
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) BasicCredentialsProvider(org.apache.http.impl.client.BasicCredentialsProvider) HttpDelete(org.apache.http.client.methods.HttpDelete) MessageEvent(org.cerberus.engine.entity.MessageEvent) HttpGet(org.apache.http.client.methods.HttpGet) ArrayList(java.util.ArrayList) AppServiceContent(org.cerberus.crud.entity.AppServiceContent) IFactoryAppServiceHeader(org.cerberus.crud.factory.IFactoryAppServiceHeader) AppServiceHeader(org.cerberus.crud.entity.AppServiceHeader) HttpPut(org.apache.http.client.methods.HttpPut) HttpPatch(org.apache.http.client.methods.HttpPatch) HttpHost(org.apache.http.HttpHost) BasicNameValuePair(org.apache.http.message.BasicNameValuePair) ProxyAuthenticationStrategy(org.apache.http.impl.client.ProxyAuthenticationStrategy) CloseableHttpClient(org.apache.http.impl.client.CloseableHttpClient) RequestConfig(org.apache.http.client.config.RequestConfig) NameValuePair(org.apache.http.NameValuePair) BasicNameValuePair(org.apache.http.message.BasicNameValuePair) IFactoryAppService(org.cerberus.crud.factory.IFactoryAppService) AppService(org.cerberus.crud.entity.AppService) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) BasicCredentialsProvider(org.apache.http.impl.client.BasicCredentialsProvider) CredentialsProvider(org.apache.http.client.CredentialsProvider) UrlEncodedFormEntity(org.apache.http.client.entity.UrlEncodedFormEntity) IOException(java.io.IOException) AnswerItem(org.cerberus.util.answer.AnswerItem) ClientProtocolException(org.apache.http.client.ClientProtocolException) SocketTimeoutException(java.net.SocketTimeoutException) IOException(java.io.IOException) UsernamePasswordCredentials(org.apache.http.auth.UsernamePasswordCredentials) InputStreamEntity(org.apache.http.entity.InputStreamEntity) SocketTimeoutException(java.net.SocketTimeoutException) ByteArrayInputStream(java.io.ByteArrayInputStream) AuthScope(org.apache.http.auth.AuthScope)

Example 22 with HttpPatch

use of org.apache.http.client.methods.HttpPatch in project alien4cloud by alien4cloud.

the class RestClient method patch.

public String patch(String path) throws IOException {
    log.debug("Send patch request to [" + path + "]");
    HttpPatch httpPatch = new HttpPatch(applicationUrl + path);
    CloseableHttpResponse response = httpClient.execute(httpPatch);
    return ResponseUtil.toString(response);
}
Also used : CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse) HttpPatch(org.apache.http.client.methods.HttpPatch)

Example 23 with HttpPatch

use of org.apache.http.client.methods.HttpPatch in project alien4cloud by alien4cloud.

the class RestClient method patchJSon.

public String patchJSon(String path, String jSon) throws IOException {
    log.debug("Send patch json request to [" + path + "], jSon [" + jSon + "]");
    HttpPatch httpPatch = new HttpPatch(applicationUrl + path);
    StringEntity jsonInput = new StringEntity(jSon);
    jsonInput.setContentType("application/json");
    httpPatch.setEntity(jsonInput);
    CloseableHttpResponse response = httpClient.execute(httpPatch);
    return ResponseUtil.toString(response);
}
Also used : StringEntity(org.apache.http.entity.StringEntity) CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse) HttpPatch(org.apache.http.client.methods.HttpPatch)

Example 24 with HttpPatch

use of org.apache.http.client.methods.HttpPatch in project vespa by vespa-engine.

the class JDiscHttpServletTest method requireThatServerRespondsToAllMethods.

@Test
public void requireThatServerRespondsToAllMethods() throws Exception {
    final TestDriver driver = TestDrivers.newInstance(newEchoHandler());
    final URI uri = driver.client().newUri("/status.html");
    driver.client().execute(new HttpGet(uri)).expectStatusCode(is(OK));
    driver.client().execute(new HttpPost(uri)).expectStatusCode(is(OK));
    driver.client().execute(new HttpHead(uri)).expectStatusCode(is(OK));
    driver.client().execute(new HttpPut(uri)).expectStatusCode(is(OK));
    driver.client().execute(new HttpDelete(uri)).expectStatusCode(is(OK));
    driver.client().execute(new HttpOptions(uri)).expectStatusCode(is(OK));
    driver.client().execute(new HttpTrace(uri)).expectStatusCode(is(OK));
    driver.client().execute(new HttpPatch(uri)).expectStatusCode(is(OK));
    assertThat(driver.close(), is(true));
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) HttpTrace(org.apache.http.client.methods.HttpTrace) HttpDelete(org.apache.http.client.methods.HttpDelete) HttpGet(org.apache.http.client.methods.HttpGet) HttpOptions(org.apache.http.client.methods.HttpOptions) URI(java.net.URI) HttpHead(org.apache.http.client.methods.HttpHead) HttpPut(org.apache.http.client.methods.HttpPut) HttpPatch(org.apache.http.client.methods.HttpPatch) Test(org.testng.annotations.Test)

Example 25 with HttpPatch

use of org.apache.http.client.methods.HttpPatch in project vespa by vespa-engine.

the class ConfigServerApiImpl method patch.

public <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType) {
    return tryAllConfigServers(configServer -> {
        HttpPatch patch = new HttpPatch(configServer.resolve(path));
        setContentTypeToApplicationJson(patch);
        patch.setEntity(new StringEntity(mapper.writeValueAsString(bodyJsonPojo)));
        return patch;
    }, wantedReturnType);
}
Also used : StringEntity(org.apache.http.entity.StringEntity) HttpPatch(org.apache.http.client.methods.HttpPatch)

Aggregations

HttpPatch (org.apache.http.client.methods.HttpPatch)33 HttpPost (org.apache.http.client.methods.HttpPost)15 HttpPut (org.apache.http.client.methods.HttpPut)15 IOException (java.io.IOException)13 StringEntity (org.apache.http.entity.StringEntity)13 HttpGet (org.apache.http.client.methods.HttpGet)12 HttpDelete (org.apache.http.client.methods.HttpDelete)11 HttpClient (org.apache.http.client.HttpClient)7 HttpHead (org.apache.http.client.methods.HttpHead)7 URI (java.net.URI)6 HttpRequestBase (org.apache.http.client.methods.HttpRequestBase)6 HttpResponse (org.apache.http.HttpResponse)5 InputStreamEntity (org.apache.http.entity.InputStreamEntity)5 URISyntaxException (java.net.URISyntaxException)4 HashMap (java.util.HashMap)4 URL (org.apache.axis2.util.URL)4 HttpEntity (org.apache.http.HttpEntity)4 HttpOptions (org.apache.http.client.methods.HttpOptions)4 HttpTrace (org.apache.http.client.methods.HttpTrace)4 CloseableHttpClient (org.apache.http.impl.client.CloseableHttpClient)4