[Cloud Storage API(V2)] Javaで管理フォルダ(マネージドフォルダ)を取得する

Cloud Storage API V2(Java)を使用して、
Cloud Storageのバケットの管理フォルダ(マネージドフォルダ)を取得する
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No|||目次|
|---|---|---|---|
|1|||[管理フォルダリストを取得](#1-管理フォルダリストを取得)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
|2|||[管理フォルダを取得](#2-管理フォルダを取得)|
||1||[スコープ](#21-スコープ)|
||2||[実行](#22-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|

## 1. 管理フォルダリストを取得
指定したバケットの管理フォルダ(マネージドフォルダ)リストを取得します。

### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
StorageScopes.CLOUD_PLATFORM
StorageScopes.CLOUD_PLATFORM_READ_ONLY
StorageScopes.DEVSTORAGE_FULL_CONTROL
StorageScopes.DEVSTORAGE_READ_ONLY
StorageScopes.DEVSTORAGE_READ_WRITE
```
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d#22-storageインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行

```java
public static void main(String[] args) throws Exception{
    Storage storage = getStorage();
    Storage.ManagedFolders folder = storage.managedFolders();
    
    Storage.ManagedFolders.List list = folder.list("バケットID");
    
    ManagedFolders res = list.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
GET:　https:\//storage.googleapis.com/storage/v1/b/{バケットID}/managedFolders
が実行されます。

#### 1.2.2. クエリパラメータ
Storage.ManagedFolders.Listのsetメソッドにより、クエリパラメータを追加できます。

|メソッド|引数|説明|
|---|---|---|
|setPprefix|String|管理フォルダ名がプレフィックス(接頭語)で始まるもののみ取得|
|setMaxResults|Long|取得するオブジェクトの最大数<br>最大:1000|
|setPageToken|String|取得するページトークン|

### 1.3. レスポンスの内容
#### ManagedFolders
|メソッド|戻り値|説明|
|---|---|---|
|getKind|String|リソースの種類<br>固定文字列："storage#managedFolders"|
|getNextPageToken|String|次のページトークン|
|getItems|List\<[ManagedFolder](#managedfolder)\>|オブジェクトのリスト|

#### ManagedFolder
|メソッド|戻り値|説明|
|---|---|---|
|getId|String|管理フォルダID|
|getName|String|管理フォルダの名前|
|getSelfLink|String|管理フォルダURI|
|getKind|String|リソースの種類<br>固定文字列："storage#managedFolder"|
|getBucket|String|管理フォルダーが含まれるバケットの名前|
|getCreateTime|DateTime|作成された時刻|
|getUpdateTime|DateTime|最後に更新された時刻|
|getMetageneration|Long|メタ世代番号(metageneration)|

## 2. 管理フォルダを取得
指定した管理フォルダ(マネージドフォルダ)のメタデータを取得します。

### 2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
StorageScopes.CLOUD_PLATFORM
StorageScopes.CLOUD_PLATFORM_READ_ONLY
StorageScopes.DEVSTORAGE_FULL_CONTROL
StorageScopes.DEVSTORAGE_READ_ONLY
StorageScopes.DEVSTORAGE_READ_WRITE
```
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d#22-storageインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行
管理フォルダ名は、[ManagedFolder](#managedfolder)のgetName()で取得できる値を使用します。

```java
public static void main(String[] args) throws Exception{
    Storage storage = getStorage();
    Storage.ManagedFolders folder = storage.managedFolders();
    Storage.ManagedFolders.Get get = folder.get("バケットID","管理フォルダ名");
    
    ManagedFolder res = get.execute();
    System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
GET:　https:\https://storage.googleapis.com/storage/v1/b/{バケットID}/managedFolders/{管理フォルダ名}
が実行されます。

#### 2.2.2. クエリパラメータ
クエリパラメータはありません。

### 2.3. レスポンスの内容
#### ManagedFolder
[2.3. レスポンスの内容(ManagedFolder)](#managedfolder)と同じです。
<br>
<br>
おしまい。。