Skip to content

Commit 50a8ba7

Browse files
committed
add bucket inventory api
1 parent 88ca171 commit 50a8ba7

29 files changed

+1946
-0
lines changed

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+
);

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+
);

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+
);

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+
);

src/Client.php

+8
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\PutBucketInventoryResult putBucketInventory(Models\PutBucketInventoryRequest $request, array $args = []) Configures an inventory for a bucket.
124+
* @method \GuzzleHttp\Promise\Promise putBucketInventoryAsync(Models\PutBucketInventoryRequest $request, array $args = []) Configures an inventory for a bucket.
125+
* @method Models\GetBucketInventoryResult getBucketInventory(Models\GetBucketInventoryRequest $request, array $args = []) Queries the inventories that are configured for a bucket.
126+
* @method \GuzzleHttp\Promise\Promise getBucketInventoryAsync(Models\GetBucketInventoryRequest $request, array $args = []) Queries the inventories that are configured for a bucket.
127+
* @method Models\ListBucketInventoryResult listBucketInventory(Models\ListBucketInventoryRequest $request, array $args = []) Queries all inventories in a bucket at a time.
128+
* @method \GuzzleHttp\Promise\Promise listBucketInventoryAsync(Models\ListBucketInventoryRequest $request, array $args = []) Queries all inventories in a bucket at a time.
129+
* @method Models\DeleteBucketInventoryResult deleteBucketInventory(Models\DeleteBucketInventoryRequest $request, array $args = []) Deletes an inventory for a bucket.
130+
* @method \GuzzleHttp\Promise\Promise deleteBucketInventoryAsync(Models\DeleteBucketInventoryRequest $request, array $args = []) Deletes an inventory for a bucket.
123131
*/
124132
final class Client
125133
{
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+
}
+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+
}
+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)