« DelphiでWindows Live(SkyDrive) | トップページ | DelphiでWindows Live(SkyDrive)・・・(3) »

2012年1月15日 (日)

DelphiでWindows Live(SkyDrive)・・・(2)

今回は前回までのログイン・認証を踏まえて、実際にSkyDriveにアクセスしてみる。
読み込むには、wl.skydriveスコープ、読み書きするにはwl.skydrive_updateスコープが必要なので指定しておいて下さい。

SkyDrive上のコンテンツはロカールファイルシステムと同じようにファイルやフォルダから構成され公開したライブラリではIResourceインターフェースを実装したResourceオブジェクトで表されます。LiveClientオブジェクトのSkyDriveを読み書きするためのメソッドは基本的にこのResourceオブジェクトを返します(例外がありますが・・・)。IResourceインターフェースは次のようになります。

ResourceTypeプロパティはリソースの種類を表します。

  • folder
  • album
  • file
  • audio
  • photo
  • video

の6種類あります(これらの定数はTResourceTypeクラスに定義)。まぁ、要するに、大別すると、fileとfolderに分けられ、fileであっても、画像ファイルならpicture、動画ファイルならvideoとなります。albumはfolderの特殊なケースです。fileかfolderかを判定するヘルパメソッドも容易してあります。

また、fileなら、IResourceインターフェースを継承したIFileResourceインターフェース、folderならIFolderResourceインターフェースも実装しているので、fileやfolderに特有の情報も取得できます。

同様に、IPhotoFileResourceやIVideoFileResourceとかもあるので、詳しくは、ソースを見てください。

各プロパティの意味はLive SDK REST API のFileやFolderオブジェクトなどの項を参照してください(ほとんどそのまま落とし込んでいるので・・)。

ここまでが基本で、実際に読み書きしてます。

例えば、ルートフォルダの中身を列挙する場合、まず、ルートフォルダの情報をLiveClientオブジェクトのGetRootFolderメソッドで取得します。Resourceオブジェクトで返されます。返されたResourceオブジェクトのIDを使い、LiveClientオブジェクトのEnumerateResourcesメソッドで列挙します。

IEnumerable<IResource>が返されるのでfor-inループで列挙して下さい。コードは例えば次のようになります。

これらと再帰を組み合わせれば、すべての中身を列挙できます。具体的にはLiveDemoアプリを参照。

また、フォルダを作成するには、親フォルダのIDや名前を指定して、CreateFolderメソッド、フォルダの名前などの変更やフォルダを削除するには、UpdateResource,DeleteReourceメソッドをターゲットのリソースのIDを指定して呼んで下さい。

同様に、ファイルを作成するには、CreateFileメソッドでアップロードするファイルの中身をIStreamで指定して呼んで下さい。

既に存在するファイルの中身を変更するには、UpdateFileContentメソッドを使います。この2つのメソッドだけIResourceを返しませんdashdash。ファイルのダウンロードはGetFileContentメソッドを使います。ファイル名の変更や削除はフォルダの場合と同じUpdateReource,DeleteResourceメソッドを使います(ちなみに、現状、REST APIを使ってアップロードできるファイルの種類はテキストファイル、Officeドキュメント、画像や動画の一部などにサーバーによってえらい制限されてますので、まじで使えん・・・dashdash)

他にもMoveResourceメソッドでファイル・フォルダなどの既存のリソースを移動できますが、CopyFileでは名前が示す通り、ファイルしかコピーできません。

具体的な使い方はLiveDemoアプリ見てくださいということで、ここでは手抜きします。

LiveDemoアプリの画面はこんな感じです(最初に、ClientIDなどを求められるので各自用意)。

Live2_0

右クリックでコンテキストメニューがでます。そこから例えば、「プロパティ」を選択すると、

Live2_1_2

また、ツリー上でドラッグ&ドロップよる、リソースの移動ができます。

まぁ、あくまでデモなのですべてではないですが、ファイルのアップロードやフォルダの作成など主要な操作はとりあえずカバーしてます。

というか、ほぼ似た作りのDropboxライブラリそして、放置されているPiyotterで使われてるTwitterライブラリもあるんだが、気が向いたら公開します(公開する場合、Demoアプリ作ったり、多少手直しが必要なので・・・だるいwobbly)。

« DelphiでWindows Live(SkyDrive) | トップページ | DelphiでWindows Live(SkyDrive)・・・(3) »

Delphi」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/43642841

この記事へのトラックバック一覧です: DelphiでWindows Live(SkyDrive)・・・(2):

« DelphiでWindows Live(SkyDrive) | トップページ | DelphiでWindows Live(SkyDrive)・・・(3) »

自作ソフトウェア

無料ブログはココログ

メモ