Skip to content

Commit 83bdcf8

Browse files
committed
refine object params
1 parent 8bada8f commit 83bdcf8

File tree

9 files changed

+183
-17
lines changed

9 files changed

+183
-17
lines changed

src/Models/AppendObjectRequest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ final class AppendObjectRequest extends RequestModel
178178
* @param \Psr\Http\Message\StreamInterface|null $body The request body.
179179
* @param callable|null $progressFn Progress callback function
180180
* @param array|null $options
181+
* @param string|null $objectAcl The access control list (ACL) of the object. It is the normalized name of x-oss-object-acl.
181182
*/
182183
public function __construct(
183184
?string $bucket = null,
@@ -202,7 +203,8 @@ public function __construct(
202203
?string $requestPayer = null,
203204
?\Psr\Http\Message\StreamInterface $body = null,
204205
?callable $progressFn = null,
205-
?array $options = null
206+
?array $options = null,
207+
?string $objectAcl = null
206208
)
207209
{
208210
$this->bucket = $bucket;
@@ -228,5 +230,8 @@ public function __construct(
228230
$this->body = $body;
229231
$this->progressFn = $progressFn;
230232
parent::__construct($options);
233+
if (isset($objectAcl)) {
234+
$this->acl = $objectAcl;
235+
}
231236
}
232237
}

src/Models/CompleteMultipartUploadRequest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ final class CompleteMultipartUploadRequest extends RequestModel
9494
* @param string|null $encodingType The encoding type of the object name in the response.
9595
* @param string|null $requestPayer To indicate that the requester is aware that the request and data download will incur costs
9696
* @param array|null $options
97+
* @param string|null $objectAcl The access control list (ACL) of the object. It is the normalized name of x-oss-object-acl.
9798
*/
9899
public function __construct(
99100
?string $bucket = null,
@@ -107,7 +108,8 @@ public function __construct(
107108
?bool $forbidOverwrite = null,
108109
?string $encodingType = null,
109110
?string $requestPayer = null,
110-
?array $options = null
111+
?array $options = null,
112+
?string $objectAcl = null
111113
)
112114
{
113115
$this->bucket = $bucket;
@@ -122,5 +124,8 @@ public function __construct(
122124
$this->encodingType = $encodingType;
123125
$this->requestPayer = $requestPayer;
124126
parent::__construct($options);
127+
if (isset($objectAcl)) {
128+
$this->acl = $objectAcl;
129+
}
125130
}
126131
}

src/Models/CopyObjectRequest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ final class CopyObjectRequest extends RequestModel
221221
* @param string|null $requestPayer To indicate that the requester is aware that the request and data download will incur costs.
222222
* @param callable|null $progressFn Progress callback function, it works in Copier.Copy only.
223223
* @param array|null $options
224+
* @param string|null $objectAcl The access control list (ACL) of the object. It is the normalized name of x-oss-object-acl.
224225
*/
225226
public function __construct(
226227
?string $bucket = null,
@@ -252,7 +253,8 @@ public function __construct(
252253
?int $trafficLimit = null,
253254
?string $requestPayer = null,
254255
?callable $progressFn = null,
255-
?array $options = null
256+
?array $options = null,
257+
?string $objectAcl = null
256258
)
257259
{
258260
$this->bucket = $bucket;
@@ -285,5 +287,8 @@ public function __construct(
285287
$this->requestPayer = $requestPayer;
286288
$this->progressFn = $progressFn;
287289
parent::__construct($options);
290+
if (isset($objectAcl)) {
291+
$this->acl = $objectAcl;
292+
}
288293
}
289294
}

src/Models/PutObjectAclRequest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,16 @@ final class PutObjectAclRequest extends RequestModel
5252
* @param string|null $versionId The version id of the object.
5353
* @param string|null $requestPayer To indicate that the requester is aware that the request and data download will incur costs.
5454
* @param array|null $options
55+
* @param string|null $objectAcl The access control list (ACL) of the object. It is the normalized name of x-oss-object-acl.
5556
*/
5657
public function __construct(
5758
?string $bucket = null,
5859
?string $key = null,
5960
?string $acl = null,
6061
?string $versionId = null,
6162
?string $requestPayer = null,
62-
?array $options = null
63+
?array $options = null,
64+
?string $objectAcl = null
6365
)
6466
{
6567
$this->bucket = $bucket;
@@ -68,5 +70,8 @@ public function __construct(
6870
$this->versionId = $versionId;
6971
$this->requestPayer = $requestPayer;
7072
parent::__construct($options);
73+
if (isset($objectAcl)) {
74+
$this->acl = $objectAcl;
75+
}
7176
}
7277
}

src/Models/PutObjectRequest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ final class PutObjectRequest extends RequestModel
195195
* @param \Psr\Http\Message\StreamInterface|null $body Object data.
196196
* @param callable|null $progressFn Progress callback function.
197197
* @param array|null $options
198+
* @param string|null $objectAcl The access control list (ACL) of the object. It is the normalized name of x-oss-object-acl.
198199
*/
199200
public function __construct(
200201
?string $bucket = null,
@@ -220,7 +221,8 @@ public function __construct(
220221
?string $requestPayer = null,
221222
?\Psr\Http\Message\StreamInterface $body = null,
222223
?callable $progressFn = null,
223-
?array $options = null
224+
?array $options = null,
225+
?string $objectAcl = null
224226
)
225227
{
226228
$this->bucket = $bucket;
@@ -247,5 +249,8 @@ public function __construct(
247249
$this->body = $body;
248250
$this->progressFn = $progressFn;
249251
parent::__construct($options);
252+
if (isset($objectAcl)) {
253+
$this->acl = $objectAcl;
254+
}
250255
}
251256
}

src/Models/PutSymlinkRequest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ final class PutSymlinkRequest extends RequestModel
7777
* @param bool|null $forbidOverwrite Specifies whether the PutSymlink operation overwrites the object that has the same name as that of the symbolic link you want to create.
7878
* @param string|null $requestPayer To indicate that the requester is aware that the request and data download will incur costs.
7979
* @param array|null $options
80+
* @param string|null $objectAcl The ACL of the object. It is the normalized name of x-oss-object-acl.
81+
* @param string|null $symlinkTarget The target object to which the symbolic link points. It is the normalized name of x-oss-symlink-target.
8082
*/
8183
public function __construct(
8284
?string $bucket = null,
@@ -87,7 +89,9 @@ public function __construct(
8789
?array $metadata = null,
8890
?bool $forbidOverwrite = null,
8991
?string $requestPayer = null,
90-
?array $options = null
92+
?array $options = null,
93+
?string $objectAcl = null,
94+
?string $symlinkTarget = null
9195
)
9296
{
9397
$this->bucket = $bucket;
@@ -99,5 +103,11 @@ public function __construct(
99103
$this->forbidOverwrite = $forbidOverwrite;
100104
$this->requestPayer = $requestPayer;
101105
parent::__construct($options);
106+
if (isset($objectAcl)) {
107+
$this->acl = $objectAcl;
108+
}
109+
if (isset($symlinkTarget)) {
110+
$this->target = $symlinkTarget;
111+
}
102112
}
103113
}

src/Models/UploadPart.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,22 @@ final class UploadPart extends Model
2929
#[XmlElement(rename: 'ETag', type: 'string')]
3030
public ?string $etag;
3131

32-
3332
/**
3433
* UploadPart constructor.
3534
* @param int|null $partNumber The part number.
3635
* @param string|null $etag The ETag value that is returned by OSS after the part is uploaded.
36+
* @param string|null $eTag The ETag value that is returned by OSS after the part is uploaded. It is the normalized name of ETag.
3737
*/
3838
public function __construct(
3939
?int $partNumber = null,
40-
?string $etag = null
40+
?string $etag = null,
41+
?string $eTag = null
4142
)
4243
{
4344
$this->partNumber = $partNumber;
4445
$this->etag = $etag;
46+
if (isset($eTag)) {
47+
$this->etag = $eTag;
48+
}
4549
}
4650
}

tests/UnitTests/Transform/ObjectBasicTest.php

Lines changed: 101 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public function testFromDeleteMultipleObjects()
6666
$this->assertEquals('key2', $xml->Object[1]->Key);
6767
$this->assertEquals('version-id-2', $xml->Object[1]->VersionId);
6868

69-
7069
// all settings
7170
$request = new Models\DeleteMultipleObjectsRequest(
7271
'bucket-123',
@@ -398,6 +397,20 @@ public function testFromPutObject()
398397
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
399398
$this->assertEquals([], $input->getParameters());
400399
$this->assertEquals(true, $input->getOpMetadata()['detect_content_type']);
400+
401+
$request = new Models\PutObjectRequest('bucket-123', 'key-123', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, Models\ObjectACLType::PUBLIC_READ);
402+
$request->body = Utils::streamFor($body);
403+
$request->trafficLimit = 102400;
404+
$request->requestPayer = 'requester';
405+
$input = ObjectBasic::fromPutObject($request);
406+
$this->assertEquals('bucket-123', $input->getBucket());
407+
$this->assertEquals('key-123', $input->getKey());
408+
$this->assertEquals($input->getBody()->getContents(), $body);
409+
$this->assertEquals('102400', $input->getHeaders()['x-oss-traffic-limit']);
410+
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
411+
$this->assertEquals([], $input->getParameters());
412+
$this->assertEquals(true, $input->getOpMetadata()['detect_content_type']);
413+
$this->assertEquals(true, $input->getHeaders()['x-oss-object-acl']);
401414
}
402415

403416
public function testToPutObject()
@@ -842,6 +855,32 @@ public function testFromCopyObject()
842855
$this->assertEquals('Replace', $input->getHeaders()['x-oss-tagging-directive']);
843856
$this->assertEquals('REPLACE', $input->getHeaders()['x-oss-metadata-directive']);
844857
$this->assertEquals([], $input->getOpMetadata());
858+
859+
$request = new Models\CopyObjectRequest('bucket-123', 'key-123', null, 'src-key', 'CAEQNhiBgM0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY*****', '"D41D8CD98F00B204E9800998ECF8****"', '"D41D8CD98F00B204E9800998ECF9****"', 'Fri, 13 Nov 2023 14:47:53 GMT', 'Fri, 13 Nov 2015 14:47:53 GMT', null, Models\StorageClassType::STANDARD, array(
860+
"name" => "walker",
861+
"email" => "[email protected]",
862+
), null, null, null, null, null, null, null, 'REPLACE', 'KMS', 'SM4', '9468da86-3509-4f8d-a61e-6eab1eac****', 'TagA=B&TagC=D', 'Replace', true, 102400, null, null, null, Models\ObjectACLType::PRIVATE);
863+
$input = ObjectBasic::fromCopyObject($request);
864+
$this->assertEquals('bucket-123', $input->getBucket());
865+
$this->assertEquals('key-123', $input->getKey());
866+
$this->assertNull($input->getBody());
867+
$this->assertEquals('"D41D8CD98F00B204E9800998ECF8****"', $input->getHeaders()['x-oss-copy-source-if-match']);
868+
$this->assertEquals('"D41D8CD98F00B204E9800998ECF9****"', $input->getHeaders()['x-oss-copy-source-if-none-match']);
869+
$this->assertEquals('Fri, 13 Nov 2023 14:47:53 GMT', $input->getHeaders()['x-oss-copy-source-if-modified-since']);
870+
$this->assertEquals('Fri, 13 Nov 2015 14:47:53 GMT', $input->getHeaders()['x-oss-copy-source-if-unmodified-since']);
871+
$this->assertEquals('/bucket-123/src-key?versionId=CAEQNhiBgM0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY*****', $input->getHeaders()['x-oss-copy-source']);
872+
$this->assertEquals('walker', $input->getHeaders()['x-oss-meta-name']);
873+
$this->assertEquals('[email protected]', $input->getHeaders()['x-oss-meta-email']);
874+
$this->assertEquals('KMS', $input->getHeaders()['x-oss-server-side-encryption']);
875+
$this->assertEquals('SM4', $input->getHeaders()['x-oss-server-side-data-encryption']);
876+
$this->assertEquals('9468da86-3509-4f8d-a61e-6eab1eac****', $input->getHeaders()['x-oss-server-side-encryption-key-id']);
877+
$this->assertEquals(Models\StorageClassType::STANDARD, $input->getHeaders()['x-oss-storage-class']);
878+
$this->assertEquals(Models\ObjectACLType::PRIVATE, $input->getHeaders()['x-oss-object-acl']);
879+
$this->assertEquals('true', $input->getHeaders()['x-oss-forbid-overwrite']);
880+
$this->assertEquals('TagA=B&TagC=D', $input->getHeaders()['x-oss-tagging']);
881+
$this->assertEquals('Replace', $input->getHeaders()['x-oss-tagging-directive']);
882+
$this->assertEquals('REPLACE', $input->getHeaders()['x-oss-metadata-directive']);
883+
$this->assertEquals([], $input->getOpMetadata());
845884
}
846885

847886
public function testToCopyObject()
@@ -997,6 +1036,30 @@ public function testFromAppendObject()
9971036
$this->assertEmpty($input->getParameters()['append']);
9981037
$this->assertEquals('0', $input->getParameters()['position']);
9991038

1039+
$request = new Models\AppendObjectRequest('bucket-123', 'key-123', 0, null, Models\StorageClassType::STANDARD, array(
1040+
"location" => "demo",
1041+
"user" => "walker",
1042+
), 'no-cache', 'attachment', 'gzip', null, 'eB5eJF1ptWaXm4bijSPyxw==', null, '2022-10-12T00:00:00.000Z', 'AES256', null, null, 'TagA=A&TagB=B', true, null, null, null, null, null, Models\ObjectACLType::PRIVATE);
1043+
$input = ObjectBasic::fromAppendObject($request);
1044+
$this->assertEquals('bucket-123', $input->getBucket());
1045+
$this->assertEquals('key-123', $input->getKey());
1046+
$this->assertNull($input->getBody());
1047+
1048+
$this->assertEquals('no-cache', $input->getHeaders()['cache-control']);
1049+
$this->assertEquals('attachment', $input->getHeaders()['content-disposition']);
1050+
$this->assertEquals('walker', $input->getHeaders()['x-oss-meta-user']);
1051+
$this->assertEquals('demo', $input->getHeaders()['x-oss-meta-location']);
1052+
$this->assertEquals('AES256', $input->getHeaders()['x-oss-server-side-encryption']);
1053+
$this->assertEquals(Models\StorageClassType::STANDARD, $input->getHeaders()['x-oss-storage-class']);
1054+
$this->assertEquals(Models\ObjectACLType::PRIVATE, $input->getHeaders()['x-oss-object-acl']);
1055+
$this->assertEquals('true', $input->getHeaders()['x-oss-forbid-overwrite']);
1056+
$this->assertEquals('gzip', $input->getHeaders()['content-encoding']);
1057+
$this->assertEquals('eB5eJF1ptWaXm4bijSPyxw==', $input->getHeaders()['content-md5']);
1058+
$this->assertEquals('2022-10-12T00:00:00.000Z', $input->getHeaders()['expires']);
1059+
$this->assertEquals('TagA=A&TagB=B', $input->getHeaders()['x-oss-tagging']);
1060+
$this->assertEmpty($input->getParameters()['append']);
1061+
$this->assertEquals('0', $input->getParameters()['position']);
1062+
10001063
$request = new Models\AppendObjectRequest('bucket-123', 'key-123', 0);
10011064
$request->cacheControl = 'no-cache';
10021065
$request->contentDisposition = 'attachment';
@@ -1207,8 +1270,6 @@ public function testFromHeadObject()
12071270
$this->assertEquals('key-123', $input->getKey());
12081271
$this->assertEquals('CAEQNhiBgM0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY****', $input->getParameters()['versionId']);
12091272
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
1210-
1211-
12121273
}
12131274

12141275
public function testToHeadObject()
@@ -1358,7 +1419,6 @@ public function testToHeadObject()
13581419
$this->assertEquals('Appendable', $result->objectType);
13591420
$this->assertEquals(Models\StorageClassType::STANDARD, $result->storageClass);
13601421
$this->assertEquals(1001, $result->nextAppendPosition);
1361-
13621422
}
13631423

13641424
public function testFromGetObjectMeta()
@@ -1391,8 +1451,6 @@ public function testFromGetObjectMeta()
13911451
$this->assertEquals('key-123', $input->getKey());
13921452
$this->assertEquals('CAEQNhiBgM0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY****', $input->getParameters()['versionId']);
13931453
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
1394-
1395-
13961454
}
13971455

13981456
public function testToGetObjectMeta()
@@ -1474,7 +1532,6 @@ public function testToGetObjectMeta()
14741532
} catch (\Throwable $e) {
14751533
$this->assertTrue(false, "should not here");
14761534
}
1477-
14781535
}
14791536

14801537
public function testFromRestoreObject()
@@ -1698,6 +1755,21 @@ public function testFromPutObjectAcl()
16981755
$this->assertEquals('key-123', $input->getKey());
16991756
$this->assertEquals(Models\ObjectACLType::PRIVATE, $input->getHeaders()["x-oss-object-acl"]);
17001757
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
1758+
1759+
$request = new Models\PutObjectAclRequest('bucket-123', 'key-123', null, null, null, null, Models\ObjectACLType::PRIVATE);
1760+
$request->requestPayer = 'requester';
1761+
$input = ObjectBasic::fromPutObjectAcl($request);
1762+
$this->assertEquals('bucket-123', $input->getBucket());
1763+
$this->assertEquals('key-123', $input->getKey());
1764+
$this->assertEquals(Models\ObjectACLType::PRIVATE, $input->getHeaders()["x-oss-object-acl"]);
1765+
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
1766+
1767+
$request = new Models\PutObjectAclRequest('bucket-123', 'key-123',null,null,'requester',null,Models\ObjectACLType::PRIVATE);
1768+
$input = ObjectBasic::fromPutObjectAcl($request);
1769+
$this->assertEquals('bucket-123', $input->getBucket());
1770+
$this->assertEquals('key-123', $input->getKey());
1771+
$this->assertEquals(Models\ObjectACLType::PRIVATE, $input->getHeaders()["x-oss-object-acl"]);
1772+
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
17011773
}
17021774

17031775
public function testToPutObjectAcl()
@@ -2294,6 +2366,28 @@ public function testFromPutSymlink()
22942366
$this->assertEquals('key-123', $input->getKey());
22952367
$this->assertEquals('target-key', $input->getHeaders()['x-oss-symlink-target']);
22962368
$this->assertEquals('requester', $input->getHeaders()['x-oss-request-payer']);
2369+
2370+
$request = new Models\PutSymlinkRequest('bucket-123', 'key-123', null, null, Models\StorageClassType::STANDARD, ['name' => 'demo', 'email' => '[email protected]'], true, null, null, Models\ObjectACLType::PUBLIC_READ, 'target-key');
2371+
$input = ObjectBasic::fromPutSymlink($request);
2372+
$this->assertEquals('bucket-123', $input->getBucket());
2373+
$this->assertEquals('key-123', $input->getKey());
2374+
$this->assertEquals('target-key', $input->getHeaders()['x-oss-symlink-target']);
2375+
$this->assertEquals('true', $input->getHeaders()['x-oss-forbid-overwrite']);
2376+
$this->assertEquals(Models\ObjectACLType::PUBLIC_READ, $input->getHeaders()['x-oss-object-acl']);
2377+
$this->assertEquals(Models\StorageClassType::STANDARD, $input->getHeaders()['x-oss-storage-class']);
2378+
$this->assertEquals('demo', $input->getHeaders()['x-oss-meta-name']);
2379+
$this->assertEquals('[email protected]', $input->getHeaders()['x-oss-meta-email']);
2380+
2381+
$request = new Models\PutSymlinkRequest('bucket-123', 'key-123', null, null, Models\StorageClassType::STANDARD, ['name' => 'demo', 'email' => '[email protected]'], true,null,null,Models\ObjectACLType::PUBLIC_READ,'target-key2');
2382+
$input = ObjectBasic::fromPutSymlink($request);
2383+
$this->assertEquals('bucket-123', $input->getBucket());
2384+
$this->assertEquals('key-123', $input->getKey());
2385+
$this->assertEquals('target-key2', $input->getHeaders()['x-oss-symlink-target']);
2386+
$this->assertEquals('true', $input->getHeaders()['x-oss-forbid-overwrite']);
2387+
$this->assertEquals(Models\ObjectACLType::PUBLIC_READ, $input->getHeaders()['x-oss-object-acl']);
2388+
$this->assertEquals(Models\StorageClassType::STANDARD, $input->getHeaders()['x-oss-storage-class']);
2389+
$this->assertEquals('demo', $input->getHeaders()['x-oss-meta-name']);
2390+
$this->assertEquals('[email protected]', $input->getHeaders()['x-oss-meta-email']);
22972391
}
22982392

22992393
public function testToPutSymlink()

0 commit comments

Comments
 (0)