Make s3 domain dynamic to support different s3 regions

Change-Id: If8f9e85368c56d88bb6ae9efe1b3a29cc18cc1d5
Signed-off-by: Matthew Spurrier <matthew@spurrier.com.au>
This commit is contained in:
Matthew Spurrier 2015-01-29 18:19:58 +08:00 committed by Shawn Pearce
parent 1e694f3847
commit 1383bdd5bc
1 changed files with 10 additions and 4 deletions

View File

@ -115,8 +115,6 @@ public class AmazonS3 {
private static final String HMAC = "HmacSHA1"; //$NON-NLS-1$
private static final String DOMAIN = "s3.amazonaws.com"; //$NON-NLS-1$
private static final String X_AMZ_ACL = "x-amz-acl"; //$NON-NLS-1$
private static final String X_AMZ_META = "x-amz-meta-"; //$NON-NLS-1$
@ -185,6 +183,9 @@ private static MessageDigest newMD5() {
/** Directory for locally buffered content. */
private final File tmpDir;
/** S3 Bucket Domain. */
private final String domain;
/**
* Create a new S3 client for the supplied user information.
* <p>
@ -201,6 +202,10 @@ private static MessageDigest newMD5() {
* # PRIVATE, PUBLIC_READ (defaults to PRIVATE).
* acl: PRIVATE
*
* # S3 Domain
* # AWS S3 Region Domain (defaults to s3.amazonaws.com)
* domain: s3.amazonaws.com
*
* # Number of times to retry after internal error from S3.
* httpclient.retry-max: 3
*
@ -214,6 +219,7 @@ private static MessageDigest newMD5() {
*
*/
public AmazonS3(final Properties props) {
domain = props.getProperty("domain", "s3.amazonaws.com"); //$NON-NLS-1$ //$NON-NLS-2$
publicKey = props.getProperty("accesskey"); //$NON-NLS-1$
if (publicKey == null)
throw new IllegalArgumentException(JGitText.get().missingAccesskey);
@ -558,7 +564,7 @@ private HttpURLConnection open(final String method, final String bucket,
urlstr.append("http://"); //$NON-NLS-1$
urlstr.append(bucket);
urlstr.append('.');
urlstr.append(DOMAIN);
urlstr.append(domain);
urlstr.append('/');
if (key.length() > 0)
HttpSupport.encode(urlstr, key);
@ -619,7 +625,7 @@ private void authorize(final HttpURLConnection c) throws IOException {
final String host = c.getURL().getHost();
s.append('/');
s.append(host.substring(0, host.length() - DOMAIN.length() - 1));
s.append(host.substring(0, host.length() - domain.length() - 1));
s.append(c.getURL().getPath());
final String sec;