本日、Omnidrive というオンラインストレージサービス(無料ユーザは1Gまでで、非商用限定。また、60日以上ログインがないとアカウント停止)というのを見つけました。
APIが公開されている、とのことなので、縦書き文庫の画像フォルダをこのサービスで代替できないかなーと思い、APIを弄ってみました。
外部からフォルダの作成とかファイル一覧を取得とか、色々あります。あとは、ユーザの作成?とかそんなんもあるけど、詳しくは見てません。それにしても、操作画面が超絶ajaxで、まるでデスクトップアプリを使っているかのようです。素晴らしい。
普通のフォルダ作成は勿論、LiveFolderとかいう、中身に変更があったときにRSSが作成されるフォルダなんかも作れるみたい。
で、例によってOcaml でテストしてみました。
ちなみに、api_keyは、アカウント作ると自動的に貰えます(確認は、Setting→APIタブで)。
realm は、"realm_api" という値をセットするといいみたいです。
あと、APIの利用は、全てAPIキーとBasic認証が必要らしいのですが、パスワード部分はBase64 じゃなくてMD5で暗号化するそうです。
Authorization: Basic (user_id):(MD5 passwd)
ocaml では、こんな感じになりました。自分のディレクトリのファイル一覧を取得しています。
user_id ,password, apikey は各自のものに置き換えて使ってください。また、実行にはNetclientモジュールが必要です。
open Http_client let user_id = "hoge" in let passwd = "hage" in let passwd_md5 = Digest.to_hex (Digest.string passwd) in let realm_id = "realm_api" in let auth = new basic_auth_method in let () = auth # set_realm realm_id user_id passwd_md5 in let url = "http://api.omnidrive.com/APIServer/authz/list/hoge?apikey=" ^ api_key in let call = new get url in let pipeline = new pipeline in let () = pipeline # add call in let () = pipeline # add_authentition_method auth in let () = pipeline # run () in call # get_resp_body ()