Skip to content

Commit d5d6a0e

Browse files
yangzong18huiguangjun
authored andcommitted
add bucket policy api
1 parent debe8b0 commit d5d6a0e

18 files changed

+987
-0
lines changed

sample/DeleteBucketPolicy.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
require_once __DIR__ . '/../vendor/autoload.php';
4+
5+
use AlibabaCloud\Oss\V2 as Oss;
6+
7+
// parse args
8+
$optsdesc = [
9+
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True],
10+
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
11+
"bucket" => ['help' => 'The name of the bucket', 'required' => True],
12+
];
13+
$longopts = \array_map(function ($key) {
14+
return "$key:";
15+
}, array_keys($optsdesc));
16+
$options = getopt("", $longopts);
17+
foreach ($optsdesc as $key => $value) {
18+
if ($value['required'] === True && empty($options[$key])) {
19+
$help = $value['help'];
20+
echo "Error: the following arguments are required: --$key, $help";
21+
exit(1);
22+
}
23+
}
24+
25+
$region = $options["region"];
26+
$bucket = $options["bucket"];
27+
28+
// Loading credentials values from the environment variables
29+
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
30+
31+
// Using the SDK's default configuration
32+
$cfg = Oss\Config::loadDefault();
33+
$cfg->setCredentialsProvider($credentialsProvider);
34+
$cfg->setRegion($region);
35+
if (isset($options["endpoint"])) {
36+
$cfg->setEndpoint($options["endpoint"]);
37+
}
38+
39+
$client = new Oss\Client($cfg);
40+
$request = new Oss\Models\DeleteBucketPolicyRequest($bucket);
41+
$result = $client->deleteBucketPolicy($request);
42+
43+
printf(
44+
'status code:' . $result->statusCode . PHP_EOL .
45+
'request id:' . $result->requestId . PHP_EOL
46+
);
47+

sample/GetBucketPolicy.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
require_once __DIR__ . '/../vendor/autoload.php';
4+
5+
use AlibabaCloud\Oss\V2 as Oss;
6+
7+
// parse args
8+
$optsdesc = [
9+
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True],
10+
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
11+
"bucket" => ['help' => 'The name of the bucket', 'required' => True],
12+
];
13+
$longopts = \array_map(function ($key) {
14+
return "$key:";
15+
}, array_keys($optsdesc));
16+
$options = getopt("", $longopts);
17+
foreach ($optsdesc as $key => $value) {
18+
if ($value['required'] === True && empty($options[$key])) {
19+
$help = $value['help'];
20+
echo "Error: the following arguments are required: --$key, $help";
21+
exit(1);
22+
}
23+
}
24+
25+
$region = $options["region"];
26+
$bucket = $options["bucket"];
27+
28+
// Loading credentials values from the environment variables
29+
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
30+
31+
// Using the SDK's default configuration
32+
$cfg = Oss\Config::loadDefault();
33+
$cfg->setCredentialsProvider($credentialsProvider);
34+
$cfg->setRegion($region);
35+
if (isset($options["endpoint"])) {
36+
$cfg->setEndpoint($options["endpoint"]);
37+
}
38+
39+
$client = new Oss\Client($cfg);
40+
$request = new Oss\Models\GetBucketPolicyRequest($bucket);
41+
$result = $client->getBucketPolicy($request);
42+
43+
printf(
44+
'status code:' . $result->statusCode . PHP_EOL .
45+
'request id:' . $result->requestId . PHP_EOL .
46+
'policy:' . $result->body
47+
);
48+

sample/GetBucketPolicyStatus.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
require_once __DIR__ . '/../vendor/autoload.php';
4+
5+
use AlibabaCloud\Oss\V2 as Oss;
6+
7+
// parse args
8+
$optsdesc = [
9+
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True],
10+
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
11+
"bucket" => ['help' => 'The name of the bucket', 'required' => True],
12+
];
13+
$longopts = \array_map(function ($key) {
14+
return "$key:";
15+
}, array_keys($optsdesc));
16+
$options = getopt("", $longopts);
17+
foreach ($optsdesc as $key => $value) {
18+
if ($value['required'] === True && empty($options[$key])) {
19+
$help = $value['help'];
20+
echo "Error: the following arguments are required: --$key, $help";
21+
exit(1);
22+
}
23+
}
24+
25+
$region = $options["region"];
26+
$bucket = $options["bucket"];
27+
28+
// Loading credentials values from the environment variables
29+
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
30+
31+
// Using the SDK's default configuration
32+
$cfg = Oss\Config::loadDefault();
33+
$cfg->setCredentialsProvider($credentialsProvider);
34+
$cfg->setRegion($region);
35+
if (isset($options["endpoint"])) {
36+
$cfg->setEndpoint($options["endpoint"]);
37+
}
38+
39+
$client = new Oss\Client($cfg);
40+
$request = new Oss\Models\GetBucketPolicyStatusRequest($bucket);
41+
$result = $client->getBucketPolicyStatus($request);
42+
43+
printf(
44+
'status code:' . $result->statusCode . PHP_EOL .
45+
'request id:' . $result->requestId . PHP_EOL .
46+
'policy status:' . var_export($result->policyStatus->isPublic, true)
47+
);
48+

sample/PutBucketPolicy.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
require_once __DIR__ . '/../vendor/autoload.php';
4+
5+
use AlibabaCloud\Oss\V2 as Oss;
6+
7+
// parse args
8+
$optsdesc = [
9+
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True],
10+
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
11+
"bucket" => ['help' => 'The name of the bucket', 'required' => True],
12+
];
13+
$longopts = \array_map(function ($key) {
14+
return "$key:";
15+
}, array_keys($optsdesc));
16+
$options = getopt("", $longopts);
17+
foreach ($optsdesc as $key => $value) {
18+
if ($value['required'] === True && empty($options[$key])) {
19+
$help = $value['help'];
20+
echo "Error: the following arguments are required: --$key, $help";
21+
exit(1);
22+
}
23+
}
24+
25+
$region = $options["region"];
26+
$bucket = $options["bucket"];
27+
28+
// Loading credentials values from the environment variables
29+
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
30+
31+
// Using the SDK's default configuration
32+
$cfg = Oss\Config::loadDefault();
33+
$cfg->setCredentialsProvider($credentialsProvider);
34+
$cfg->setRegion($region);
35+
if (isset($options["endpoint"])) {
36+
$cfg->setEndpoint($options["endpoint"]);
37+
}
38+
39+
$client = new Oss\Client($cfg);
40+
$request = new Oss\Models\PutBucketPolicyRequest($bucket, '{
41+
"Version":"1",
42+
"Statement":[
43+
{
44+
"Action":[
45+
"oss:PutObject",
46+
"oss:GetObject"
47+
],
48+
"Effect":"Deny",
49+
"Principal":["1234567890"],
50+
"Resource":["acs:oss:*:1234567890:*/*"]
51+
}
52+
]
53+
}');
54+
$result = $client->putBucketPolicy($request);
55+
56+
printf(
57+
'status code:' . $result->statusCode . PHP_EOL .
58+
'request id:' . $result->requestId . PHP_EOL
59+
);

src/Client.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@
120120
* @method \GuzzleHttp\Promise\Promise putBucketTransferAccelerationAsync(Models\PutBucketTransferAccelerationRequest $request, array $args = []) Configures transfer acceleration for a bucket. After you enable transfer acceleration for a bucket, the object access speed is accelerated for users worldwide. The transfer acceleration feature is applicable to scenarios where data needs to be transferred over long geographical distances. This feature can also be used to download or upload objects that are gigabytes or terabytes in size.
121121
* @method Models\GetBucketTransferAccelerationResult getBucketTransferAcceleration(Models\GetBucketTransferAccelerationRequest $request, array $args = []) Queries the transfer acceleration configurations of a bucket.
122122
* @method \GuzzleHttp\Promise\Promise getBucketTransferAccelerationAsync(Models\GetBucketTransferAccelerationRequest $request, array $args = []) Queries the transfer acceleration configurations of a bucket.
123+
* @method Models\PutBucketPolicyResult putBucketPolicy(Models\PutBucketPolicyRequest $request, array $args = []) Configures a policy for a bucket.
124+
* @method \GuzzleHttp\Promise\Promise putBucketPolicyAsync(Models\PutBucketPolicyRequest $request, array $args = []) Configures a policy for a bucket.
125+
* @method Models\GetBucketPolicyResult getBucketPolicy(Models\GetBucketPolicyRequest $request, array $args = []) Queries the policies configured for a bucket.
126+
* @method \GuzzleHttp\Promise\Promise getBucketPolicyAsync(Models\GetBucketPolicyRequest $request, array $args = []) Queries the policies configured for a bucket.
127+
* @method Models\DeleteBucketPolicyResult deleteBucketPolicy(Models\DeleteBucketPolicyRequest $request, array $args = []) Deletes a policy for a bucket.
128+
* @method \GuzzleHttp\Promise\Promise deleteBucketPolicyAsync(Models\DeleteBucketPolicyRequest $request, array $args = []) Deletes a policy for a bucket.
129+
* @method Models\GetBucketPolicyStatusResult getBucketPolicyStatus(Models\GetBucketPolicyStatusRequest $request, array $args = []) Checks whether the current bucket policy allows public access.
130+
* @method \GuzzleHttp\Promise\Promise getBucketPolicyStatusAsync(Models\GetBucketPolicyStatusRequest $request, array $args = []) Checks whether the current bucket policy allows public access.
123131
*/
124132
final class Client
125133
{
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace AlibabaCloud\Oss\V2\Models;
5+
6+
use AlibabaCloud\Oss\V2\Types\RequestModel;
7+
use AlibabaCloud\Oss\V2\Annotation\TagProperty;
8+
use AlibabaCloud\Oss\V2\Annotation\RequiredProperty;
9+
10+
/**
11+
* The request for the DeleteBucketPolicy operation.
12+
* Class DeleteBucketPolicyRequest
13+
* @package AlibabaCloud\Oss\V2\Models
14+
*/
15+
final class DeleteBucketPolicyRequest extends RequestModel
16+
{
17+
/**
18+
* The name of the bucket.
19+
* @var string|null
20+
*/
21+
#[RequiredProperty()]
22+
#[TagProperty(tag: '', position: 'host', rename: 'bucket', type: 'string')]
23+
public ?string $bucket;
24+
25+
/**
26+
* DeleteBucketPolicyRequest constructor.
27+
* @param string|null $bucket The name of the bucket.
28+
* @param array|null $options
29+
*/
30+
public function __construct(
31+
?string $bucket = null,
32+
?array $options = null
33+
)
34+
{
35+
$this->bucket = $bucket;
36+
parent::__construct($options);
37+
}
38+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace AlibabaCloud\Oss\V2\Models;
5+
6+
use AlibabaCloud\Oss\V2\Types\ResultModel;
7+
8+
/**
9+
* The result for the DeleteBucketPolicy operation.
10+
* Class DeleteBucketPolicyResult
11+
* @package AlibabaCloud\Oss\V2\Models
12+
*/
13+
final class DeleteBucketPolicyResult extends ResultModel
14+
{
15+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace AlibabaCloud\Oss\V2\Models;
5+
6+
use AlibabaCloud\Oss\V2\Types\RequestModel;
7+
use AlibabaCloud\Oss\V2\Annotation\TagProperty;
8+
use AlibabaCloud\Oss\V2\Annotation\RequiredProperty;
9+
10+
/**
11+
* The request for the GetBucketPolicy operation.
12+
* Class GetBucketPolicyRequest
13+
* @package AlibabaCloud\Oss\V2\Models
14+
*/
15+
final class GetBucketPolicyRequest extends RequestModel
16+
{
17+
/**
18+
* The name of the bucket.
19+
* @var string|null
20+
*/
21+
#[RequiredProperty()]
22+
#[TagProperty(tag: '', position: 'host', rename: 'bucket', type: 'string')]
23+
public ?string $bucket;
24+
25+
/**
26+
* GetBucketPolicyRequest constructor.
27+
* @param string|null $bucket The name of the bucket.
28+
* @param array|null $options
29+
*/
30+
public function __construct(
31+
?string $bucket = null,
32+
?array $options = null
33+
)
34+
{
35+
$this->bucket = $bucket;
36+
parent::__construct($options);
37+
}
38+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace AlibabaCloud\Oss\V2\Models;
5+
6+
use AlibabaCloud\Oss\V2\Types\ResultModel;
7+
8+
/**
9+
* The result for the GetBucketPolicy operation.
10+
* Class GetBucketPolicyResult
11+
* @package AlibabaCloud\Oss\V2\Models
12+
*/
13+
final class GetBucketPolicyResult extends ResultModel
14+
{
15+
/**
16+
* @var string|null
17+
*/
18+
public ?string $body;
19+
20+
/**
21+
* GetBucketPolicyRequest constructor.
22+
* @param string|null $body
23+
*/
24+
public function __construct(
25+
?string $body = null
26+
)
27+
{
28+
$this->body = $body;
29+
}
30+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace AlibabaCloud\Oss\V2\Models;
5+
6+
use AlibabaCloud\Oss\V2\Types\RequestModel;
7+
use AlibabaCloud\Oss\V2\Annotation\TagProperty;
8+
use AlibabaCloud\Oss\V2\Annotation\RequiredProperty;
9+
10+
/**
11+
* The request for the GetBucketPolicyStatus operation.
12+
* Class GetBucketPolicyStatusRequest
13+
* @package AlibabaCloud\Oss\V2\Models
14+
*/
15+
final class GetBucketPolicyStatusRequest extends RequestModel
16+
{
17+
/**
18+
* The name of the bucket.
19+
* @var string|null
20+
*/
21+
#[RequiredProperty()]
22+
#[TagProperty(tag: '', position: 'host', rename: 'bucket', type: 'string')]
23+
public ?string $bucket;
24+
25+
/**
26+
* GetBucketPolicyStatusRequest constructor.
27+
* @param string|null $bucket The name of the bucket.
28+
* @param array|null $options
29+
*/
30+
public function __construct(
31+
?string $bucket = null,
32+
?array $options = null
33+
)
34+
{
35+
$this->bucket = $bucket;
36+
parent::__construct($options);
37+
}
38+
}

0 commit comments

Comments
 (0)