« 2012年7月 | トップページ | 2012年11月 »

2012年8月

2012年8月19日 (日)

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

DirectShowのスプリッタフィルタに相当するMedia Foundationのカスタムメディアソースを実装しようと遊んでいたんだが、行き詰まったdashdash。Flash Videoの仕様書 を読み適当なパーサーを書いて、AAC(Advanced Audio Codec)を調べて、とりあえず、音声の再生には成功したが、H.264/AVCでだるくなってきた。

ということで、再びSkyDrive。

そもそも、前にDelphi用にMicrosoft Sync Frameworkのヘッダを移植 したのも、Windows Liveのライブラリを作った のも、それを使って同期ツール(暗号化してアップロード)を作ろうと思ってたんだが、やる気がなくなっているというsweat02sweat01

というか、Windows LiveのREST APIはそもそも同期に向いてなかったsad。最大の問題はDropboxみたくファイルのリビジョンの管理はいらないから、せめて、ファイルを更新する時に、楽観的ロック(Optimistic Lock)みたいな事ができんと。現状、ファイルのIDを指定して更新するんだが、この時、ファイルのUpdateDateみたいなのも指定できるようにして、実際にサーバーで更新する時、渡されたUpdatedDateが実際のファイルのUpdatedDateとずれてたら、エラーを返すみたいな事してくれんと。HTTPのETag にも対応してんし。

と、まぁ、愚痴は置いといて、最初のリリースからちょこちょこ、Delphi用のWindows Liveライブラリを更新してたんが、そのまとめを。

まずは、ファイルのダウンロード時にカスタムストリームを指定できるようになりました。

CustomStreamパラメータで指定します。巨大なファイルをダウンロードする時、CustomStreamにファイルへのストリームを指定すれば、直接ファイルにダウンロードできます。指定しないと、今まで通り内部で、メモリへのストリームが作成され、それが返されます。

まぁ、これはWindows 8 API List で書いた、IXMLHttp2::SetCustomResponseStreamをパクリました。また、これで、ダウンロードをキャンセルしたければ、キャンセルできるよう自分でIStreamインターフェースを実装して、キャンセルされてたらIStream::Writeメソッド辺りで、例外ぶん投げたり、HRESULTのE_FAILなどのエラーコードを返せば、キャンセルできるようになります。

後は、

  • クォータ情報の取得
  • 写真の位置情報の取得
  • 音楽情報の取得
  • OneNoteノートブックの対応

それぞれ対応するインターフェース、プロパティなどを追加してます。簡単な説明は例えば、ここ を参照。

REST API経由でファイルをアップロードする場合、今まで、アップロードできるファイルの種類に制限があったのですが、A new modern SkyDrive.com, updated apps, and Outlook.com at 10 million users によるとファイルの種類の制限がなくなったようですねhappy02

Windows Liveのアップデートが頻繁で手に負えなくなってきたし、設計ちょいしくったdashdash

« 2012年7月 | トップページ | 2012年11月 »

自作ソフトウェア

無料ブログはココログ

メモ