var expires = int(getTickCount() / 1000) + timeout;
			var signature = "";
			var destUrl = "";
	
			signature = getRequestSignature(
				uCase(verb),
				bucket,
				objectKey,
				expires
			);
			if (requestType EQ "ssl" OR requestType EQ "regular") {
				destUrl = "http" & iif(requestType EQ "ssl", de("s"), de("")) & "://s3.amazonaws.com/#listAppend(bucket, objectKey, '/')#?AWSAccessKeyId=#variables.awsKey#&Signature=#urlEncodedFormat(signature)#&Expires=#expires#";
			} else if (requestType EQ "cname") {
				destUrl = "http://#bucket#/#objectKey#?AWSAccessKeyId=#variables.awsKey#&Signature=#urlEncodedFormat(signature)#&Expires=#expires#";
			} else { // vhost
				destUrl = "http://#bucket#.s3.amazonaws.com/#objectKey#?AWSAccessKeyId=#variables.awsKey#&Signature=#urlEncodedFormat(signature)#&Expires=#expires#";
			}
			return destUrl;
		
	
	
	
		
		
		
		
		
		
		
		
		
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
				
			
		
		
	
	
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
			
		
			
		
		
		
		
			
		
		
		
		
			
				
			
			
		
		
		
		
		
			
				
				
					
				
				
					
					
					
					
					
					
					
					
				
			
				
				
				
					
				
				
				
				
				
				
				
			
				
				
			
		
		
			
			
			s
			
			
			
				
			
		
		
	
	
	
		
		
		
		
		
		
		
		
		
		
		
		
			
			
			
			
				
			
			
		
		
		
	
	
	
	
		
		
		
		
			
				
			
		
		
		 
	
	
		
		
		
	
	
		
		
		
		
		
		
			
		
		
			InternalError"
				)
				OR (result.fileContent EQ "Connection Timeout"
				)
			)>
			
				
			
				
				
				
			
		
		
	
	
	
		
		
		
		
		
		
			
		
			
		
		
			
			
				
				
			
		
		
			
			
				
				
			
		
		
			
		
		
	
	
	
	
	
		
		
		
		
			
			
				
			
		
	
	
	
	
		
		
		
		
		
		
		
		
			var stringToSign = "";
			var algo = "HmacSHA1";
			var signingKey = "";
			var mac = "";
			var signature = "";
			
			stringToSign = uCase(verb) & chr(10)
				& contentMd5 & chr(10)
				& contentType & chr(10)
				& dateOrExpiration & chr(10)
				& iif(len(canonicalizedAmzHeaders) GT 0, de(canonicalizedAmzHeaders & chr(10)), de(''))
				& "/" & listAppend(bucket, objectKey, "/");
			signingKey = createObject("java", "javax.crypto.spec.SecretKeySpec").init(variables.awsSecret.getBytes(), algo);
			mac = createObject("java", "javax.crypto.Mac").getInstance(algo);
			mac.init(signingKey);
			signature = toBase64(mac.doFinal(stringToSign.getBytes()));
			return signature;