Bitcasa API test app

Bitcasa APIをテストするモジュールとC#のテストアプリ

(改版履歴)
20131228 初版
20131230 いろいろと修正。教えてくれた人サンクス
	ダウンロードが壊れる問題を修正。
	ダウンロードとアップロードはできるだけやり直すように。
	進捗状況を表示するようにがんばってみた。
	ダウンロードは10GB、アップロードは4GB程度までならたぶんいけるはず。
	アップロードは失敗してもしばらくしたら出現する場合があるので気をつけてください。
20131231 ダウンロード中に受信に失敗するとファイルが壊れることがあるのを修正
20140102 I:\とBitcasa Infinite Drive\の下を比較する機能
	任意のBitcasaのリモートフォルダと、ローカルのフォルダの下のファイル一致を見る機能


(コンパイルに必要なもの)
Visual Studio 2013 pro(他のバージョンでは確かめていない)
openssl (dllコンパイルしてつけてある)

歴史的事情により、C++でAPIを叩くモジュールを作ってしまったので
C#ラッパーによりC#->C++/CLI->opensslでAPIを叩きに行きます。


(中身)
src\
 ssl\ opensslからコンパイルと実行に必要なものを持ってきた
 BitcasaDLL\ opensslによりBitcasaAPIを叩く足回り,C++/CLI C#ラッパー
 Webwindow\ はじめの認証をWeb表示するモジュール
 bitcasaViewer\ 本体

x64_bin\ 実行ファイル(dllは全部要るはず)

(使い方)
このへんに図入りで書いてみた。
https://www.lithium03.info/product/bitcasaDLL/howtouse.html

あんまりに遅いときはBitcasa側の問題なので、ぽちっとなと強制終了してもう一度。
変なエラーが出た場合は、どこかで処理をミスっているので某スレで教えていただけると幸いです。

左上のログインボタンを押すと、トークン取ってきてカレントに書き出します。
以降はトークンがあれば同じアカウントは最終アクセスから7日間使えるようです。

IEコンポーネントのバージョン問題で、ログインできないのでレジストリに一カ所書きに行きます。
src\WebWindow\Form1.csのこのあたり
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\" + feature))


左のツリーをクリックすると、その部分の詳細が右にでます。
右上の部分は右クリックメニューがでて、それぞれAPIの該当コマンドを発行します。
確認は出ませんので気をつけて。

moveとcopyは、対象ファイルを選択->右クリックからmoveまたはcopy
右上の部分に移動/コピー先を表示->移動先右クリック->move/copy hereです。

reloadを押すと、鯖まで取り直しに行きますがそれ以外は初回に取りにいったデータを
内部で保持します。
削除やリネーム、移動コピーでツリーが変わった場合、できるだけ追従しますが
エラーとかの時はどっかに行くかもしれません。
本来ある場所の親ディレクトリでreloadすると、サーバ側のデータに更新されます。
ゴーストのある場所の親ディレクトリでreloadして、幽霊側を消してください。

Scan ALLをすると、下位ディレクトリも含めてすべての構造を取ってきます。
ファイルがいっぱいある場合はものすごく遅いですので、ネットの転送グラフを見て動いているか
チェックしてください。
タイムアウトは50secくらいです。それ以上固まっている場合は、ぽちっとな

すべての構造を取ってきたらfindが使えます。
ファイルパス名の単純一致or正規表現一致と時間サイズで絞り込んで右上に表示します。
ここから右クリックメニューでAPIコールできるので、条件を絞り込んで移動とかに使えます。

Scan ALLをした後に、overlayメニューが使えます。

overlay->bitcasaは、I:\以下をスキャンして、Bitcasa Infinite Drive\の下位フォルダまたは
mount_pointが%%%HOME%%%/Bitcasa/ で始まるフォルダとの一致を見ます。
local側(left)のみにファイルフォルダがある場合は赤オレンジ色、
remote側(right)のみにある場合は緑色でマークされます。
Allを押すとLRで始まる両方で一致したファイルも表示されますが、いっぱいファイルがある場合は
めちゃくちゃ遅いので注意してください。
local(left)のみにリストアップされたということは、I:\にはファイルがあるのにWebにでていないファイル
つまり不完全ファイルや削除済みのファイルが未反映であることを示します。
そのほか、.(ドット)で始まる名前はapiやwebから見えないのでここにリストされます。
remote(right)のみにリストアップされたということは、WebUIにはあるのにローカルに存在していないファイル
ということです。
Mirrored Folders以下はシンボリックリンクになっていたりしてややこしいので
現時点では意味のないデータになっています。
どこかがバグっている可能性があるので、必ず目視によるクロスチェックをお願いします。
このコマンドを実行した後は、右下の詳細ビューに項目とI:\以下で一致したローカルファイルの
サイズと日時が表示されます。

overlay->other...は、任意のローカルフォルダを指定しスキャンし、任意のremoteのbitcasaドライブの
フォルダ以下との一致をチェックします。
bitcasaコマンドでは、I:ドライブとの一致しか見れませんが、こちらのコマンドは任意のローカルフォルダが
指定できます。
どこかのフォルダからファイルをBitcasaに投入しているときに、うまく上がったかチェックするのに使ったり
ミラーしているフォルダがちゃんと上がっているかのテストに使えます。
同じく.(ドット)始まりのファイルは見えません。現時点でちゃんとミラーされているかはapiからは確認する
方法はありません。


(注意事項)
実験プログラムです。一応動くようにしましたがバグバグです。
壊れはしないと思いますが、ご自身の責任で実行してください。
APIコールはBitcasaサイトの条件を読んで、用法用量を守ってください。
APIキーはexeには入っていますが(test2)ソースから消してあります。
アカウントがあればキーを発行してくれるようなので、必要なら各自で取得してください。

ソースコードのうち、私が書いている部分(openssl以外)はパブリックドメインです。
