edit コマンドも作った。+command もある。でもこれ、ワンライナーで vi コマンド実行するときくらいしか使わないよね。vim 独自の ++command はエンコーディングを変えて読み込みなおす際に結構使うけど。エンコーディングに関してはまだちょっと分からない点があるので保留。
なおファイル名だけど、[scheme]/[path] という形にする。dropbox 上のファイルの場合は dropbox://foobar.txt みたいな感じになる。複数のオンラインストレージに対応した場合に、スキームを省略した場合はどうするか? たぶん wasavi のオプションページで「スキームを省略した場合の規定のストレージ」みたいな感じで適当なものを設定することになると思う。また、ex コマンドで
:changescheme dropbox
のように動的に切り替えられるようにする、かもしれない。
ということで次は保存だ。REST api で dropbox へ保存するには URL /files/path へ POST するか、/files_put/path[?options] へ PUT するかの 2 通りの方法がある。汎用的なのが前者で、簡略化されているのが後者という扱いだ。いずれにしても、保存するのだからバッファの内容を送信するわけなのだけど、前者は Content-Type:multipart/form-data で送る必要があり、また後者はもちろん PUT リクエストを行える必要がある。
が、jsOAuth の場合、ファイルの送信は POST する場合は FormData に依存する、つまり <input type=”file”> を経由してユーザがローカルファイルシステム上のファイルを指定する必要がある。従って javascript のみで完結させることができない? PUT については、そもそも jsOAuth が PUT で送る手段自体を提供していない。結局のところこの辺は jsOAuth 自体をいろいろ弄る必要があるようだ。