2415 lines
109 KiB
PHP
2415 lines
109 KiB
PHP
<?php
|
|
|
|
namespace UnitTests\Transform;
|
|
|
|
use AlibabaCloud\Oss\V2\Exception\DeserializationExecption;
|
|
use AlibabaCloud\Oss\V2\Models;
|
|
use AlibabaCloud\Oss\V2\Transform\BucketBasic;
|
|
use AlibabaCloud\Oss\V2\OperationOutput;
|
|
use AlibabaCloud\Oss\V2\Exception;
|
|
use AlibabaCloud\Oss\V2\Utils;
|
|
|
|
class BucketBasicTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
public function testFromPutBucket()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\PutBucketRequest();
|
|
$input = BucketBasic::fromPutBucket($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\PutBucketRequest('bucket-123');
|
|
$input = BucketBasic::fromPutBucket($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// all settings
|
|
$request = new Models\PutBucketRequest(
|
|
'bucket-123',
|
|
Models\BucketACLType::PRIVATE,
|
|
'rg-123',
|
|
new Models\CreateBucketConfiguration(
|
|
Models\StorageClassType::IA,
|
|
Models\DataRedundancyType::LRS
|
|
)
|
|
);
|
|
$createXml = <<<BBB
|
|
<?xml version="1.0" encoding="UTF-8"?><CreateBucketConfiguration><StorageClass>IA</StorageClass><DataRedundancyType>LRS</DataRedundancyType></CreateBucketConfiguration>
|
|
BBB;
|
|
|
|
$input = BucketBasic::fromPutBucket($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$str = $input->getBody()->getContents();
|
|
$this->assertEquals(base64_encode(md5($str, true)), $input->getHeaders()['content-md5']);
|
|
$this->assertEquals(Models\BucketACLType::PRIVATE, $input->getHeaders()['x-oss-acl']);
|
|
$this->assertEquals('rg-123', $input->getHeaders()['x-oss-resource-group-id']);
|
|
$this->assertEquals($createXml, $this->cleanXml($str));
|
|
$this->assertStringContainsString('<CreateBucketConfiguration>', $str);
|
|
$xml = \simplexml_load_string($str);
|
|
$this->assertEquals(2, $xml->count());
|
|
$this->assertEquals('IA', $xml->StorageClass);
|
|
$this->assertEquals('LRS', $xml->DataRedundancyType);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\PutBucketRequest(
|
|
'bucket-123',
|
|
null,
|
|
null,
|
|
null,
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromPutBucket($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToPutBucket()
|
|
{
|
|
// empty output
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toPutBucket($output);
|
|
$this->assertEquals('', $result->status);
|
|
$this->assertEquals(0, $result->statusCode);
|
|
$this->assertEquals('', $result->requestId);
|
|
$this->assertEquals(0, count($result->headers));
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test']
|
|
);
|
|
$result = BucketBasic::toPutBucket($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
}
|
|
|
|
public function testFromDeleteBucket()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\DeleteBucketRequest();
|
|
$input = BucketBasic::fromDeleteBucket($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\DeleteBucketRequest('bucket-123');
|
|
$input = BucketBasic::fromDeleteBucket($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\DeleteBucketRequest(
|
|
'bucket-123',
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromDeleteBucket($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToDeleteBucket()
|
|
{
|
|
// empty output
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toDeleteBucket($output);
|
|
$this->assertEquals('', $result->status);
|
|
$this->assertEquals(0, $result->statusCode);
|
|
$this->assertEquals('', $result->requestId);
|
|
$this->assertEquals(0, count($result->headers));
|
|
|
|
$output = new OperationOutput(
|
|
'No Content',
|
|
204,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test']
|
|
);
|
|
$result = BucketBasic::toDeleteBucket($output);
|
|
$this->assertEquals('No Content', $result->status);
|
|
$this->assertEquals(204, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
}
|
|
|
|
public function testFromGetBucketInfo()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\GetBucketInfoRequest();
|
|
$input = BucketBasic::fromGetBucketInfo($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\GetBucketInfoRequest('bucket-123');
|
|
$input = BucketBasic::fromGetBucketInfo($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\GetBucketInfoRequest(
|
|
'bucket-123',
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromGetBucketInfo($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToGetBucketInfo()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toGetBucketInfo($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <BucketInfo>', $e);
|
|
}
|
|
|
|
// xml invalid
|
|
try {
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor('<?xml version="1.0" encoding="UTF-8"?><BucketInfo></BucketInfo>')
|
|
);
|
|
$result = BucketBasic::toGetBucketInfo($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <Bucket>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<BucketInfo>
|
|
<Bucket>
|
|
</Bucket>
|
|
</BucketInfo>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketInfo($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNotEmpty($result->bucketInfo);
|
|
$this->assertNull($result->bucketInfo->name);
|
|
$this->assertNull($result->bucketInfo->accessMonitor);
|
|
$this->assertNull($result->bucketInfo->location);
|
|
$this->assertNull($result->bucketInfo->creationDate);
|
|
$this->assertNull($result->bucketInfo->extranetEndpoint);
|
|
$this->assertNull($result->bucketInfo->intranetEndpoint);
|
|
$this->assertNull($result->bucketInfo->acl);
|
|
$this->assertNull($result->bucketInfo->dataRedundancyType);
|
|
$this->assertNull($result->bucketInfo->owner);
|
|
$this->assertNull($result->bucketInfo->storageClass);
|
|
$this->assertNull($result->bucketInfo->resourceGroupId);
|
|
$this->assertNull($result->bucketInfo->sseRule);
|
|
$this->assertNull($result->bucketInfo->versioning);
|
|
$this->assertNull($result->bucketInfo->transferAcceleration);
|
|
$this->assertNull($result->bucketInfo->crossRegionReplication);
|
|
$this->assertNull($result->bucketInfo->comment);
|
|
$this->assertNull($result->bucketInfo->blockPublicAccess);
|
|
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<BucketInfo>
|
|
<Bucket>
|
|
<AccessMonitor>Enabled</AccessMonitor>
|
|
<CreationDate>2023-12-17T03:30:09.000Z</CreationDate>
|
|
<ExtranetEndpoint>oss-cn-hangzhou.aliyuncs.com</ExtranetEndpoint>
|
|
<IntranetEndpoint>oss-cn-hangzhou-internal.aliyuncs.com</IntranetEndpoint>
|
|
<Location>oss-cn-hangzhou</Location>
|
|
<StorageClass>Standard</StorageClass>
|
|
<TransferAcceleration>Disabled</TransferAcceleration>
|
|
<CrossRegionReplication>Disabled</CrossRegionReplication>
|
|
<DataRedundancyType>LRS</DataRedundancyType>
|
|
<Name>oss-example</Name>
|
|
<ResourceGroupId>rg-aek27tc********</ResourceGroupId>
|
|
<Owner>
|
|
<DisplayName>username</DisplayName>
|
|
<ID>27183473914****</ID>
|
|
</Owner>
|
|
<AccessControlList>
|
|
<Grant>private</Grant>
|
|
</AccessControlList>
|
|
<Versioning>Suspended</Versioning>
|
|
<Comment>test</Comment>
|
|
<ServerSideEncryptionRule>
|
|
<SSEAlgorithm>KMS</SSEAlgorithm>
|
|
<KMSMasterKeyID>123</KMSMasterKeyID>
|
|
</ServerSideEncryptionRule>
|
|
<BucketPolicy>
|
|
<LogBucket>examplebucket</LogBucket>
|
|
<LogPrefix>log/</LogPrefix>
|
|
</BucketPolicy>
|
|
<BlockPublicAccess>true</BlockPublicAccess>
|
|
</Bucket>
|
|
</BucketInfo>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketInfo($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNotEmpty($result->bucketInfo);
|
|
|
|
$datetimeUtc = new \DateTime();
|
|
$datetimeUtc->setTimestamp(1702783809);
|
|
$this->assertEquals('oss-example', $result->bucketInfo->name);
|
|
$this->assertEquals('Enabled', $result->bucketInfo->accessMonitor);
|
|
$this->assertEquals('oss-cn-hangzhou', $result->bucketInfo->location);
|
|
$this->assertEquals($datetimeUtc, $result->bucketInfo->creationDate);
|
|
$this->assertEquals('oss-cn-hangzhou.aliyuncs.com', $result->bucketInfo->extranetEndpoint);
|
|
$this->assertEquals('oss-cn-hangzhou-internal.aliyuncs.com', $result->bucketInfo->intranetEndpoint);
|
|
$this->assertEquals('private', $result->bucketInfo->acl);
|
|
$this->assertEquals('LRS', $result->bucketInfo->dataRedundancyType);
|
|
$this->assertEquals('27183473914****', $result->bucketInfo->owner->id);
|
|
$this->assertEquals('username', $result->bucketInfo->owner->displayName);
|
|
$this->assertEquals('Standard', $result->bucketInfo->storageClass);
|
|
$this->assertEquals('rg-aek27tc********', $result->bucketInfo->resourceGroupId);
|
|
$this->assertEquals('KMS', $result->bucketInfo->sseRule->sseAlgorithm);
|
|
$this->assertEquals('123', $result->bucketInfo->sseRule->kmsMasterKeyId);
|
|
$this->assertNull($result->bucketInfo->sseRule->kmsDataEncryption);
|
|
$this->assertEquals('Suspended', $result->bucketInfo->versioning);
|
|
$this->assertEquals('Disabled', $result->bucketInfo->transferAcceleration);
|
|
$this->assertEquals('Disabled', $result->bucketInfo->crossRegionReplication);
|
|
|
|
$this->assertEquals('test', $result->bucketInfo->comment);
|
|
$this->assertEquals('examplebucket', $result->bucketInfo->bucketPolicy->logBucket);
|
|
$this->assertEquals('log/', $result->bucketInfo->bucketPolicy->logPrefix);
|
|
$this->assertEquals(true, $result->bucketInfo->blockPublicAccess);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<BucketInfo>
|
|
<Bucket>
|
|
<AccessMonitor></AccessMonitor>
|
|
<CreationDate></CreationDate>
|
|
<ExtranetEndpoint></ExtranetEndpoint>
|
|
<IntranetEndpoint></IntranetEndpoint>
|
|
<Location></Location>
|
|
<StorageClass></StorageClass>
|
|
<TransferAcceleration></TransferAcceleration>
|
|
<CrossRegionReplication></CrossRegionReplication>
|
|
<DataRedundancyType></DataRedundancyType>
|
|
<Name></Name>
|
|
<ResourceGroupId></ResourceGroupId>
|
|
<Owner>
|
|
<DisplayName></DisplayName>
|
|
<ID></ID>
|
|
</Owner>
|
|
<AccessControlList>
|
|
<Grant></Grant>
|
|
</AccessControlList>
|
|
<Versioning></Versioning>
|
|
<Comment></Comment>
|
|
<ServerSideEncryptionRule>
|
|
<SSEAlgorithm></SSEAlgorithm>
|
|
<KMSMasterKeyID>/</KMSMasterKeyID>
|
|
</ServerSideEncryptionRule>
|
|
<BucketPolicy>
|
|
<LogBucket></LogBucket>
|
|
<LogPrefix>/</LogPrefix>
|
|
</BucketPolicy>
|
|
<BlockPublicAccess></BlockPublicAccess>
|
|
</Bucket>
|
|
</BucketInfo>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketInfo($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNotEmpty($result->bucketInfo);
|
|
$this->assertEquals('', $result->bucketInfo->name);
|
|
$this->assertEquals('', $result->bucketInfo->accessMonitor);
|
|
$this->assertEquals('', $result->bucketInfo->location);
|
|
}
|
|
|
|
public function testFromGetBucketLocation()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\GetBucketLocationRequest();
|
|
$input = BucketBasic::fromGetBucketLocation($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\GetBucketLocationRequest('bucket-123');
|
|
$input = BucketBasic::fromGetBucketLocation($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\GetBucketLocationRequest(
|
|
'bucket-123',
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromGetBucketLocation($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToGetBucketLocation()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toGetBucketLocation($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <LocationConstraint>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<LocationConstraint></LocationConstraint>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketLocation($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('', $result->location);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<LocationConstraint>oss-cn-hangzhou</LocationConstraint>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketLocation($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('oss-cn-hangzhou', $result->location);
|
|
}
|
|
|
|
public function testFromGetBucketStat()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\GetBucketStatRequest();
|
|
$input = BucketBasic::fromGetBucketStat($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\GetBucketStatRequest('bucket-123');
|
|
$input = BucketBasic::fromGetBucketStat($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\GetBucketStatRequest(
|
|
'bucket-123',
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromGetBucketStat($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToGetBucketStat()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toGetBucketStat($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <BucketStat>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<BucketStat></BucketStat>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketStat($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->storage);
|
|
$this->assertNull($result->objectCount);
|
|
$this->assertNull($result->multipartUploadCount);
|
|
$this->assertNull($result->liveChannelCount);
|
|
$this->assertNull($result->lastModifiedTime);
|
|
$this->assertNull($result->standardStorage);
|
|
$this->assertNull($result->standardObjectCount);
|
|
$this->assertNull($result->infrequentAccessStorage);
|
|
$this->assertNull($result->infrequentAccessRealStorage);
|
|
$this->assertNull($result->infrequentAccessObjectCount);
|
|
$this->assertNull($result->archiveStorage);
|
|
$this->assertNull($result->archiveRealStorage);
|
|
$this->assertNull($result->archiveObjectCount);
|
|
$this->assertNull($result->coldArchiveStorage);
|
|
$this->assertNull($result->coldArchiveRealStorage);
|
|
$this->assertNull($result->coldArchiveObjectCount);
|
|
$this->assertNull($result->deepColdArchiveStorage);
|
|
$this->assertNull($result->deepColdArchiveRealStorage);
|
|
$this->assertNull($result->deepColdArchiveObjectCount);
|
|
$this->assertNull($result->deleteMarkerCount);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<BucketStat>
|
|
<Storage>1600</Storage>
|
|
<ObjectCount>230</ObjectCount>
|
|
<MultipartUploadCount>40</MultipartUploadCount>
|
|
<LiveChannelCount>4</LiveChannelCount>
|
|
<LastModifiedTime>1643341269</LastModifiedTime>
|
|
<StandardStorage>430</StandardStorage>
|
|
<StandardObjectCount>66</StandardObjectCount>
|
|
<InfrequentAccessStorage>2359296</InfrequentAccessStorage>
|
|
<InfrequentAccessRealStorage>360</InfrequentAccessRealStorage>
|
|
<InfrequentAccessObjectCount>54</InfrequentAccessObjectCount>
|
|
<ArchiveStorage>2949120</ArchiveStorage>
|
|
<ArchiveRealStorage>450</ArchiveRealStorage>
|
|
<ArchiveObjectCount>74</ArchiveObjectCount>
|
|
<ColdArchiveStorage>2359296</ColdArchiveStorage>
|
|
<ColdArchiveRealStorage>360</ColdArchiveRealStorage>
|
|
<ColdArchiveObjectCount>36</ColdArchiveObjectCount>
|
|
<DeepColdArchiveStorage>235929</DeepColdArchiveStorage>
|
|
<DeepColdArchiveRealStorage>30</DeepColdArchiveRealStorage>
|
|
<DeepColdArchiveObjectCount>361</DeepColdArchiveObjectCount>
|
|
<DeleteMarkerCount>1361</DeleteMarkerCount>
|
|
</BucketStat>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketStat($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals(1600, $result->storage);
|
|
$this->assertEquals(230, $result->objectCount);
|
|
$this->assertEquals(40, $result->multipartUploadCount);
|
|
$this->assertEquals(4, $result->liveChannelCount);
|
|
$this->assertEquals(1643341269, $result->lastModifiedTime);
|
|
$this->assertEquals(430, $result->standardStorage);
|
|
$this->assertEquals(66, $result->standardObjectCount);
|
|
$this->assertEquals(2359296, $result->infrequentAccessStorage);
|
|
$this->assertEquals(360, $result->infrequentAccessRealStorage);
|
|
$this->assertEquals(54, $result->infrequentAccessObjectCount);
|
|
$this->assertEquals(2949120, $result->archiveStorage);
|
|
$this->assertEquals(450, $result->archiveRealStorage);
|
|
$this->assertEquals(74, $result->archiveObjectCount);
|
|
$this->assertEquals(2359296, $result->coldArchiveStorage);
|
|
$this->assertEquals(360, $result->coldArchiveRealStorage);
|
|
$this->assertEquals(36, $result->coldArchiveObjectCount);
|
|
$this->assertEquals(235929, $result->deepColdArchiveStorage);
|
|
$this->assertEquals(30, $result->deepColdArchiveRealStorage);
|
|
$this->assertEquals(361, $result->deepColdArchiveObjectCount);
|
|
$this->assertEquals(1361, $result->deleteMarkerCount);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<BucketStat>
|
|
<Storage></Storage>
|
|
<ObjectCount></ObjectCount>
|
|
<MultipartUploadCount></MultipartUploadCount>
|
|
<LiveChannelCount></LiveChannelCount>
|
|
<LastModifiedTime></LastModifiedTime>
|
|
<StandardStorage></StandardStorage>
|
|
<StandardObjectCount></StandardObjectCount>
|
|
<InfrequentAccessStorage></InfrequentAccessStorage>
|
|
<InfrequentAccessRealStorage></InfrequentAccessRealStorage>
|
|
<InfrequentAccessObjectCount></InfrequentAccessObjectCount>
|
|
<ArchiveStorage></ArchiveStorage>
|
|
<ArchiveRealStorage></ArchiveRealStorage>
|
|
<ArchiveObjectCount></ArchiveObjectCount>
|
|
<ColdArchiveStorage></ColdArchiveStorage>
|
|
<ColdArchiveRealStorage></ColdArchiveRealStorage>
|
|
<ColdArchiveObjectCount></ColdArchiveObjectCount>
|
|
<DeepColdArchiveStorage></DeepColdArchiveStorage>
|
|
<DeepColdArchiveRealStorage></DeepColdArchiveRealStorage>
|
|
<DeepColdArchiveObjectCount></DeepColdArchiveObjectCount>
|
|
<DeleteMarkerCount></DeleteMarkerCount>
|
|
</BucketStat>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketStat($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals(0, $result->storage);
|
|
$this->assertEquals(0, $result->objectCount);
|
|
$this->assertEquals(0, $result->multipartUploadCount);
|
|
$this->assertEquals(0, $result->liveChannelCount);
|
|
$this->assertEquals(0, $result->lastModifiedTime);
|
|
$this->assertEquals(0, $result->standardStorage);
|
|
$this->assertEquals(0, $result->standardObjectCount);
|
|
$this->assertEquals(0, $result->infrequentAccessStorage);
|
|
$this->assertEquals(0, $result->infrequentAccessRealStorage);
|
|
$this->assertEquals(0, $result->infrequentAccessObjectCount);
|
|
$this->assertEquals(0, $result->archiveStorage);
|
|
$this->assertEquals(0, $result->archiveRealStorage);
|
|
$this->assertEquals(0, $result->archiveObjectCount);
|
|
$this->assertEquals(0, $result->coldArchiveStorage);
|
|
$this->assertEquals(0, $result->coldArchiveRealStorage);
|
|
$this->assertEquals(0, $result->coldArchiveObjectCount);
|
|
$this->assertEquals(0, $result->deepColdArchiveStorage);
|
|
$this->assertEquals(0, $result->deepColdArchiveRealStorage);
|
|
$this->assertEquals(0, $result->deepColdArchiveObjectCount);
|
|
$this->assertEquals(0, $result->deleteMarkerCount);
|
|
}
|
|
|
|
public function testFromGetBucketVersioning()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\GetBucketVersioningRequest();
|
|
$input = BucketBasic::fromGetBucketVersioning($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\GetBucketVersioningRequest('bucket-123');
|
|
$input = BucketBasic::fromGetBucketVersioning($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\GetBucketVersioningRequest(
|
|
'bucket-123',
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromGetBucketVersioning($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToGetBucketVersioning()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toGetBucketVersioning($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <VersioningConfiguration>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<VersioningConfiguration></VersioningConfiguration>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketVersioning($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNotNull($result->versioningConfiguration);
|
|
$this->assertNull($result->versioningConfiguration->status);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<VersioningConfiguration>
|
|
<Status>Enabled</Status>
|
|
</VersioningConfiguration>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketVersioning($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals(Models\BucketVersioningStatusType::ENABLED, $result->versioningConfiguration->status);
|
|
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<VersioningConfiguration>
|
|
<Status></Status>
|
|
</VersioningConfiguration>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketVersioning($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('', $result->versioningConfiguration->status);
|
|
}
|
|
|
|
public function testFromPutBucketVersioning()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\PutBucketVersioningRequest();
|
|
$input = BucketBasic::fromPutBucketVersioning($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\PutBucketVersioningRequest('bucket-123');
|
|
$input = BucketBasic::fromPutBucketVersioning($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// all settings
|
|
$request = new Models\PutBucketVersioningRequest(
|
|
'bucket-123',
|
|
new Models\VersioningConfiguration('Enabled'),
|
|
);
|
|
$input = BucketBasic::fromPutBucketVersioning($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$str = $input->getBody()->getContents();
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals(base64_encode(md5($str, true)), $input->getHeaders()['content-md5']);
|
|
$createXml = <<<BBB
|
|
<?xml version="1.0" encoding="UTF-8"?><VersioningConfiguration><Status>Enabled</Status></VersioningConfiguration>
|
|
BBB;
|
|
$this->assertEquals($createXml, $this->cleanXml($str));
|
|
|
|
$this->assertStringContainsString('<VersioningConfiguration>', $str);
|
|
$xml = \simplexml_load_string($str);
|
|
$this->assertEquals(1, $xml->count());
|
|
$this->assertEquals('Enabled', $xml->Status);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\PutBucketVersioningRequest(
|
|
'bucket-123',
|
|
null,
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromPutBucketVersioning($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToPutBucketVersioning()
|
|
{
|
|
// empty output
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toPutBucketVersioning($output);
|
|
$this->assertEquals('', $result->status);
|
|
$this->assertEquals(0, $result->statusCode);
|
|
$this->assertEquals('', $result->requestId);
|
|
$this->assertEquals(0, count($result->headers));
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test']
|
|
);
|
|
$result = BucketBasic::toPutBucketVersioning($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
}
|
|
|
|
public function testFromPutBucketAcl()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\PutBucketAclRequest();
|
|
$input = BucketBasic::fromPutBucketAcl($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
try {
|
|
$request = new Models\PutBucketAclRequest('bucket-123');
|
|
$input = BucketBasic::fromPutBucketAcl($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, acl", (string)$e);
|
|
}
|
|
|
|
// all settings
|
|
$request = new Models\PutBucketAclRequest(
|
|
'bucket-123',
|
|
Models\BucketACLType::PRIVATE,
|
|
);
|
|
$input = BucketBasic::fromPutBucketAcl($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals(Models\BucketACLType::PRIVATE, $input->getHeaders()['x-oss-acl']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\PutBucketAclRequest(
|
|
'bucket-123',
|
|
Models\BucketACLType::PUBLIC_READ,
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromPutBucketAcl($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
$this->assertEquals(Models\BucketACLType::PUBLIC_READ, $input->getHeaders()['x-oss-acl']);
|
|
}
|
|
|
|
public function testToPutBucketAcl()
|
|
{
|
|
// empty output
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toPutBucketAcl($output);
|
|
$this->assertEquals('', $result->status);
|
|
$this->assertEquals(0, $result->statusCode);
|
|
$this->assertEquals('', $result->requestId);
|
|
$this->assertEquals(0, count($result->headers));
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test']
|
|
);
|
|
$result = BucketBasic::toPutBucketAcl($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
}
|
|
|
|
public function testFromGetBucketAcl()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\GetBucketAclRequest();
|
|
$input = BucketBasic::fromGetBucketAcl($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\GetBucketAclRequest('bucket-123');
|
|
$input = BucketBasic::fromGetBucketAcl($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\GetBucketAclRequest(
|
|
'bucket-123',
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromGetBucketAcl($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToGetBucketAcl()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toGetBucketAcl($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <AccessControlPolicy>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<AccessControlPolicy></AccessControlPolicy>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketAcl($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->owner);
|
|
$this->assertNull($result->accessControlList);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<AccessControlPolicy>
|
|
<Owner>
|
|
<ID>0022012****</ID>
|
|
<DisplayName>user_example</DisplayName>
|
|
</Owner>
|
|
<AccessControlList>
|
|
<Grant>public-read</Grant>
|
|
</AccessControlList>
|
|
</AccessControlPolicy>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketAcl($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('0022012****', $result->owner->id);
|
|
$this->assertEquals('user_example', $result->owner->displayName);
|
|
$this->assertEquals(Models\BucketACLType::PUBLIC_READ, $result->accessControlList->grant);
|
|
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<AccessControlPolicy>
|
|
<Owner>
|
|
</Owner>
|
|
<AccessControlList>
|
|
</AccessControlList>
|
|
</AccessControlPolicy>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toGetBucketAcl($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->owner->id);
|
|
$this->assertNull($result->owner->displayName);
|
|
$this->assertNull($result->accessControlList->grant);
|
|
}
|
|
|
|
public function testFromListObjects()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\ListObjectsRequest();
|
|
$input = BucketBasic::fromListObjects($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\ListObjectsRequest('bucket-123');
|
|
$input = BucketBasic::fromListObjects($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// all settings
|
|
$request = new Models\ListObjectsRequest(
|
|
'bucket-123',
|
|
'deli-123',
|
|
'url',
|
|
'marker-123',
|
|
123,
|
|
'prefix-123',
|
|
'requester'
|
|
);
|
|
$input = BucketBasic::fromListObjects($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('deli-123', $input->getParameters()['delimiter']);
|
|
$this->assertEquals('marker-123', $input->getParameters()['marker']);
|
|
$this->assertEquals('url', $input->getParameters()['encoding-type']);
|
|
$this->assertEquals('123', $input->getParameters()['max-keys']);
|
|
$this->assertEquals('prefix-123', $input->getParameters()['prefix']);
|
|
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\ListObjectsRequest(
|
|
'bucket-123',
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromListObjects($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToListObjects()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toListObjects($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <ListBucketResult>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult></ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListObjects($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->name);
|
|
$this->assertNull($result->prefix);
|
|
$this->assertNull($result->marker);
|
|
$this->assertNull($result->maxKeys);
|
|
$this->assertNull($result->delimiter);
|
|
$this->assertNull($result->isTruncated);
|
|
$this->assertNull($result->encodingType);
|
|
$this->assertNull($result->nextMarker);
|
|
$this->assertNull($result->contents);
|
|
$this->assertNull($result->commonPrefixes);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult>
|
|
<Name>examplebucket</Name>
|
|
<Prefix>fun/</Prefix>
|
|
<Marker>fu</Marker>
|
|
<MaxKeys>2</MaxKeys>
|
|
<Delimiter>/</Delimiter>
|
|
<IsTruncated>true</IsTruncated>
|
|
<NextMarker>fun/test-1.jpg</NextMarker>
|
|
<Contents>
|
|
<Key>fun/test.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:09.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344606</Size>
|
|
<StorageClass>Standard</StorageClass>
|
|
<Owner>
|
|
<ID>0022012****</ID>
|
|
<DisplayName>user_example</DisplayName>
|
|
</Owner>
|
|
<RestoreInfo>ongoing-request="true"</RestoreInfo>
|
|
</Contents>
|
|
<Contents>
|
|
<Key>fun/test-1.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:19.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344605</Size>
|
|
<StorageClass>IA</StorageClass>
|
|
<Owner>
|
|
</Owner>
|
|
</Contents>
|
|
<CommonPrefixes>
|
|
<Prefix>fun/movie/</Prefix>
|
|
</CommonPrefixes>
|
|
</ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$datetimeUtc = new \DateTime();
|
|
$datetimeUtc->setTimestamp(1702783809);
|
|
$datetimeUtc1 = new \DateTime();
|
|
$datetimeUtc1->setTimestamp(1702783819);
|
|
$result = BucketBasic::toListObjects($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('examplebucket', $result->name);
|
|
$this->assertEquals('fun/', $result->prefix);
|
|
$this->assertEquals('fu', $result->marker);
|
|
$this->assertEquals(2, $result->maxKeys);
|
|
$this->assertEquals('/', $result->delimiter);
|
|
$this->assertEquals(true, $result->isTruncated);
|
|
$this->assertNull($result->encodingType);
|
|
$this->assertEquals('fun/test-1.jpg', $result->nextMarker);
|
|
$this->assertEquals(2, count($result->contents));
|
|
$this->assertEquals('fun/test.jpg', $result->contents[0]->key);
|
|
$this->assertEquals($datetimeUtc, $result->contents[0]->lastModified);
|
|
$this->assertEquals('"5B3C1A2E053D763E1B002CC607C5A0FE1****"', $result->contents[0]->etag);
|
|
$this->assertEquals('Normal', $result->contents[0]->type);
|
|
$this->assertEquals(344606, $result->contents[0]->size);
|
|
$this->assertEquals('Standard', $result->contents[0]->storageClass);
|
|
$this->assertEquals('0022012****', $result->contents[0]->owner->id);
|
|
$this->assertEquals('user_example', $result->contents[0]->owner->displayName);
|
|
$this->assertEquals('ongoing-request="true"', $result->contents[0]->restoreInfo);
|
|
|
|
$this->assertEquals('fun/test-1.jpg', $result->contents[1]->key);
|
|
$this->assertEquals($datetimeUtc1, $result->contents[1]->lastModified);
|
|
$this->assertEquals('"5B3C1A2E053D763E1B002CC607C5A0FE1****"', $result->contents[1]->etag);
|
|
$this->assertEquals('Normal', $result->contents[1]->type);
|
|
$this->assertEquals(344605, $result->contents[1]->size);
|
|
$this->assertEquals('IA', $result->contents[1]->storageClass);
|
|
$this->assertNull($result->contents[1]->owner->id);
|
|
$this->assertNull($result->contents[1]->owner->displayName);
|
|
|
|
$this->assertEquals(1, count($result->commonPrefixes));
|
|
$this->assertEquals('fun/movie/', $result->commonPrefixes[0]->prefix);
|
|
|
|
// encodingType
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult>
|
|
<Name>examplebucket</Name>
|
|
<Prefix>fun%2F</Prefix>
|
|
<Marker>fun%2F</Marker>
|
|
<MaxKeys>1</MaxKeys>
|
|
<Delimiter>%2F</Delimiter>
|
|
<IsTruncated>false</IsTruncated>
|
|
<NextMarker>fun%2Ftest-1.jpg</NextMarker>
|
|
<EncodingType>url</EncodingType>
|
|
<Contents>
|
|
<Key>fun%2Ftest.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:09.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344606</Size>
|
|
<StorageClass>Standard</StorageClass>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
<TransitionTime>2023-12-17T03:30:19.000Z</TransitionTime>
|
|
</Contents>
|
|
<CommonPrefixes>
|
|
<Prefix>fun%2Fmovie%2F</Prefix>
|
|
</CommonPrefixes>
|
|
</ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListObjects($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('examplebucket', $result->name);
|
|
$this->assertEquals('fun/', $result->prefix);
|
|
$this->assertEquals('fun/', $result->marker);
|
|
$this->assertEquals(1, $result->maxKeys);
|
|
$this->assertEquals('/', $result->delimiter);
|
|
$this->assertEquals(false, $result->isTruncated);
|
|
$this->assertEquals('url', $result->encodingType);
|
|
$this->assertEquals('fun/test-1.jpg', $result->nextMarker);
|
|
$this->assertEquals(1, count($result->contents));
|
|
$this->assertEquals('fun/test.jpg', $result->contents[0]->key);
|
|
$this->assertEquals('', $result->contents[0]->owner->id);
|
|
$this->assertEquals('', $result->contents[0]->owner->displayName);
|
|
$this->assertEquals($datetimeUtc1, $result->contents[0]->transitionTime);
|
|
$this->assertEquals(1, count($result->commonPrefixes));
|
|
$this->assertEquals('fun/movie/', $result->commonPrefixes[0]->prefix);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult>
|
|
<Name></Name>
|
|
<Prefix></Prefix>
|
|
<Marker></Marker>
|
|
<MaxKeys></MaxKeys>
|
|
<Delimiter></Delimiter>
|
|
<IsTruncated></IsTruncated>
|
|
<NextMarker></NextMarker>
|
|
<Contents>
|
|
<Key></Key>
|
|
<LastModified></LastModified>
|
|
<ETag></ETag>
|
|
<Type></Type>
|
|
<Size></Size>
|
|
<StorageClass></StorageClass>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
</Contents>
|
|
<CommonPrefixes>
|
|
<Prefix></Prefix>
|
|
</CommonPrefixes>
|
|
<CommonPrefixes>
|
|
<Prefix></Prefix>
|
|
</CommonPrefixes>
|
|
</ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$datetimeUtc = new \DateTime();
|
|
$datetimeUtc->setTimestamp(1702783809);
|
|
$datetimeUtc1 = new \DateTime();
|
|
$datetimeUtc1->setTimestamp(1702783819);
|
|
$result = BucketBasic::toListObjects($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('', $result->name);
|
|
$this->assertEquals('', $result->prefix);
|
|
$this->assertEquals('', $result->marker);
|
|
$this->assertEquals(0, $result->maxKeys);
|
|
$this->assertEquals('', $result->delimiter);
|
|
$this->assertEquals(false, $result->isTruncated);
|
|
$this->assertEquals('', $result->encodingType);
|
|
$this->assertEquals('', $result->nextMarker);
|
|
$this->assertEquals(1, count($result->contents));
|
|
$this->assertEquals('', $result->contents[0]->key);
|
|
$this->assertNull($result->contents[0]->lastModified);
|
|
$this->assertEquals('', $result->contents[0]->etag);
|
|
$this->assertEquals('', $result->contents[0]->type);
|
|
$this->assertEquals(0, $result->contents[0]->size);
|
|
$this->assertEquals('', $result->contents[0]->storageClass);
|
|
$this->assertEquals('', $result->contents[0]->owner->id);
|
|
$this->assertEquals('', $result->contents[0]->owner->displayName);
|
|
$this->assertEquals(2, count($result->commonPrefixes));
|
|
$this->assertEquals('', $result->commonPrefixes[0]->prefix);
|
|
$this->assertEquals('', $result->commonPrefixes[1]->prefix);
|
|
}
|
|
|
|
public function testFromListObjectsV2()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\ListObjectsV2Request();
|
|
$input = BucketBasic::fromListObjectsV2($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\ListObjectsV2Request('bucket-123');
|
|
$input = BucketBasic::fromListObjectsV2($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// all settings
|
|
$request = new Models\ListObjectsV2Request(
|
|
'bucket-123',
|
|
'deli-123',
|
|
'url',
|
|
'start-after-123',
|
|
'token-123',
|
|
123,
|
|
'prefix-123',
|
|
'requester',
|
|
true,
|
|
);
|
|
$input = BucketBasic::fromListObjectsV2($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('2', $input->getParameters()['list-type']);
|
|
$this->assertEquals('deli-123', $input->getParameters()['delimiter']);
|
|
$this->assertEquals('url', $input->getParameters()['encoding-type']);
|
|
$this->assertEquals('start-after-123', $input->getParameters()['start-after']);
|
|
$this->assertEquals('token-123', $input->getParameters()['continuation-token']);
|
|
$this->assertEquals('123', $input->getParameters()['max-keys']);
|
|
$this->assertEquals('prefix-123', $input->getParameters()['prefix']);
|
|
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
|
|
$this->assertEquals('true', $input->getParameters()['fetch-owner']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\ListObjectsV2Request(
|
|
'bucket-123',
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromListObjectsV2($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToListObjectsV2()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toListObjectsV2($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <ListBucketResult>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult></ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListObjectsV2($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->name);
|
|
$this->assertNull($result->prefix);
|
|
$this->assertNull($result->startAfter);
|
|
$this->assertNull($result->continuationToken);
|
|
$this->assertNull($result->maxKeys);
|
|
$this->assertNull($result->delimiter);
|
|
$this->assertNull($result->isTruncated);
|
|
$this->assertNull($result->encodingType);
|
|
$this->assertNull($result->nextContinuationToken);
|
|
$this->assertNull($result->keyCount);
|
|
$this->assertNull($result->contents);
|
|
$this->assertNull($result->commonPrefixes);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult>
|
|
<Name>examplebucket</Name>
|
|
<Prefix>fun/</Prefix>
|
|
<StartAfter>fu</StartAfter>
|
|
<ContinuationToken>AgJiYw--</ContinuationToken>
|
|
<MaxKeys>2</MaxKeys>
|
|
<Delimiter>/</Delimiter>
|
|
<IsTruncated>true</IsTruncated>
|
|
<NextContinuationToken>CgJiYw--</NextContinuationToken>
|
|
<Contents>
|
|
<Key>fun/test.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:09.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344606</Size>
|
|
<StorageClass>Standard</StorageClass>
|
|
<Owner>
|
|
<ID>0022012****</ID>
|
|
<DisplayName>user_example</DisplayName>
|
|
</Owner>
|
|
<RestoreInfo>ongoing-request="true"</RestoreInfo>
|
|
</Contents>
|
|
<Contents>
|
|
<Key>fun/test-1.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:19.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344605</Size>
|
|
<StorageClass>IA</StorageClass>
|
|
<Owner>
|
|
</Owner>
|
|
</Contents>
|
|
<CommonPrefixes>
|
|
<Prefix>fun/movie/</Prefix>
|
|
</CommonPrefixes>
|
|
<KeyCount>3</KeyCount>
|
|
</ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$datetimeUtc = new \DateTime();
|
|
$datetimeUtc->setTimestamp(1702783809);
|
|
$datetimeUtc1 = new \DateTime();
|
|
$datetimeUtc1->setTimestamp(1702783819);
|
|
$result = BucketBasic::toListObjectsV2($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('examplebucket', $result->name);
|
|
$this->assertEquals('fun/', $result->prefix);
|
|
$this->assertEquals('fu', $result->startAfter);
|
|
$this->assertEquals('AgJiYw--', $result->continuationToken);
|
|
$this->assertEquals(2, $result->maxKeys);
|
|
$this->assertEquals('/', $result->delimiter);
|
|
$this->assertEquals(true, $result->isTruncated);
|
|
$this->assertNull($result->encodingType);
|
|
$this->assertEquals('CgJiYw--', $result->nextContinuationToken);
|
|
$this->assertEquals(3, $result->keyCount);
|
|
$this->assertEquals(2, count($result->contents));
|
|
$this->assertEquals('fun/test.jpg', $result->contents[0]->key);
|
|
$this->assertEquals($datetimeUtc, $result->contents[0]->lastModified);
|
|
$this->assertEquals('"5B3C1A2E053D763E1B002CC607C5A0FE1****"', $result->contents[0]->etag);
|
|
$this->assertEquals('Normal', $result->contents[0]->type);
|
|
$this->assertEquals(344606, $result->contents[0]->size);
|
|
$this->assertEquals('Standard', $result->contents[0]->storageClass);
|
|
$this->assertEquals('0022012****', $result->contents[0]->owner->id);
|
|
$this->assertEquals('user_example', $result->contents[0]->owner->displayName);
|
|
$this->assertEquals('ongoing-request="true"', $result->contents[0]->restoreInfo);
|
|
|
|
$this->assertEquals('fun/test-1.jpg', $result->contents[1]->key);
|
|
$this->assertEquals($datetimeUtc1, $result->contents[1]->lastModified);
|
|
$this->assertEquals('"5B3C1A2E053D763E1B002CC607C5A0FE1****"', $result->contents[1]->etag);
|
|
$this->assertEquals('Normal', $result->contents[1]->type);
|
|
$this->assertEquals(344605, $result->contents[1]->size);
|
|
$this->assertEquals('IA', $result->contents[1]->storageClass);
|
|
$this->assertNull($result->contents[1]->owner->id);
|
|
$this->assertNull($result->contents[1]->owner->displayName);
|
|
|
|
$this->assertEquals(1, count($result->commonPrefixes));
|
|
$this->assertEquals('fun/movie/', $result->commonPrefixes[0]->prefix);
|
|
|
|
// encodingType
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult>
|
|
<Name>examplebucket</Name>
|
|
<Prefix>fun%2F</Prefix>
|
|
<StartAfter>fun%2F</StartAfter>
|
|
<ContinuationToken>fun%2F</ContinuationToken>
|
|
<MaxKeys>1</MaxKeys>
|
|
<Delimiter>%2F</Delimiter>
|
|
<IsTruncated>false</IsTruncated>
|
|
<NextContinuationToken>fun%2Ftest-1.jpg</NextContinuationToken>
|
|
<EncodingType>url</EncodingType>
|
|
<Contents>
|
|
<Key>fun%2Ftest.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:09.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344606</Size>
|
|
<StorageClass>Standard</StorageClass>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
<TransitionTime>2023-12-17T03:30:19.000Z</TransitionTime>
|
|
</Contents>
|
|
<CommonPrefixes>
|
|
<Prefix>fun%2Fmovie%2F</Prefix>
|
|
</CommonPrefixes>
|
|
</ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListObjectsV2($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('examplebucket', $result->name);
|
|
$this->assertEquals('fun/', $result->prefix);
|
|
$this->assertEquals('fun/', $result->startAfter);
|
|
$this->assertEquals('fun/', $result->continuationToken);
|
|
$this->assertEquals(1, $result->maxKeys);
|
|
$this->assertEquals('/', $result->delimiter);
|
|
$this->assertEquals(false, $result->isTruncated);
|
|
$this->assertEquals('url', $result->encodingType);
|
|
$this->assertEquals('fun/test-1.jpg', $result->nextContinuationToken);
|
|
$this->assertEquals(1, count($result->contents));
|
|
$this->assertEquals('fun/test.jpg', $result->contents[0]->key);
|
|
$this->assertEquals('', $result->contents[0]->owner->id);
|
|
$this->assertEquals('', $result->contents[0]->owner->displayName);
|
|
$this->assertEquals($datetimeUtc1, $result->contents[0]->transitionTime);
|
|
$this->assertEquals(1, count($result->commonPrefixes));
|
|
$this->assertEquals('fun/movie/', $result->commonPrefixes[0]->prefix);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListBucketResult>
|
|
<Name></Name>
|
|
<Prefix></Prefix>
|
|
<StartAfter></StartAfter>
|
|
<ContinuationToken></ContinuationToken>
|
|
<MaxKeys></MaxKeys>
|
|
<Delimiter></Delimiter>
|
|
<IsTruncated></IsTruncated>
|
|
<NextContinuationToken></NextContinuationToken>
|
|
<Contents>
|
|
<Key></Key>
|
|
<LastModified></LastModified>
|
|
<ETag></ETag>
|
|
<Type></Type>
|
|
<Size></Size>
|
|
<StorageClass></StorageClass>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
</Contents>
|
|
<CommonPrefixes>
|
|
<Prefix></Prefix>
|
|
</CommonPrefixes>
|
|
<CommonPrefixes>
|
|
<Prefix></Prefix>
|
|
</CommonPrefixes>
|
|
<KeyCount></KeyCount>
|
|
</ListBucketResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$datetimeUtc = new \DateTime();
|
|
$datetimeUtc->setTimestamp(1702783809);
|
|
$datetimeUtc1 = new \DateTime();
|
|
$datetimeUtc1->setTimestamp(1702783819);
|
|
$result = BucketBasic::toListObjectsV2($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('', $result->name);
|
|
$this->assertEquals('', $result->prefix);
|
|
$this->assertEquals('', $result->startAfter);
|
|
$this->assertEquals('', $result->continuationToken);
|
|
$this->assertEquals(0, $result->maxKeys);
|
|
$this->assertEquals('', $result->delimiter);
|
|
$this->assertEquals(false, $result->isTruncated);
|
|
$this->assertEquals('', $result->encodingType);
|
|
$this->assertEquals('', $result->nextContinuationToken);
|
|
$this->assertEquals(0, $result->keyCount);
|
|
$this->assertEquals(1, count($result->contents));
|
|
$this->assertEquals('', $result->contents[0]->key);
|
|
$this->assertNull($result->contents[0]->lastModified);
|
|
$this->assertEquals('', $result->contents[0]->etag);
|
|
$this->assertEquals('', $result->contents[0]->type);
|
|
$this->assertEquals(0, $result->contents[0]->size);
|
|
$this->assertEquals('', $result->contents[0]->storageClass);
|
|
$this->assertEquals('', $result->contents[0]->owner->id);
|
|
$this->assertEquals('', $result->contents[0]->owner->displayName);
|
|
$this->assertEquals(2, count($result->commonPrefixes));
|
|
$this->assertEquals('', $result->commonPrefixes[0]->prefix);
|
|
$this->assertEquals('', $result->commonPrefixes[1]->prefix);
|
|
}
|
|
|
|
public function testFromListObjectVersions()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\ListObjectVersionsRequest();
|
|
$input = BucketBasic::fromListObjectVersions($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
|
}
|
|
|
|
// bucket only
|
|
$request = new Models\ListObjectVersionsRequest('bucket-123');
|
|
$input = BucketBasic::fromListObjectVersions($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
|
|
// all settings
|
|
$request = new Models\ListObjectVersionsRequest(
|
|
'bucket-123',
|
|
'deli-123',
|
|
'url',
|
|
'key-marker-123',
|
|
'version-id-marker-123',
|
|
123,
|
|
'prefix-123',
|
|
'requester'
|
|
);
|
|
$input = BucketBasic::fromListObjectVersions($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('', $input->getParameters()['versions']);
|
|
$this->assertEquals('deli-123', $input->getParameters()['delimiter']);
|
|
$this->assertEquals('url', $input->getParameters()['encoding-type']);
|
|
$this->assertEquals('key-marker-123', $input->getParameters()['key-marker']);
|
|
$this->assertEquals('version-id-marker-123', $input->getParameters()['version-id-marker']);
|
|
$this->assertEquals('123', $input->getParameters()['max-keys']);
|
|
$this->assertEquals('prefix-123', $input->getParameters()['prefix']);
|
|
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
|
|
|
|
// extend header & parameters
|
|
$request = new Models\ListObjectVersionsRequest(
|
|
'bucket-123',
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
[
|
|
'headers' => ['x-oss-test' => 'test-123'],
|
|
'parameters' => ['x-oss-param' => 'param-123']
|
|
]
|
|
);
|
|
$input = BucketBasic::fromListObjectVersions($request);
|
|
$this->assertEquals('bucket-123', $input->getBucket());
|
|
$this->assertEquals('application/octet-stream', $input->getHeaders()['content-type']);
|
|
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
|
$this->assertEquals('test-123', $input->getHeaders()['x-oss-test']);
|
|
$this->assertEquals('param-123', $input->getParameters()['x-oss-param']);
|
|
}
|
|
|
|
public function testToListObjectVersions()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toListObjectVersions($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (Exception\DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <ListVersionsResult>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListVersionsResult></ListVersionsResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListObjectVersions($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->name);
|
|
$this->assertNull($result->prefix);
|
|
$this->assertNull($result->keyMarker);
|
|
$this->assertNull($result->versionIdMarker);
|
|
$this->assertNull($result->maxKeys);
|
|
$this->assertNull($result->delimiter);
|
|
$this->assertNull($result->isTruncated);
|
|
$this->assertNull($result->encodingType);
|
|
$this->assertNull($result->nextKeyMarker);
|
|
$this->assertNull($result->nextVersionIdMarker);
|
|
$this->assertNull($result->versions);
|
|
$this->assertNull($result->deleteMarkers);
|
|
$this->assertNull($result->commonPrefixes);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListVersionsResult>
|
|
<Name>examplebucket</Name>
|
|
<Prefix>fun/</Prefix>
|
|
<KeyMarker>fu</KeyMarker>
|
|
<VersionIdMarker>AgJiYw--</VersionIdMarker>
|
|
<MaxKeys>2</MaxKeys>
|
|
<Delimiter>/</Delimiter>
|
|
<IsTruncated>true</IsTruncated>
|
|
<NextKeyMarker>fu123</NextKeyMarker>
|
|
<NextVersionIdMarker>AgJiYw--123</NextVersionIdMarker>
|
|
<Version>
|
|
<Key>fun/test.jpg</Key>
|
|
<VersionId>id-123</VersionId>
|
|
<IsLatest>true</IsLatest>
|
|
<LastModified>2023-12-17T03:30:09.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344606</Size>
|
|
<StorageClass>Standard</StorageClass>
|
|
<Owner>
|
|
<ID>0022012****</ID>
|
|
<DisplayName>user_example</DisplayName>
|
|
</Owner>
|
|
<RestoreInfo>ongoing-request="true"</RestoreInfo>
|
|
</Version>
|
|
<DeleteMarker>
|
|
<Key>example</Key>
|
|
<VersionId>CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****</VersionId>
|
|
<IsLatest>false</IsLatest>
|
|
<LastModified>2023-12-17T03:30:19.000Z</LastModified>
|
|
<Owner>
|
|
<ID>1234512528586****</ID>
|
|
<DisplayName>12345125285864390</DisplayName>
|
|
</Owner>
|
|
</DeleteMarker>
|
|
<Version>
|
|
<Key>fun/test-1.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:19.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344605</Size>
|
|
<StorageClass>IA</StorageClass>
|
|
<Owner>
|
|
</Owner>
|
|
</Version>
|
|
<CommonPrefixes>
|
|
<Prefix>fun/movie/</Prefix>
|
|
</CommonPrefixes>
|
|
</ListVersionsResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$datetimeUtc = new \DateTime();
|
|
$datetimeUtc->setTimestamp(1702783809);
|
|
$datetimeUtc1 = new \DateTime();
|
|
$datetimeUtc1->setTimestamp(1702783819);
|
|
$result = BucketBasic::toListObjectVersions($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('examplebucket', $result->name);
|
|
$this->assertEquals('fun/', $result->prefix);
|
|
$this->assertEquals('fu', $result->keyMarker);
|
|
$this->assertEquals('AgJiYw--', $result->versionIdMarker);
|
|
$this->assertEquals(2, $result->maxKeys);
|
|
$this->assertEquals('/', $result->delimiter);
|
|
$this->assertEquals(true, $result->isTruncated);
|
|
$this->assertNull($result->encodingType);
|
|
$this->assertEquals('fu123', $result->nextKeyMarker);
|
|
$this->assertEquals('AgJiYw--123', $result->nextVersionIdMarker);
|
|
$this->assertEquals(2, count($result->versions));
|
|
$this->assertEquals('fun/test.jpg', $result->versions[0]->key);
|
|
$this->assertEquals('id-123', $result->versions[0]->versionId);
|
|
$this->assertEquals(true, $result->versions[0]->isLatest);
|
|
$this->assertEquals($datetimeUtc, $result->versions[0]->lastModified);
|
|
$this->assertEquals('"5B3C1A2E053D763E1B002CC607C5A0FE1****"', $result->versions[0]->etag);
|
|
$this->assertEquals('Normal', $result->versions[0]->type);
|
|
$this->assertEquals(344606, $result->versions[0]->size);
|
|
$this->assertEquals('Standard', $result->versions[0]->storageClass);
|
|
$this->assertEquals('0022012****', $result->versions[0]->owner->id);
|
|
$this->assertEquals('user_example', $result->versions[0]->owner->displayName);
|
|
$this->assertEquals('ongoing-request="true"', $result->versions[0]->restoreInfo);
|
|
|
|
$this->assertEquals('fun/test-1.jpg', $result->versions[1]->key);
|
|
$this->assertNull($result->versions[1]->versionId);
|
|
$this->assertNull($result->versions[1]->isLatest);
|
|
$this->assertEquals($datetimeUtc1, $result->versions[1]->lastModified);
|
|
$this->assertEquals('"5B3C1A2E053D763E1B002CC607C5A0FE1****"', $result->versions[1]->etag);
|
|
$this->assertEquals('Normal', $result->versions[1]->type);
|
|
$this->assertEquals(344605, $result->versions[1]->size);
|
|
$this->assertEquals('IA', $result->versions[1]->storageClass);
|
|
$this->assertNull($result->versions[1]->owner->id);
|
|
$this->assertNull($result->versions[1]->owner->displayName);
|
|
|
|
$this->assertEquals(1, count($result->deleteMarkers));
|
|
$this->assertEquals('example', $result->deleteMarkers[0]->key);
|
|
$this->assertEquals('CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****', $result->deleteMarkers[0]->versionId);
|
|
$this->assertEquals(false, $result->deleteMarkers[0]->isLatest);
|
|
$this->assertEquals($datetimeUtc1, $result->deleteMarkers[0]->lastModified);
|
|
$this->assertEquals('1234512528586****', $result->deleteMarkers[0]->owner->id);
|
|
$this->assertEquals('12345125285864390', $result->deleteMarkers[0]->owner->displayName);
|
|
|
|
$this->assertEquals(1, count($result->commonPrefixes));
|
|
$this->assertEquals('fun/movie/', $result->commonPrefixes[0]->prefix);
|
|
|
|
// encodingType
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListVersionsResult>
|
|
<Name>examplebucket</Name>
|
|
<Prefix>fun%2F</Prefix>
|
|
<KeyMarker>fun%2F</KeyMarker>
|
|
<VersionIdMarker>AgJiYw--</VersionIdMarker>
|
|
<MaxKeys>1</MaxKeys>
|
|
<Delimiter>%2F</Delimiter>
|
|
<IsTruncated>false</IsTruncated>
|
|
<NextKeyMarker>fun%2Ftest-1.jpg</NextKeyMarker>
|
|
<NextVersionIdMarker>AgJiYw--123</NextVersionIdMarker>
|
|
<EncodingType>url</EncodingType>
|
|
<Version>
|
|
<Key>fun%2Ftest.jpg</Key>
|
|
<LastModified>2023-12-17T03:30:09.000Z</LastModified>
|
|
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag>
|
|
<Type>Normal</Type>
|
|
<Size>344606</Size>
|
|
<StorageClass>Standard</StorageClass>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
<TransitionTime>2023-12-17T03:30:19.000Z</TransitionTime>
|
|
</Version>
|
|
<DeleteMarker>
|
|
<Key>example%2F123</Key>
|
|
<VersionId>CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****</VersionId>
|
|
<IsLatest>false</IsLatest>
|
|
<LastModified>2023-12-17T03:30:19.000Z</LastModified>
|
|
<Owner>
|
|
<ID>1234512528586****</ID>
|
|
<DisplayName>12345125285864390</DisplayName>
|
|
</Owner>
|
|
</DeleteMarker>
|
|
<CommonPrefixes>
|
|
<Prefix>fun%2Fmovie%2F</Prefix>
|
|
</CommonPrefixes>
|
|
</ListVersionsResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListObjectVersions($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('examplebucket', $result->name);
|
|
$this->assertEquals('fun/', $result->prefix);
|
|
$this->assertEquals('fun/', $result->keyMarker);
|
|
$this->assertEquals('AgJiYw--', $result->versionIdMarker);
|
|
$this->assertEquals(1, $result->maxKeys);
|
|
$this->assertEquals('/', $result->delimiter);
|
|
$this->assertEquals(false, $result->isTruncated);
|
|
$this->assertEquals('url', $result->encodingType);
|
|
$this->assertEquals('fun/test-1.jpg', $result->nextKeyMarker);
|
|
$this->assertEquals('AgJiYw--123', $result->nextVersionIdMarker);
|
|
$this->assertEquals(1, count($result->versions));
|
|
$this->assertEquals('fun/test.jpg', $result->versions[0]->key);
|
|
$this->assertEquals('', $result->versions[0]->owner->id);
|
|
$this->assertEquals('', $result->versions[0]->owner->displayName);
|
|
$this->assertEquals(1, count($result->deleteMarkers));
|
|
$this->assertEquals('example/123', $result->deleteMarkers[0]->key);
|
|
$this->assertEquals(1, count($result->commonPrefixes));
|
|
$this->assertEquals('fun/movie/', $result->commonPrefixes[0]->prefix);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListVersionsResult>
|
|
<Name></Name>
|
|
<Prefix></Prefix>
|
|
<StartAfter></StartAfter>
|
|
<ContinuationToken></ContinuationToken>
|
|
<MaxKeys></MaxKeys>
|
|
<Delimiter></Delimiter>
|
|
<IsTruncated></IsTruncated>
|
|
<NextContinuationToken></NextContinuationToken>
|
|
<Version>
|
|
<Key></Key>
|
|
<LastModified></LastModified>
|
|
<ETag></ETag>
|
|
<Type></Type>
|
|
<Size></Size>
|
|
<StorageClass></StorageClass>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
</Version>
|
|
<DeleteMarker>
|
|
<Key></Key>
|
|
<VersionId></VersionId>
|
|
<IsLatest></IsLatest>
|
|
<LastModified></LastModified>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
</DeleteMarker>
|
|
<DeleteMarker>
|
|
<Key></Key>
|
|
<VersionId></VersionId>
|
|
<IsLatest></IsLatest>
|
|
<LastModified></LastModified>
|
|
<Owner>
|
|
<ID></ID>
|
|
<DisplayName></DisplayName>
|
|
</Owner>
|
|
</DeleteMarker>
|
|
<CommonPrefixes>
|
|
<Prefix></Prefix>
|
|
</CommonPrefixes>
|
|
<CommonPrefixes>
|
|
<Prefix></Prefix>
|
|
</CommonPrefixes>
|
|
<KeyCount></KeyCount>
|
|
</ListVersionsResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$datetimeUtc = new \DateTime();
|
|
$datetimeUtc->setTimestamp(1702783809);
|
|
$datetimeUtc1 = new \DateTime();
|
|
$datetimeUtc1->setTimestamp(1702783819);
|
|
$result = BucketBasic::toListObjectVersions($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('', $result->name);
|
|
$this->assertEquals('', $result->prefix);
|
|
$this->assertEquals('', $result->keyMarker);
|
|
$this->assertEquals('', $result->versionIdMarker);
|
|
$this->assertEquals(0, $result->maxKeys);
|
|
$this->assertEquals('', $result->delimiter);
|
|
$this->assertEquals(false, $result->isTruncated);
|
|
$this->assertEquals('', $result->encodingType);
|
|
$this->assertEquals('', $result->nextKeyMarker);
|
|
$this->assertEquals('', $result->nextVersionIdMarker);
|
|
$this->assertEquals(1, count($result->versions));
|
|
$this->assertEquals('', $result->versions[0]->key);
|
|
$this->assertEquals('', $result->versions[0]->versionId);
|
|
$this->assertEquals(false, $result->versions[0]->isLatest);
|
|
$this->assertNull($result->versions[0]->lastModified);
|
|
$this->assertEquals('', $result->versions[0]->etag);
|
|
$this->assertEquals('', $result->versions[0]->type);
|
|
$this->assertEquals(0, $result->versions[0]->size);
|
|
$this->assertEquals('', $result->versions[0]->storageClass);
|
|
$this->assertEquals('', $result->versions[0]->owner->id);
|
|
$this->assertEquals('', $result->versions[0]->owner->displayName);
|
|
|
|
$this->assertEquals(2, count($result->deleteMarkers));
|
|
$this->assertEquals('', $result->deleteMarkers[0]->key);
|
|
$this->assertEquals('', $result->deleteMarkers[0]->versionId);
|
|
$this->assertEquals(false, $result->deleteMarkers[0]->isLatest);
|
|
$this->assertNull($result->deleteMarkers[0]->lastModified);
|
|
$this->assertEquals('', $result->deleteMarkers[0]->owner->id);
|
|
$this->assertEquals('', $result->deleteMarkers[0]->owner->displayName);
|
|
|
|
$this->assertEquals('', $result->deleteMarkers[1]->key);
|
|
$this->assertEquals('', $result->deleteMarkers[1]->versionId);
|
|
$this->assertEquals(false, $result->deleteMarkers[1]->isLatest);
|
|
|
|
$this->assertEquals(2, count($result->commonPrefixes));
|
|
$this->assertEquals('', $result->commonPrefixes[0]->prefix);
|
|
$this->assertEquals('', $result->commonPrefixes[1]->prefix);
|
|
}
|
|
|
|
public function testFromListBuckets()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\ListBucketsRequest();
|
|
$input = BucketBasic::fromListBuckets($request);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertTrue(false, 'should not here');
|
|
}
|
|
|
|
$request = new Models\ListBucketsRequest('/', '', 10,'rg-aek27tc********');
|
|
$input = BucketBasic::fromListBuckets($request);
|
|
$this->assertEquals('rg-aek27tc********', $input->getHeaders()['x-oss-resource-group-id']);
|
|
$this->assertEquals('', $input->getParameters()['marker']);
|
|
$this->assertEquals('/', $input->getParameters()['prefix']);
|
|
$this->assertEquals('10', $input->getParameters()['max-keys']);
|
|
|
|
$request = new Models\ListBucketsRequest('/', '', 10,'rg-aek27tc********','k','v');
|
|
$input = BucketBasic::fromListBuckets($request);
|
|
$this->assertEquals('rg-aek27tc********', $input->getHeaders()['x-oss-resource-group-id']);
|
|
$this->assertEquals('', $input->getParameters()['marker']);
|
|
$this->assertEquals('/', $input->getParameters()['prefix']);
|
|
$this->assertEquals('10', $input->getParameters()['max-keys']);
|
|
$this->assertEquals('k', $input->getParameters()['tag-key']);
|
|
$this->assertEquals('v', $input->getParameters()['tag-value']);
|
|
|
|
$request = new Models\ListBucketsRequest('/', '', 10,'rg-aek27tc********',null,null,"\"k\":\"v\"");
|
|
$input = BucketBasic::fromListBuckets($request);
|
|
$this->assertEquals('rg-aek27tc********', $input->getHeaders()['x-oss-resource-group-id']);
|
|
$this->assertEquals('', $input->getParameters()['marker']);
|
|
$this->assertEquals('/', $input->getParameters()['prefix']);
|
|
$this->assertEquals('10', $input->getParameters()['max-keys']);
|
|
$this->assertEquals("\"k\":\"v\"", $input->getParameters()['tagging']);
|
|
}
|
|
|
|
public function testToListBuckets()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toListBuckets($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <ListAllMyBucketsResult>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListAllMyBucketsResult></ListAllMyBucketsResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListBuckets($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->prefix);
|
|
$this->assertNull($result->marker);
|
|
$this->assertNull($result->maxKeys);
|
|
$this->assertNull($result->isTruncated);
|
|
$this->assertNull($result->nextMarker);
|
|
$this->assertNull($result->owner);
|
|
$this->assertNull($result->buckets);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListAllMyBucketsResult>
|
|
<Owner>
|
|
<ID>51264</ID>
|
|
<DisplayName>51264</DisplayName>
|
|
</Owner>
|
|
<Buckets>
|
|
<Bucket>
|
|
<CreationDate>2014-02-17T18:12:43.000Z</CreationDate>
|
|
<ExtranetEndpoint>oss-cn-shanghai.aliyuncs.com</ExtranetEndpoint>
|
|
<IntranetEndpoint>oss-cn-shanghai-internal.aliyuncs.com</IntranetEndpoint>
|
|
<Location>oss-cn-shanghai</Location>
|
|
<Name>app-base-oss</Name>
|
|
<Region>cn-shanghai</Region>
|
|
<StorageClass>Standard</StorageClass>
|
|
</Bucket>
|
|
<Bucket>
|
|
<CreationDate>2014-02-25T11:21:04.000Z</CreationDate>
|
|
<ExtranetEndpoint>oss-cn-hangzhou.aliyuncs.com</ExtranetEndpoint>
|
|
<IntranetEndpoint>oss-cn-hangzhou-internal.aliyuncs.com</IntranetEndpoint>
|
|
<Location>oss-cn-hangzhou</Location>
|
|
<Name>mybucket</Name>
|
|
<Region>cn-hangzhou</Region>
|
|
<StorageClass>IA</StorageClass>
|
|
</Bucket>
|
|
</Buckets>
|
|
</ListAllMyBucketsResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListBuckets($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('application/xml', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('51264', $result->owner->displayName);
|
|
$this->assertEquals('51264', $result->owner->id);
|
|
$this->assertEquals(2, count($result->buckets));
|
|
$this->assertEquals(\DateTime::createFromFormat(
|
|
'Y-m-d\TH:i:s.000\Z',
|
|
'2014-02-17T18:12:43.000Z',
|
|
new \DateTimeZone('UTC')
|
|
), $result->buckets[0]->creationDate);
|
|
$this->assertEquals('oss-cn-shanghai.aliyuncs.com', $result->buckets[0]->extranetEndpoint);
|
|
$this->assertEquals('oss-cn-shanghai-internal.aliyuncs.com', $result->buckets[0]->intranetEndpoint);
|
|
$this->assertEquals('app-base-oss', $result->buckets[0]->name);
|
|
$this->assertEquals('cn-shanghai', $result->buckets[0]->region);
|
|
$this->assertEquals(Models\StorageClassType::STANDARD, $result->buckets[0]->storageClass);
|
|
$this->assertEquals('oss-cn-shanghai', $result->buckets[0]->location);
|
|
|
|
$this->assertEquals(\DateTime::createFromFormat(
|
|
'Y-m-d\TH:i:s.000\Z',
|
|
'2014-02-25T11:21:04.000Z',
|
|
new \DateTimeZone('UTC')
|
|
), $result->buckets[1]->creationDate);
|
|
$this->assertEquals('oss-cn-hangzhou.aliyuncs.com', $result->buckets[1]->extranetEndpoint);
|
|
$this->assertEquals('oss-cn-hangzhou-internal.aliyuncs.com', $result->buckets[1]->intranetEndpoint);
|
|
$this->assertEquals('mybucket', $result->buckets[1]->name);
|
|
$this->assertEquals('cn-hangzhou', $result->buckets[1]->region);
|
|
$this->assertEquals(Models\StorageClassType::IA, $result->buckets[1]->storageClass);
|
|
$this->assertEquals('oss-cn-hangzhou', $result->buckets[1]->location);
|
|
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<ListAllMyBucketsResult>
|
|
<Prefix>my</Prefix>
|
|
<Marker>mybucket</Marker>
|
|
<MaxKeys>10</MaxKeys>
|
|
<IsTruncated>true</IsTruncated>
|
|
<NextMarker>mybucket10</NextMarker>
|
|
<Owner>
|
|
<ID>ut_test_put_bucket</ID>
|
|
<DisplayName>ut_test_put_bucket</DisplayName>
|
|
</Owner>
|
|
<Buckets>
|
|
<Bucket>
|
|
<CreationDate>2014-05-14T11:18:32.000Z</CreationDate>
|
|
<ExtranetEndpoint>oss-cn-hangzhou.aliyuncs.com</ExtranetEndpoint>
|
|
<IntranetEndpoint>oss-cn-hangzhou-internal.aliyuncs.com</IntranetEndpoint>
|
|
<Location>oss-cn-hangzhou</Location>
|
|
<Name>mybucket01</Name>
|
|
<Region>cn-hangzhou</Region>
|
|
<StorageClass>Standard</StorageClass>
|
|
<ResourceGroupId>rg-aek27tc********</ResourceGroupId>
|
|
|
|
</Bucket>
|
|
</Buckets>
|
|
</ListAllMyBucketsResult>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toListBuckets($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('application/xml', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals('ut_test_put_bucket', $result->owner->displayName);
|
|
$this->assertEquals('ut_test_put_bucket', $result->owner->id);
|
|
$this->assertEquals('my', $result->prefix);
|
|
$this->assertEquals('mybucket', $result->marker);
|
|
$this->assertEquals(10, $result->maxKeys);
|
|
$this->assertTrue($result->isTruncated);
|
|
$this->assertEquals('mybucket10', $result->nextMarker);
|
|
$this->assertEquals(1, count($result->buckets));
|
|
$this->assertEquals(\DateTime::createFromFormat(
|
|
'Y-m-d\TH:i:s.000\Z',
|
|
'2014-05-14T11:18:32.000Z',
|
|
new \DateTimeZone('UTC')
|
|
), $result->buckets[0]->creationDate);
|
|
$this->assertEquals('oss-cn-hangzhou.aliyuncs.com', $result->buckets[0]->extranetEndpoint);
|
|
$this->assertEquals('oss-cn-hangzhou-internal.aliyuncs.com', $result->buckets[0]->intranetEndpoint);
|
|
$this->assertEquals('mybucket01', $result->buckets[0]->name);
|
|
$this->assertEquals('cn-hangzhou', $result->buckets[0]->region);
|
|
$this->assertEquals(Models\StorageClassType::STANDARD, $result->buckets[0]->storageClass);
|
|
$this->assertEquals('oss-cn-hangzhou', $result->buckets[0]->location);
|
|
$this->assertEquals('rg-aek27tc********', $result->buckets[0]->resourceGroupId);
|
|
}
|
|
|
|
public function testFromDescribeRegions()
|
|
{
|
|
// miss required field
|
|
try {
|
|
$request = new Models\DescribeRegionsRequest();
|
|
$input = BucketBasic::fromDescribeRegions($request);
|
|
$this->assertEquals('', $input->getParameters()['regions']);
|
|
} catch (\InvalidArgumentException $e) {
|
|
$this->assertTrue(false, 'should not here');
|
|
}
|
|
|
|
$request = new Models\DescribeRegionsRequest("oss-cn-hangzhou");
|
|
$input = BucketBasic::fromDescribeRegions($request);
|
|
$this->assertEquals('oss-cn-hangzhou', $input->getParameters()['regions']);
|
|
}
|
|
|
|
public function testToDescribeRegions()
|
|
{
|
|
// empty output
|
|
try {
|
|
$output = new OperationOutput();
|
|
$result = BucketBasic::toDescribeRegions($output);
|
|
$this->assertTrue(false, 'should not here');
|
|
} catch (DeserializationExecption $e) {
|
|
$this->assertStringContainsString('Not found tag <RegionInfoList>', $e);
|
|
}
|
|
|
|
//empty xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<RegionInfoList></RegionInfoList>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'test'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toDescribeRegions($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('test', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertNull($result->regionInfos);
|
|
|
|
// xml
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<RegionInfoList>
|
|
<RegionInfo>
|
|
<Region>oss-cn-hangzhou</Region>
|
|
<InternetEndpoint>oss-cn-hangzhou.aliyuncs.com</InternetEndpoint>
|
|
<InternalEndpoint>oss-cn-hangzhou-internal.aliyuncs.com</InternalEndpoint>
|
|
<AccelerateEndpoint>oss-accelerate.aliyuncs.com</AccelerateEndpoint>
|
|
</RegionInfo>
|
|
<RegionInfo>
|
|
<Region>oss-cn-shanghai</Region>
|
|
<InternetEndpoint>oss-cn-shanghai.aliyuncs.com</InternetEndpoint>
|
|
<InternalEndpoint>oss-cn-shanghai-internal.aliyuncs.com</InternalEndpoint>
|
|
<AccelerateEndpoint>oss-accelerate.aliyuncs.com</AccelerateEndpoint>
|
|
</RegionInfo>
|
|
</RegionInfoList>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toDescribeRegions($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(2, count($result->headers));
|
|
$this->assertEquals('application/xml', $result->headers['content-type']);
|
|
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
|
$this->assertEquals(2, count($result->regionInfos));
|
|
$this->assertEquals('oss-cn-hangzhou', $result->regionInfos[0]->region);
|
|
$this->assertEquals('oss-cn-hangzhou.aliyuncs.com', $result->regionInfos[0]->internetEndpoint);
|
|
$this->assertEquals('oss-cn-hangzhou-internal.aliyuncs.com', $result->regionInfos[0]->internalEndpoint);
|
|
$this->assertEquals('oss-accelerate.aliyuncs.com', $result->regionInfos[0]->accelerateEndpoint);
|
|
|
|
$this->assertEquals('oss-cn-shanghai', $result->regionInfos[1]->region);
|
|
$this->assertEquals('oss-cn-shanghai.aliyuncs.com', $result->regionInfos[1]->internetEndpoint);
|
|
$this->assertEquals('oss-cn-shanghai-internal.aliyuncs.com', $result->regionInfos[1]->internalEndpoint);
|
|
$this->assertEquals('oss-accelerate.aliyuncs.com', $result->regionInfos[1]->accelerateEndpoint);
|
|
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<RegionInfoList>
|
|
<RegionInfo>
|
|
<Region>oss-cn-hangzhou</Region>
|
|
<InternetEndpoint>oss-cn-hangzhou.aliyuncs.com</InternetEndpoint>
|
|
<InternalEndpoint>oss-cn-hangzhou-internal.aliyuncs.com</InternalEndpoint>
|
|
<AccelerateEndpoint>oss-accelerate.aliyuncs.com</AccelerateEndpoint>
|
|
</RegionInfo>
|
|
</RegionInfoList>';
|
|
|
|
$output = new OperationOutput(
|
|
'OK',
|
|
200,
|
|
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
|
Utils::streamFor($str)
|
|
);
|
|
$result = BucketBasic::toDescribeRegions($output);
|
|
$this->assertEquals('OK', $result->status);
|
|
$this->assertEquals(200, $result->statusCode);
|
|
$this->assertEquals('123', $result->requestId);
|
|
$this->assertEquals(1, count($result->regionInfos));
|
|
$this->assertEquals('oss-cn-hangzhou', $result->regionInfos[0]->region);
|
|
$this->assertEquals('oss-cn-hangzhou.aliyuncs.com', $result->regionInfos[0]->internetEndpoint);
|
|
$this->assertEquals('oss-cn-hangzhou-internal.aliyuncs.com', $result->regionInfos[0]->internalEndpoint);
|
|
$this->assertEquals('oss-accelerate.aliyuncs.com', $result->regionInfos[0]->accelerateEndpoint);
|
|
}
|
|
|
|
private function cleanXml($xml)
|
|
{
|
|
return str_replace("\n", "", str_replace("\r", "", $xml));
|
|
}
|
|
}
|