« Delphiでスレッド | トップページ | DelphiでDropbox »

2014年8月30日 (土)

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

やる事がなくなったので、再びWindows Live。今回で5回目ですが、まず過去の記事のリンクを・・・

今回はファイルコンテンツやピクチャの条件ダウンロードと部分ダウンロード、要はHTTPの条件リクエストと部分ダウンロードに対応してみました(一部メソッドを変更しましたdashdash)。

AccessConditionオブジェクトでアクセス条件を指定します。

これは、HTTPのIf-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Sinceヘッダーそのまんまです。ここ からパクリましたdashdash。部分ダウンロードを行うには、RangesSpecifierオブジェクトで範囲を指定します。

HTTPでは現状バイトレンジしか定義されていませんが、そのバイトレンジを表すRangesSpecifierオブジェクトを作成するヘルパを用意してます。

一応、RFC2616のHTTPの仕様通り、2通りの指定方法を用意しましたが、現状、後者の末尾のバイト数(SuffixLength)を指定する方法はサーバーの方で対応してないようなので(HTTPの仕様通り、エラーではなく無視されて全体が返される)、前者の開始位置(FirstByte)と終了位置(LastByte)を指定する方を使って下さい。また、HTTPの仕様では複数のバイトレンジを一度に指定できるようになってますが、その場合は、自分でIRangesSpecifierインターフェースを実装して下さい(というか、サーバーが対応してるかは知りませんdashdash)。条件ダウンロード、部分ダウンロードのために戻り値のLiveResponsePropertiesオブジェクトで一部のHTTPヘッダにアクセスできるようにしてあります。

具体的に使うとこんな感じです。

 

後は、上記のGetUserPictureやGetFileContentメソッドはプッシュ型のメソッドですが、データを自分で引っ張るプル型のメソッドも追加しておきました。

LiveDownloaderオブジェクトは次のようになってます。

LiveDownloaderオブジェクトのGetStreamメソッドで得られるストリームを使って読み込みます。プル型なので、途中でキャンセルしたければ、そのまま破棄して下さい。

以上です。

HTTPの条件リクエストや部分ダウンロードの勉強のために実装してみたけど、色々おもろかったbearing

というか、完全に独りよがりライブラリ・・・

ダウンロードはいつも通りOneDriveから。

« Delphiでスレッド | トップページ | DelphiでDropbox »

Delphi」カテゴリの記事

コメント

コメントを書く

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

トラックバック

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

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

« Delphiでスレッド | トップページ | DelphiでDropbox »

自作ソフトウェア

無料ブログはココログ

メモ