Class RestUtils


  • public class RestUtils
    extends Object
    Utilities useful for REST/HTTP S3Service implementations.
    Author:
    James Murty
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static List<String> HTTP_HEADER_METADATA_NAMES
      A list of HTTP-specific header names, that may be present in S3Objects as metadata but which should be treated as plain HTTP headers during transmission (ie not converted into S3 Object metadata items).
    • Constructor Summary

      Constructors 
      Constructor Description
      RestUtils()  
    • Field Detail

      • HTTP_HEADER_METADATA_NAMES

        public static final List<String> HTTP_HEADER_METADATA_NAMES
        A list of HTTP-specific header names, that may be present in S3Objects as metadata but which should be treated as plain HTTP headers during transmission (ie not converted into S3 Object metadata items). All items in this list are in lower case.

        This list includes the items:

        Unchanged metadata names
        content-type
        content-md5
        content-length
        content-language
        expires
        cache-control
        content-disposition
        content-encoding
    • Constructor Detail

      • RestUtils

        public RestUtils()
    • Method Detail

      • encodeUrlString

        public static String encodeUrlString​(String path)
                                      throws ServiceException
        Encodes a URL string, and ensures that spaces are encoded as "%20" instead of "+" to keep fussy web browsers happier.
        Parameters:
        path -
        Returns:
        encoded URL.
        Throws:
        ServiceException
      • encodeUrlPath

        public static String encodeUrlPath​(String path,
                                           String delimiter)
                                    throws ServiceException
        Encodes a URL string but leaves a delimiter string unencoded. Spaces are encoded as "%20" instead of "+".
        Parameters:
        path -
        delimiter -
        Returns:
        encoded URL string.
        Throws:
        ServiceException
      • initHttpConnection

        public static HttpClientAndConnectionManager initHttpConnection​(AWSRequestAuthorizer awsRequestAuthorizer,
                                                                        org.apache.commons.httpclient.HostConfiguration hostConfig,
                                                                        Jets3tProperties jets3tProperties,
                                                                        String userAgentDescription,
                                                                        org.apache.commons.httpclient.auth.CredentialsProvider credentialsProvider)
        Initialises, or re-initialises, the underlying HttpConnectionManager and HttpClient objects a service will use to communicate with an AWS service. If proxy settings are specified in this service's Jets3tProperties object, these settings will also be passed on to the underlying objects.
        Parameters:
        hostConfig - Custom HTTP host configuration; e.g to register a custom Protocol Socket Factory. This parameter may be null, in which case a default host configuration will be used.
      • initHttpProxy

        public static void initHttpProxy​(org.apache.commons.httpclient.HttpClient httpClient,
                                         Jets3tProperties jets3tProperties)
        Initialises this service's HTTP proxy by auto-detecting the proxy settings.
      • initHttpProxy

        public static void initHttpProxy​(org.apache.commons.httpclient.HttpClient httpClient,
                                         Jets3tProperties jets3tProperties,
                                         String endpoint)
        Initialises this service's HTTP proxy by auto-detecting the proxy settings using the given endpoint.
      • initHttpProxy

        public static void initHttpProxy​(org.apache.commons.httpclient.HttpClient httpClient,
                                         String proxyHostAddress,
                                         int proxyPort,
                                         Jets3tProperties jets3tProperties)
        Initialises this service's HTTP proxy with the given proxy settings.
        Parameters:
        proxyHostAddress -
        proxyPort -
      • initHttpProxy

        public static void initHttpProxy​(org.apache.commons.httpclient.HttpClient httpClient,
                                         Jets3tProperties jets3tProperties,
                                         String proxyHostAddress,
                                         int proxyPort,
                                         String proxyUser,
                                         String proxyPassword,
                                         String proxyDomain)
        Initialises this service's HTTP proxy for authentication using the given proxy settings.
        Parameters:
        proxyHostAddress -
        proxyPort -
        proxyUser -
        proxyPassword -
        proxyDomain - if a proxy domain is provided, an NTCredentials credential provider will be used. If the proxy domain is null, a UsernamePasswordCredentials credentials provider will be used.
      • initHttpProxy

        public static void initHttpProxy​(org.apache.commons.httpclient.HttpClient httpClient,
                                         Jets3tProperties jets3tProperties,
                                         boolean proxyAutodetect,
                                         String proxyHostAddress,
                                         int proxyPort,
                                         String proxyUser,
                                         String proxyPassword,
                                         String proxyDomain)
        Parameters:
        httpClient -
        proxyAutodetect -
        proxyHostAddress -
        proxyPort -
        proxyUser -
        proxyPassword -
        proxyDomain -
      • initHttpProxy

        public static void initHttpProxy​(org.apache.commons.httpclient.HttpClient httpClient,
                                         Jets3tProperties jets3tProperties,
                                         boolean proxyAutodetect,
                                         String proxyHostAddress,
                                         int proxyPort,
                                         String proxyUser,
                                         String proxyPassword,
                                         String proxyDomain,
                                         String endpoint)
        Parameters:
        httpClient -
        proxyAutodetect -
        proxyHostAddress -
        proxyPort -
        proxyUser -
        proxyPassword -
        proxyDomain -
        endpoint -
      • getAWSTimeAdjustment

        public static long getAWSTimeAdjustment()
                                         throws Exception
        Calculates a time offset value to reflect the time difference between your computer's clock and the current time according to an AWS server, and returns the calculated time difference. Ideally you should not rely on this method to overcome clock-related disagreements between your computer and AWS. If you computer is set to update its clock periodically and has the correct timezone setting you should never have to resort to this work-around.
        Throws:
        Exception
      • convertHeadersToMap

        public static Map<String,​String> convertHeadersToMap​(org.apache.commons.httpclient.Header[] headers)