anti scroll

ブラウザと小説の新しい関係を模索する

omnidrive のAPIを使う

本日、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 ()