com.eviware.soapui.impl.support.HttpUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.eviware.soapui.impl.support.HttpUtils.java

Source

/*
 * SoapUI, Copyright (C) 2004-2017 SmartBear Software
 *
 * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent 
 * versions of the EUPL (the "Licence"); 
 * You may not use this work except in compliance with the Licence. 
 * You may obtain a copy of the Licence at: 
 * 
 * http://ec.europa.eu/idabc/eupl 
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the Licence is 
 * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
 * express or implied. See the Licence for the specific language governing permissions and limitations 
 * under the Licence. 
 */

package com.eviware.soapui.impl.support;

import com.eviware.soapui.support.StringUtils;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;
import org.apache.http.client.utils.URIUtils;

import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.URISyntaxException;
import java.net.URLEncoder;

public class HttpUtils {
    private static String pingErrorMessage;

    public static boolean isErrorStatus(int statusCode) {
        return statusCode >= 400;
    }

    public static String extractHttpHeaderParameter(String headerString, String parameterName) {
        if (!StringUtils.hasContent(headerString) || !StringUtils.hasContent(parameterName)) {
            return null;
        }

        int ix = headerString.indexOf(parameterName + "=\"");
        if (ix > 0) {
            int ix2 = headerString.indexOf('"', ix + parameterName.length() + 2);
            if (ix2 > ix) {
                return headerString.substring(ix + parameterName.length() + 2, ix2);
            }
        }

        return null;
    }

    public static String completeUrlWithHttpIfProtocolIsNotHttpOrHttpsOrPropertyExpansion(String endpoint) {
        if (StringUtils.isNullOrEmpty(endpoint)) {
            return endpoint;
        }
        endpoint = endpoint.trim();
        String lowerCaseEndpoint = endpoint.toLowerCase();
        if (!lowerCaseEndpoint.startsWith("http://") && !lowerCaseEndpoint.startsWith("https://")
                && !endpoint.startsWith("$")) {
            return "http://" + endpoint;
        }

        return endpoint;
    }

    public static String completeUrlWithHttpIfProtocolIsMissing(String endpoint) {
        if (StringUtils.isNullOrEmpty(endpoint)) {
            return endpoint;
        }
        endpoint = endpoint.trim();
        if (!endpoint.contains("://")) {
            return "http://" + endpoint;
        }
        return endpoint;
    }

    public static boolean ping(String host, int timeout) {
        pingErrorMessage = "No Error";
        try {
            InetAddress address = InetAddress.getByName(host);
            return address.isReachable(timeout);
        } catch (Exception e) {
            pingErrorMessage = e.getMessage();
            return false;
        }
    }

    public static String urlEncodeWithUtf8(String input) {
        try {
            return URLEncoder.encode(input, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            // if UTF-8 isn't available we might as well die ...
            throw new Error("Unexpected error: charset UTF-8 not available", e);
        }
    }

    public static String getPingErrorMessage() {
        return pingErrorMessage;
    }

    public static java.net.URI createUri(URI uri) throws URISyntaxException, URIException {
        return createUri(uri.getScheme(), uri.getUserinfo(), uri.getHost(), uri.getPort(), uri.getEscapedPath(),
                uri.getEscapedQuery(), uri.getEscapedFragment());
    }

    public static java.net.URI createUri(String scheme, String userinfo, String host, int port, String escapedPath,
            String escapedQuery, String escapedFragment) throws URISyntaxException {
        return URIUtils.createURI(scheme, (userinfo == null ? "" : (userinfo + "@")) + host, port, escapedPath,
                escapedQuery, escapedFragment);
    }
}