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

com.ksyun.ks3.utils.SdkUtils Maven / Gradle / Ivy

package com.ksyun.ks3.utils;

import com.ksyun.ks3.http.HttpMethod;
import com.ksyun.ks3.http.Request;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author chencheng 
 *
 * @date 2019年10月8日 下午4:06:43
 *
 * @description
 **/
public class SdkUtils {

    private static final String DEFAULT_ENCODING = "UTF-8";
    private static final Pattern ENCODED_CHARACTERS_PATTERN;

    public SdkUtils(){

    }

    static {
        StringBuilder pattern = new StringBuilder();
        pattern.append(Pattern.quote("+"))
                .append("|")
                .append(Pattern.quote("*"))
                .append("|")
                .append(Pattern.quote("%7E"))
                .append("|")
                .append(Pattern.quote("%2F"));
        ENCODED_CHARACTERS_PATTERN = Pattern.compile(pattern.toString());
    }

    public static boolean usePayloadForQueryParameters(Request request) {
        boolean requestIsPOST = HttpMethod.POST.equals(request.getMethod());
        boolean requestHasNoPayload = (request.getContent() == null);

        return requestIsPOST && requestHasNoPayload;
    }

    /**
     * Creates an encoded query string from all the parameters in the specified
     * request.
     *
     * @param request
     *            The request containing the parameters to encode.
     *
     * @return Null if no parameters were present, otherwise the encoded query
     *         string for the parameters present in the specified request.
     */
    public static String encodeParameters(Request request) {

        final Map requestParams = request.getQueryParams();
        if (requestParams.isEmpty()) return null;

        final List nameValuePairs = new ArrayList();

        for (Map.Entry entry : requestParams.entrySet()) {
            String parameterName = entry.getKey();
            nameValuePairs.add(new BasicNameValuePair(parameterName, entry.getValue()));
        }

        return URLEncodedUtils.format(nameValuePairs, DEFAULT_ENCODING);
    }


    public static String appendUri(String baseUri, String path) {
        return appendUri(baseUri, path, false);
    }

    public static String appendUri(final String baseUri, String path, final boolean escapeDoubleSlash) {
        String resultUri = baseUri;
        if (path != null && path.length() > 0) {
            if (path.startsWith("/")) {
                // trim the trailing slash in baseUri, since the path already starts with a slash
                if (resultUri.endsWith("/")) {
                    resultUri = resultUri.substring(0, resultUri.length() - 1);
                }
            } else if (!resultUri.endsWith("/")) {
                resultUri += "/";
            }
            if (escapeDoubleSlash) {
                resultUri += path.replace("//", "/%2F");
            } else {
                resultUri += path;
            }
        }

        return resultUri;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy