org.jets3t.service.utils
Class RestUtils

java.lang.Object
  extended byorg.jets3t.service.utils.RestUtils

public class RestUtils
extends java.lang.Object

Utilities useful for REST/HTTP S3Service implementations.


Field Summary
static java.util.List 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
RestUtils()
           
 
Method Summary
static java.lang.String encodeUrlPath(java.lang.String path, java.lang.String delimiter)
          Encodes a URL string but leaves a delimiter string unencoded.
static java.lang.String encodeUrlString(java.lang.String path)
          Encodes a URL string, and ensures that spaces are encoded as "%20" instead of "+" to keep fussy web browsers happier.
static java.lang.String makeCanonicalString(java.lang.String method, java.lang.String resource, java.util.Map headersMap, java.lang.String expires)
          Calculate the canonical string for a REST/HTTP request to S3.
static java.util.Map renameMetadataKeys(java.util.Map metadata)
          Renames metadata property names to be suitable for use as HTTP Headers.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HTTP_HEADER_METADATA_NAMES

public static final java.util.List 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 java.lang.String encodeUrlString(java.lang.String path)
                                        throws S3ServiceException
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:
S3ServiceException

encodeUrlPath

public static java.lang.String encodeUrlPath(java.lang.String path,
                                             java.lang.String delimiter)
                                      throws S3ServiceException
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:
S3ServiceException

makeCanonicalString

public static java.lang.String makeCanonicalString(java.lang.String method,
                                                   java.lang.String resource,
                                                   java.util.Map headersMap,
                                                   java.lang.String expires)
Calculate the canonical string for a REST/HTTP request to S3. When expires is non-null, it will be used instead of the Date header.


renameMetadataKeys

public static java.util.Map renameMetadataKeys(java.util.Map metadata)
Renames metadata property names to be suitable for use as HTTP Headers. This is done by renaming any non-HTTP headers to have the prefix x-amz-meta- and leaving the HTTP header names unchanged. The HTTP header names left unchanged are those found in HTTP_HEADER_METADATA_NAMES

Parameters:
metadata -
Returns:
a map of metadata property name/value pairs renamed to be suitable for use as HTTP headers.