Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2015-2015 Amazon.com, Inc. or its affiliates. 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.
   * A copy of the License is located at
   *
   *  http://aws.amazon.com/apache2.0
   *
  * or in the "license" file accompanying this file. This file 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.
  */
 package com.amazonaws.util;
 
 import java.net.URI;
 import java.util.List;
 import java.util.Map;
 
 
 public class SdkHttpUtils {
 
     private static final String DEFAULT_ENCODING = "UTF-8";

    
Regex which matches any of the sequences that we need to fix up after URLEncoder.encode().
 
     private static final Pattern ENCODED_CHARACTERS_PATTERN;
     static {
         StringBuilder pattern = new StringBuilder();
 
         pattern
             .append(Pattern.quote("+"))
             .append("|")
             .append(Pattern.quote("*"))
             .append("|")
             .append(Pattern.quote("%7E"))
             .append("|")
             .append(Pattern.quote("%2F"));
 
          = Pattern.compile(pattern.toString());
     }

    
Encode a string for use in the path of a URL; uses URLEncoder.encode, (which encodes a string for use in the query portion of a URL), then applies some postfilters to fix things up per the RFC. Can optionally handle strings which are meant to encode a path (ie include '/'es which should NOT be escaped).

Parameters:
value the value to encode
path true if the value is intended to represent a path
Returns:
the encoded value
 
     public static String urlEncode(final String valuefinal boolean path) {
         if (value == null) {
             return "";
         }
 
         try {
             String encoded = URLEncoder.encode(value);
 
             Matcher matcher = .matcher(encoded);
             StringBuffer buffer = new StringBuffer(encoded.length());
 
             while (matcher.find()) {
                 String replacement = matcher.group(0);
 
                 if ("+".equals(replacement)) {
                     replacement = "%20";
                 } else if ("*".equals(replacement)) {
                     replacement = "%2A";
                 } else if ("%7E".equals(replacement)) {
                     replacement = "~";
                 } else if (path && "%2F".equals(replacement)) {
                     replacement = "/";
                 }
 
                 matcher.appendReplacement(bufferreplacement);
             }
 
             matcher.appendTail(buffer);
             return buffer.toString();
 
         } catch (UnsupportedEncodingException ex) {
             throw new RuntimeException(ex);
         }
     }

    
Returns true if the specified URI is using a non-standard port (i.e. any port other than 80 for HTTP URIs or any port other than 443 for HTTPS URIs).

Parameters:
uri
Returns:
True if the specified URI is using a non-standard port, otherwise false.
    public static boolean isUsingNonDefaultPort(URI uri) {
        String scheme = uri.getScheme().toLowerCase();
        int port = uri.getPort();
        if (port <= 0) return false;
        if (scheme.equals("http") && port == 80) return false;
        if (scheme.equals("https") && port == 443) return false;
        return true;
    }
    public static boolean usePayloadForQueryParameters(SignableRequest<?> request) {
        boolean requestIsPOST = ..equals(request.getHttpMethod());
        boolean requestHasNoPayload = (request.getContent() == null);
        return requestIsPOST && requestHasNoPayload;
    }

    
Creates an encoded query string from all the parameters in the specified request.

Parameters:
request The request containing the parameters to encode.
Returns:
Null if no parameters were present, otherwise the encoded query string for the parameters present in the specified request.
    public static String encodeParameters(SignableRequest<?> request) {
        final Map<StringList<String>> requestParams = request.getParameters();
        if (requestParams.isEmpty()) return null;
        final List<NameValuePairnameValuePairs = new ArrayList<NameValuePair>();
        for (Entry<StringList<String>> entry : requestParams.entrySet()) {
            String parameterName = entry.getKey();
            for (String value : entry.getValue()) {
                nameValuePairs
                    .add(new BasicNameValuePair(parameterNamevalue));
            }
        }
        return URLEncodedUtils.format(nameValuePairs);
    }

    
Append the given path to the given baseUri. By default, all slash characters in path will not be url-encoded.
    public static String appendUri(String baseUriString path) {
        return appendUri(baseUripathfalse);
    }

    
Append the given path to the given baseUri.

This method will encode the given path but not the given baseUri.

Parameters:
baseUri The URI to append to (required, may be relative)
path The path to append (may be null or empty)
escapeDoubleSlash Whether double-slash in the path should be escaped to "/%2F"
Returns:
The baseUri with the (encoded) path appended
    public static String appendUri(final String baseUriString pathfinal 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 += "/";
            }
            String encodedPath = SdkHttpUtils.urlEncode(pathtrue);
            if (escapeDoubleSlash) {
                encodedPath = encodedPath.replace("//""/%2F");
            }
            resultUri += encodedPath;
        } else if (!resultUri.endsWith("/")) {
            resultUri += "/";
        }
        return resultUri;
    }
New to GrepCode? Check out our FAQ X