/n software Cloud Storage Integrator の使用方法: Box.com

はじめに

/n software の Cloud Storage Integrator は、Amazon S3 や Google Drive、Dropbox、Box.com、OneDrive などのクラウド ストレージ サービスにアクセスできる、使い勝手のよいコンポーネントを提供します。

このツールキットは、個々のサービスごとのコンポーネントと、複数のサービスにアクセスできる、統一された API を備えた  CloudStorage  コンポーネントから成っています。

Cloud Storage Integrator ではまた、クラウドに保存されるデータを保護するため、強力な暗号化サポートも提供しています。

前回の Azure Blob コンポーネントに続き、今回はファイルやフォルダーのアップロード、ダウンロード、その他の管理を容易にする Box.com のサービスに特化した、Box 専用コンポーネント の使用方法について説明します。

Box.com

Box コンポーネントの使用により、Box.com でファイルやフォルダーを簡単にアップロード、ダウンロード、および管理できます。Box コンポーネントは、Box.com で作業するためのシンプルなインターフェイスを提供します。ファイルのアップロードおよびダウンロード、強力な暗号化サポート、フォルダーの作成、リソースの移動やコピーなどの機能が含まれます。

まず、アカウントを作成し、アプリケーションを Box.com に登録します。このプロセスについては、Box.com のドキュメントを参照してください。

認証

認証は、OAuth 2.0 経由で行われます。ツールキットに含まれる OAuth コンポーネントか、その他の OAuth 実装を使用して認証を実行し、認証文字列を取得します。以下のような認証文字列を取得したら、操作を実行する前に、この値を [Authorization] プロパティに割り当てます。

Bearer ya29.AHES6ZSZEJzATdZYjeihDn5W-VrXSsxEZu5p0pclxGdKKQ

サポートされる有効範囲の値とOAuth 認証に関する詳細は、この特定のサービスに関するBox.com のドキュメントを参照してください。

OAuth を使った例

[csharp light=”true”] oauth.ClientProfile = OauthClientProfiles.cfApplication;
oauth.ClientId = OAUTH_CLIENT_ID;
oauth.ClientSecret = OAUTH_SECRET_ID;
oauth.RefreshToken = refreshToken;

oauth.ServerAuthURL = "https://app.box.com/api/oauth2/authorize";
oauth.ServerTokenURL = "https://api.box.com/oauth2/token";
oauth.AuthorizationScope = "";

oauth.Config("WebServerPort=7777"); // http://localhost:7777 is a registered redirect_uri for the app

string authString = oauth.GetAuthorization();

box.Authorization = authString;[/csharp]

リソースの一覧表示

ListResourcesは、指定したパスにあるアカウント内のリソースを一覧表示します。

ListResources は、 ResourceParentId で指定したフォルダー内のリソースを一覧表示します。ResourceParentId が指定されていない場合、ルート フォルダーの内容が表示されます。

このメソッドを呼び出した後、ResourceIndex の値を 0 から ResourceCount – 1 に設定します。ResourceIndex を設定すると、他の [Resource] プロパティが設定され、リソースに関する情報が提供されます。
上記の呼び出しにより、次のリソース プロパティが読み込まれます。

  • ResourceDeleted
  • ResourceETag
  • ResourceHash (フォルダーには適用されない)
  • ResourceId
  • ResourceMarker
  • ResourceName
  • ResourceRevision
  • ResourceType

結果がページ分割されている場合、ResourceMarker プロパティが読み込まれます。このメソッドを再度呼び出すことで、結果の次のページが取得できます。結果の最終ページが返されると、ResourceMarker は空になります。
注: 各リソースのレスポンスで返される特定のフィールド一覧を定義するには、AddQueryParam を介して”fields” パラメーターを設定します。使用可能なフィールドの完全なリストは、Box のドキュメントを参照してください。

[csharp light=”true”]box.ResourceParentId = "123456";
box.ListResources();
for (int i = 0; i < box.ResourceCount; i++)
{
box.ResourceIndex = i;
Console.WriteLine(box.ResourceName);
}[/csharp]

ファイルのダウンロード

DownloadFile メソッドでは、特定のファイルをダウンロードします。

DownloadFile を使うと、ResourceId で指定したファイルをダウンロードします。このメソッドを呼び出す前に、ResourceId をダウンロードするファイルの Id に設定します。ファイルは、SetDownloadStream で設定されたストリームにダウンロードされます。ストリームが指定されていない場合には、ファイルは LocalFile で設定された場所に保存されます。ストリームとLocalFile のいずれも指定されていない場合には、ファイルのデータは ResourceData に保留されます。

暗号化されたファイルを復号するには、このメソッドを呼び出す前に EncryptionAlgorithmEncryptionPassword を設定します。

[csharp light=”true”]box.ResourceId = "50619395801"
box.LocalFile = "../MyFile.zip";
box.DownloadFile();[/csharp]

ダウンロードの再開

このコンポーネントは、StartByte プロパティを使うことにより、失敗したダウンロードの再開もサポートしています。ダウンロードが中断した場合は、StartByte を適切なオフセットに設定してから、このメソッドを呼び出してダウンロードを再開します。

[csharp light=”true”]box.ResourceId = myId;
box.LocalFile = downloadFile;
box.DownloadFile();

//The transfer is interrupted and DownloadFile() above fails. Later, resume the download:

//Get the size of the partially download file
box.StartByte = new FileInfo(downloadFile).Length;
box.ResourceId = myId;
box.LocalFile = downloadFile;
box.DownloadFile();[/csharp]

暗号化されたファイルのダウンロードの再開

暗号化されたファイルのダウンロードの再開は、初回のダウンロード時に LocalFile を設定していた場合のみ可能となります。暗号化されたファイルをダウンロードする時に、LocalFile が設定されていれば、TempPath に一時ファイルが作成され、暗号化されたデータはダウンロードが完了するまでそこに保持されます。

ダウンロードが中断された場合、DownloadTempFile には部分データを保持する一時ファイルが設定されます。ダウンロードを再開する時には、暗号化された残りのデータをダウンロードするために、DownloadTempFile および StartByte の入力が必要となります。ダウンロードが完了すると、データは復号され、LocalFile に書き込まれます。

[csharp light=”true”]box.ResourceId = myId;
box.LocalFile = downloadFile;
box.EncryptionPassword = "password";
box.DownloadFile();

//The transfer is interrupted and DownloadFile() above fails. Later, resume the download:

//Get the size of the partially download temp file
box.StartByte = new FileInfo(box.Config("DownloadTempFile")).Length;
box.ResourceId = myId;
box.LocalFile = downloadFile;
box.EncryptionPassword = "password";
box.DownloadFile();[/csharp]

ファイルのアップロード

UploadFile を使うと、ResourceParentId で指定したファイルをアップロードします。ResourceParentId が指定されていない場合、ファイルはルート ディレクトリにアップロードされます。このメソッドは、アップロードされたファイルの Id を返します。すでにファイルが存在する場合には、サーバーはエラーを返します。

FileName パラメーターでは、ファイル名を指定します。名前付けには次の制限があります。

    ファイル名は 255 文字以下にする必要があります。

  • ファイル名に、印字できない ASCII 文字を入れることはできません。
  • ファイル名に “/” や “\” などの文字や、末尾の空白を入れることはできません。
  • “.” や “..” などの特別なファイル名は使用できません。

LocalFile でアップロードするファイルを指定します。アップロードするデータは、ResourceDataSetUploadStream でも設定できます。ファイルを暗号化するには、EncryptionAlgorithmEncryptionPasswordを使用します。

UploadFile を呼び出す際には、次のプロパティが適用されます。

  • LocalFile
  • ResourceData
  • ResourceParentId
  • EncryptionAlgorithm
  • EncryptionPassword

[csharp light=”true”]box.LocalFile = "../MyFile.zip";
box.UploadFile("MyFile.zip");[/csharp]

ファイルをアップロードすると、Resource プロパティにアップロードされたファイルの情報が読み込まれます。

その他の機能

Box コンポーネントは、簡単なアップロードやダウンロードの他にも、以下のような高度な機能を提供しています。

  • EncryptionAlgorithmEncryptionPassword を使ってファイルを暗号化、および復号する
  • CreateMetadataUpdateMetadataDeleteMetadata を使ってリソースのメタデータを作成、管理する
  • ShareResource でコンテンツの共有リンクを作成する
  • Search を使って一致するコンテンツを検索する
  • ListRevisions および PromoteRevision で変更履歴をサポート
  • ListDeletedResources および RestoreResource を使ってファイルの削除を取り消す
  • GetAccountInfo で使用状況およびアカウント情報を取得
  • GetPreviewLink および GetThumbnail でファイルのプレビュー情報を取得する
  • その他

/n software 製品の詳細は、こちら をご覧ください。

タイトルとURLをコピーしました