Skip to content

Commit 0da3e9f

Browse files
committed
add bucket inventory api
1 parent 39d83ec commit 0da3e9f

29 files changed

+1946
-0
lines changed

Diff for: sample/DeleteBucketInventory.php

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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+
$inventoryId = 'test-inventory-id';
41+
$request = new Oss\Models\DeleteBucketInventoryRequest(
42+
$bucket,
43+
inventoryId: $inventoryId
44+
);
45+
$result = $client->deleteBucketInventory($request);
46+
47+
printf(
48+
'status code:' . $result->statusCode . PHP_EOL .
49+
'request id:' . $result->requestId
50+
);

Diff for: sample/GetBucketInventory.php

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
$inventoryId = 'test-inventory-id';
41+
$request = new Oss\Models\GetBucketInventoryRequest(
42+
$bucket,
43+
inventoryId: $inventoryId
44+
);
45+
$result = $client->getBucketInventory($request);
46+
47+
printf(
48+
'status code:' . $result->statusCode . PHP_EOL .
49+
'request id:' . $result->requestId . PHP_EOL .
50+
'inventory config:' . var_export($result->inventoryConfiguration, true)
51+
);

Diff for: sample/ListBucketInventory.php

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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\ListBucketInventoryRequest(
41+
$bucket,
42+
);
43+
$result = $client->listBucketInventory($request);
44+
45+
printf(
46+
'status code:' . $result->statusCode . PHP_EOL .
47+
'request id:' . $result->requestId . PHP_EOL .
48+
'list inventory config:' . var_export($result->listInventoryConfigurationsResult->inventoryConfigurations, true)
49+
);

Diff for: sample/PutBucketInventory.php

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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+
"account-id" => ['help' => 'The account id of the bucket', 'required' => True],
13+
];
14+
$longopts = \array_map(function ($key) {
15+
return "$key:";
16+
}, array_keys($optsdesc));
17+
$options = getopt("", $longopts);
18+
foreach ($optsdesc as $key => $value) {
19+
if ($value['required'] === True && empty($options[$key])) {
20+
$help = $value['help'];
21+
echo "Error: the following arguments are required: --$key, $help";
22+
exit(1);
23+
}
24+
}
25+
26+
$region = $options["region"];
27+
$bucket = $options["bucket"];
28+
$accountId = $options["account-id"];
29+
30+
// Loading credentials values from the environment variables
31+
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
32+
33+
// Using the SDK's default configuration
34+
$cfg = Oss\Config::loadDefault();
35+
$cfg->setCredentialsProvider($credentialsProvider);
36+
$cfg->setRegion($region);
37+
if (isset($options["endpoint"])) {
38+
$cfg->setEndpoint($options["endpoint"]);
39+
}
40+
41+
$client = new Oss\Client($cfg);
42+
$inventoryId = 'test-inventory-id';
43+
$request = new Oss\Models\PutBucketInventoryRequest(
44+
$bucket,
45+
inventoryId: $inventoryId,
46+
inventoryConfiguration: new Oss\Models\InventoryConfiguration(
47+
isEnabled: true,
48+
destination: new Oss\Models\InventoryDestination(
49+
ossBucketDestination: new Oss\Models\InventoryOSSBucketDestination(
50+
bucket: 'acs:oss:::' . $bucket,
51+
prefix: 'prefix1',
52+
format: Oss\Models\InventoryFormatType::CSV,
53+
accountId: $accountId,
54+
roleArn: 'acs:ram::' . $accountId . ':role/AliyunOSSRole'
55+
)
56+
),
57+
schedule: new Oss\Models\InventorySchedule(
58+
frequency: Oss\Models\InventoryFrequencyType::DAILY
59+
),
60+
filter: new Oss\Models\InventoryFilter(
61+
prefix: 'filterPrefix',
62+
lastModifyBeginTimeStamp: 1637883649,
63+
lastModifyEndTimeStamp: 1638347592,
64+
lowerSizeBound: 1024,
65+
upperSizeBound: 1048576,
66+
storageClass: 'Standard,IA'
67+
),
68+
includedObjectVersions: 'All',
69+
optionalFields: new Oss\Models\OptionalFields(
70+
fields: array(
71+
Oss\Models\InventoryOptionalFieldType::STORAGE_CLASS
72+
)
73+
),
74+
id: $inventoryId
75+
));
76+
$result = $client->putBucketInventory($request);
77+
78+
printf(
79+
'status code:' . $result->statusCode . PHP_EOL .
80+
'request id:' . $result->requestId
81+
);

Diff for: src/Client.php

+8
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,14 @@
212212
* @method \GuzzleHttp\Promise\Promise putBucketPublicAccessBlockAsync(Models\PutBucketPublicAccessBlockRequest $request, array $args = []) Enables or disables Block Public Access for a bucket.
213213
* @method Models\DeleteBucketPublicAccessBlockResult deleteBucketPublicAccessBlock(Models\DeleteBucketPublicAccessBlockRequest $request, array $args = []) Deletes the Block Public Access configurations of a bucket.
214214
* @method \GuzzleHttp\Promise\Promise deleteBucketPublicAccessBlockAsync(Models\DeleteBucketPublicAccessBlockRequest $request, array $args = []) Deletes the Block Public Access configurations of a bucket.
215+
* @method Models\PutBucketInventoryResult putBucketInventory(Models\PutBucketInventoryRequest $request, array $args = []) Configures an inventory for a bucket.
216+
* @method \GuzzleHttp\Promise\Promise putBucketInventoryAsync(Models\PutBucketInventoryRequest $request, array $args = []) Configures an inventory for a bucket.
217+
* @method Models\GetBucketInventoryResult getBucketInventory(Models\GetBucketInventoryRequest $request, array $args = []) Queries the inventories that are configured for a bucket.
218+
* @method \GuzzleHttp\Promise\Promise getBucketInventoryAsync(Models\GetBucketInventoryRequest $request, array $args = []) Queries the inventories that are configured for a bucket.
219+
* @method Models\ListBucketInventoryResult listBucketInventory(Models\ListBucketInventoryRequest $request, array $args = []) Queries all inventories in a bucket at a time.
220+
* @method \GuzzleHttp\Promise\Promise listBucketInventoryAsync(Models\ListBucketInventoryRequest $request, array $args = []) Queries all inventories in a bucket at a time.
221+
* @method Models\DeleteBucketInventoryResult deleteBucketInventory(Models\DeleteBucketInventoryRequest $request, array $args = []) Deletes an inventory for a bucket.
222+
* @method \GuzzleHttp\Promise\Promise deleteBucketInventoryAsync(Models\DeleteBucketInventoryRequest $request, array $args = []) Deletes an inventory for a bucket.
215223
*/
216224
final class Client
217225
{

Diff for: src/Models/DeleteBucketInventoryRequest.php

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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 DeleteBucketInventory operation.
12+
* Class DeleteBucketInventoryRequest
13+
* @package AlibabaCloud\Oss\V2\Models
14+
*/
15+
final class DeleteBucketInventoryRequest 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+
* The name of the inventory that you want to delete.
27+
* @var string|null
28+
*/
29+
#[RequiredProperty()]
30+
#[TagProperty(tag: '', position: 'query', rename: 'inventoryId', type: 'string')]
31+
public ?string $inventoryId;
32+
33+
/**
34+
* DeleteBucketInventoryRequest constructor.
35+
* @param string|null $bucket The name of the bucket.
36+
* @param string|null $inventoryId The name of the inventory that you want to delete.
37+
* @param array|null $options
38+
*/
39+
public function __construct(
40+
?string $bucket = null,
41+
?string $inventoryId = null,
42+
?array $options = null
43+
)
44+
{
45+
$this->bucket = $bucket;
46+
$this->inventoryId = $inventoryId;
47+
parent::__construct($options);
48+
}
49+
}

Diff for: src/Models/DeleteBucketInventoryResult.php

+15
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 DeleteBucketInventory operation.
10+
* Class DeleteBucketInventoryResult
11+
* @package AlibabaCloud\Oss\V2\Models
12+
*/
13+
final class DeleteBucketInventoryResult extends ResultModel
14+
{
15+
}

Diff for: src/Models/GetBucketInventoryRequest.php

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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 GetBucketInventory operation.
12+
* Class GetBucketInventoryRequest
13+
* @package AlibabaCloud\Oss\V2\Models
14+
*/
15+
final class GetBucketInventoryRequest 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+
* The name of the inventory to be queried.
27+
* @var string|null
28+
*/
29+
#[RequiredProperty()]
30+
#[TagProperty(tag: '', position: 'query', rename: 'inventoryId', type: 'string')]
31+
public ?string $inventoryId;
32+
33+
/**
34+
* GetBucketInventoryRequest constructor.
35+
* @param string|null $bucket The name of the bucket.
36+
* @param string|null $inventoryId The name of the inventory to be queried.
37+
* @param array|null $options
38+
*/
39+
public function __construct(
40+
?string $bucket = null,
41+
?string $inventoryId = null,
42+
?array $options = null
43+
)
44+
{
45+
$this->bucket = $bucket;
46+
$this->inventoryId = $inventoryId;
47+
parent::__construct($options);
48+
}
49+
}

0 commit comments

Comments
 (0)