« Microsoft Media Foundation for Delphi | トップページ | 死にかけた »

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

« Microsoft Media Foundation for Delphi | トップページ | 死にかけた »

Delphi」カテゴリの記事

コメント

コメントを書く

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

トラックバック

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

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

« Microsoft Media Foundation for Delphi | トップページ | 死にかけた »

自作ソフトウェア

無料ブログはココログ

メモ