import v1.1.0_RC2 | 2009-09-20

This commit is contained in:
2019-07-17 22:19:00 +02:00
parent 3b7ba80568
commit 38c146901c
2504 changed files with 101817 additions and 62316 deletions

View File

@ -15,9 +15,9 @@
* @category Zend
* @package Zend_Service
* @subpackage Amazon_S3
* @copyright Copyright (c) 2009, Zend Technologies USA Inc. (http://www.zend.com)
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: S3.php 14190 2009-02-28 04:32:18Z jplock $
* @version $Id: S3.php 16971 2009-07-22 18:05:45Z mikaelkael $
*/
/**
@ -36,9 +36,9 @@ require_once 'Zend/Crypt/Hmac.php';
* @category Zend
* @package Zend_Service
* @subpackage Amazon_S3
* @copyright Copyright (c) 2005-2008, Zend Technologies USA Inc. (http://www.zend.com)
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @see http://docs.amazonwebservices.com/AmazonS3/2006-03-01/
* @see http://docs.amazonwebservices.com/AmazonS3/2006-03-01/
*/
class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
{
@ -48,13 +48,14 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
* @var array
*/
protected static $_wrapperClients = array();
/**
* Endpoint for the service
*
* @var Zend_Uri_Http
*/
protected $_endpoint;
/**
* Endpoint for the service
*
* @var Zend_Uri_Http
*/
protected $_endpoint;
const S3_ENDPOINT = 's3.amazonaws.com';
const S3_ACL_PRIVATE = 'private';
@ -65,42 +66,53 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
const S3_REQUESTPAY_HEADER = 'x-amz-request-payer';
const S3_ACL_HEADER = 'x-amz-acl';
const S3_CONTENT_TYPE_HEADER = 'Content-Type';
/**
* Set S3 endpoint to use
*
* @param string|Zend_Uri_Http $endpoint
* @return Zend_Service_Amazon_S3
*/
public function setEndpoint($endpoint)
public function setEndpoint($endpoint)
{
if(!($endpoint instanceof Zend_Uri_Http)) {
$endpoint = Zend_Uri::factory($endpoint);
}
if(!$endpoint->valid()) {
require_once 'Zend/Service/Amazon/S3/Exception.php';
throw new Zend_Service_Amazon_S3_Exception("Invalid endpoint supplied");
}
$this->_endpoint = $endpoint;
return $this;
if (!($endpoint instanceof Zend_Uri_Http)) {
$endpoint = Zend_Uri::factory($endpoint);
}
if (!$endpoint->valid()) {
/**
* @see Zend_Service_Amazon_S3_Exception
*/
require_once 'Zend/Service/Amazon/S3/Exception.php';
throw new Zend_Service_Amazon_S3_Exception('Invalid endpoint supplied');
}
$this->_endpoint = $endpoint;
return $this;
}
/**
* Get current S3 endpoint
*
* @return Zend_Uri_Http
*/
public function getEndpoint()
public function getEndpoint()
{
return $this->_endpoint;
return $this->_endpoint;
}
/**
* Constructor
*
* @param string $accessKey
* @param string $secretKey
* @param string $region
*/
public function __construct($accessKey=null, $secretKey=null, $region=null)
{
parent::__construct($accessKey, $secretKey, $region);
$this->setEndpoint("http://".self::S3_ENDPOINT);
parent::__construct($accessKey, $secretKey, $region);
$this->setEndpoint('http://'.self::S3_ENDPOINT);
}
/**
* Verify if the bucket name is valid
*
@ -133,10 +145,10 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
require_once 'Zend/Service/Amazon/S3/Exception.php';
throw new Zend_Service_Amazon_S3_Exception("Bucket name \"$bucket\" cannot be an IP address");
}
return true;
return true;
}
/**
/**
* Add a new bucket
*
* @param string $bucket
@ -144,19 +156,20 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
*/
public function createBucket($bucket, $location = null)
{
$this->_validBucketName($bucket);
$this->_validBucketName($bucket);
if($location) {
$data = "<CreateBucketConfiguration><LocationConstraint>$location</LocationConstraint></CreateBucketConfiguration>";
} else {
$data = null;
$data = '<CreateBucketConfiguration><LocationConstraint>'.$location.'</LocationConstraint></CreateBucketConfiguration>';
}
else {
$data = null;
}
$response = $this->_makeRequest('PUT', $bucket, null, array(), $data);
return ($response->getStatus() == 200);
}
/**
/**
* Checks if a given bucket name is available
*
* @param string $bucket
@ -295,6 +308,12 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
return $objects;
}
/**
* Make sure the object name is valid
*
* @param string $object
* @return string
*/
protected function _fixupObjectName($object)
{
$nameparts = explode('/', $object);
@ -302,27 +321,28 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
$this->_validBucketName($nameparts[0]);
$firstpart = array_shift($nameparts);
if(count($nameparts) == 0) {
if (count($nameparts) == 0) {
return $firstpart;
}
return $firstpart.'/'.join("/", array_map('rawurlencode',$nameparts));
return $firstpart.'/'.join('/', array_map('rawurlencode', $nameparts));
}
/**
* Get an object
*
* @param string $object
* @param bool $paidobject This is "requestor pays" object
* @param bool $paidobject This is "requestor pays" object
* @return string|false
*/
public function getObject($object, $paidobject = false)
public function getObject($object, $paidobject=false)
{
$object = $this->_fixupObjectName($object);
if($paidobject) {
$response = $this->_makeRequest('GET', $object, null, array(self::S3_REQUESTPAY_HEADER => "requester"));
} else {
$response = $this->_makeRequest('GET', $object);
if ($paidobject) {
$response = $this->_makeRequest('GET', $object, null, array(self::S3_REQUESTPAY_HEADER => 'requester'));
}
else {
$response = $this->_makeRequest('GET', $object);
}
if ($response->getStatus() != 200) {
@ -435,24 +455,26 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
// build the end point out
$parts = explode('/', $path, 2);
$endpoint = clone($this->_endpoint);
if($parts[0]) {
// prepend bucket name to the hostname
$endpoint->setHost($parts[0].".".$endpoint->getHost());
if ($parts[0]) {
// prepend bucket name to the hostname
$endpoint->setHost($parts[0].'.'.$endpoint->getHost());
}
if(!empty($parts[1])) {
$endpoint->setPath('/'.$parts[1]);
} else {
$endpoint->setPath('/');
if($parts[0]) {
$path = $parts[0]."/";
}
if (!empty($parts[1])) {
$endpoint->setPath('/'.$parts[1]);
}
else {
$endpoint->setPath('/');
if ($parts[0]) {
$path = $parts[0].'/';
}
}
self::addSignature($method, $path, $headers);
$client = self::getHttpClient();
$client->resetParameters();
$client->setAuth(false);
// Work around buglet in HTTP client - it doesn't clean headers
// Remove when ZHC is fixed
$client->setHeaders(array('Content-MD5' => null,
@ -460,7 +482,7 @@ class Zend_Service_Amazon_S3 extends Zend_Service_Amazon_Abstract
'Range' => null,
'x-amz-acl' => null));
$client->setUri($endpoint);
$client->setUri($endpoint);
$client->setHeaders($headers);
if (is_array($params)) {