/*
* Copyright 2014 Amazon Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://aws.amazon.com/apache2.0
*
* 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.amediamanager.util;
import java.util.UUID;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.BasicSessionCredentials;
import com.amediamanager.config.ConfigurationSettings;
import com.amediamanager.config.ConfigurationSettings.ConfigProps;
import com.amediamanager.domain.User;
/**
*
* @author evbrown
*
*/
public class VideoUploadFormSigner extends S3FormSigner {
private String s3Bucket;
private String objectKey;
private String keyPrefix;
private String successActionRedirect;
private String encodedPolicy;
private String signature;
private String uuid;
private User user;
private AWSCredentialsProvider credsProvider;
private ConfigurationSettings config;
public VideoUploadFormSigner(String s3Bucket, String keyPrefix, User user, ConfigurationSettings config,
String successActionRedirect) {
this.s3Bucket = s3Bucket;
this.keyPrefix = keyPrefix;
this.successActionRedirect = successActionRedirect;
this.user = user;
this.credsProvider = config.getAWSCredentialsProvider();
this.config = config;
this.uuid = UUID.randomUUID().toString();
String policy = super.generateUploadPolicy(s3Bucket, keyPrefix, credsProvider, successActionRedirect);
String[] policyAndSig = super.signRequest(credsProvider, policy);
// Create object key
generateVideoObjectKey(this.uuid);
// Create policy
this.encodedPolicy = policyAndSig[0];
this.signature = policyAndSig[1];
}
/**
* Generate a unique object key for this upload
*/
private void generateVideoObjectKey(String uuid) {
this.objectKey = this.keyPrefix + "/original/" + user.getId() + "/" + uuid;
}
public AWSCredentialsProvider getCredsProvider() {
return credsProvider;
}
public String getS3Bucket() {
return s3Bucket;
}
public String getS3BucketUrl() {
String region = config.getProperty(ConfigProps.AWS_REGION);
if(region.equals("us-east-1")) {
region = "external-1";
}
String prefix = "s3-" + region;
return "https://" + s3Bucket + "." + prefix + ".amazonaws.com/";
}
public void setS3BucketUrl(String s3BucketUrl) {
this.s3Bucket = s3BucketUrl;
}
public String getObjectKey() {
return objectKey;
}
public void setObjectKey(String objectKey) {
this.objectKey = objectKey;
}
public String getKeyPrefix() {
return keyPrefix;
}
public void setKeyPrefix(String keyPrefix) {
this.keyPrefix = keyPrefix;
}
public Boolean getIsToken() {
return credsProvider.getCredentials() instanceof BasicSessionCredentials;
}
public String getSuccessActionRedirect() {
return successActionRedirect;
}
public void setSuccessActionRedirect(String successActionRedirect) {
this.successActionRedirect = successActionRedirect;
}
public String getEncodedPolicy() {
return encodedPolicy;
}
public void setPolicy(String policy) {
this.encodedPolicy = policy;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
}