Skip to content

Instantly share code, notes, and snippets.

@thash
Created March 20, 2012 18:34
Show Gist options
  • Save thash/2139402 to your computer and use it in GitHub Desktop.
Save thash/2139402 to your computer and use it in GitHub Desktop.
Leeno API

Leeno API 概要

エンドポイント

LeenoAPIは、取得できるリソースに応じた以下のエンドポイントを持ちます。

APIで取得できるデータ

  • 文字コードはUTF-8です。
  • すべてのリクエストに対してJSON形式で結果を返します。
  • 結果のJSONはresult, status, messageのフィールドを持ちます。
fieldcontent
result結果データがJSON形式で入ります。リクエストにエラーがあった場合、空文字列になります。
status"ok"もしくは"error"いずれかの文字列を返します。
messageリクエストが正常に完了した場合、空文字列になります。エラーがあった場合はエラーメッセージが格納されます。

HTTPステータスコードは200(正常), 404(データがない), 500(サーバーエラー)のいずれかとなります。エラーの詳細については末尾の"例外処理"を参照して下さい。

Leeno API 利用方法

単一キャンバス

エンドポイント: http://leeno.jp/api/canvas

クエリで利用可能なパラメータ

  • canvas_id
    • canvas_idを指定しない場合、最新のCanvasが返ります。

result に格納されるフィールド

  • "canvas_id": Canvasのid
  • "title": Canvasのタイトル
  • "name": 投稿者
  • "tags": Canvasに付けられたタグの配列
  • "width": 画像の幅
  • "height": 画像の高さ
  • "total_history": Canvasが持つHistoryの総数
  • "total_favorite": Canvasに付けられたfavoriteの総数
  • "create_date": Cavnasが作成された日時。例: "2012-03-15T02:16:01Z"
  • "update_date": Cavnasの最終更新日時。 例: "2012-03-15T02:16:16Z"

利用例

canvas_idを指定することで単一のCanvas情報を取得します。canvas_idとは、

http://leeno.jp/c/1ch-18

というURLの場合 1ch の部分を指します。

$ curl "http://leeno.jp/api/canvas?canvas_id=m0"

{"result":{"canvas_id":"m0",
"title":"\u30bf\u30a4\u30c8\u30eb\u7121\u3057",
"name":"\u540d\u7121\u3057\u3055\u3093",
"tags":["Tag", "hogehoge"],
"width":600,
"height":400,
"total_history":2,
"total_favorite":0,
"create_date":"2012-03-15T02:16:01Z",
"update_date":"2012-03-15T02:16:16Z"},
"status":"ok",
"message":""}

canvas_idを指定しない場合、最新のCanvasが返ります。

$ curl "http://leeno.jp/api/canvas"

{"result":{"canvas_id":"m0",
"title":"\u30bf\u30a4\u30c8\u30eb\u7121\u3057",
"name":"\u540d\u7121\u3057\u3055\u3093",
"tags":["hoge", "\u305f\u3050\u3093"],
"width":600,
"height":400,
"total_history":2,
"total_favorite":0,
"create_date":"2012-03-15T11:16:01+09:00",
"update_date":"2012-03-15T11:16:16+09:00"},
"status":"ok",
"message":""}

複数キャンバス

エンドポイント: http://leeno.jp/api/canvases

クエリで利用可能なパラメータ

以下のクエリでCanvasを絞り込み、複数のCanvasを取得します。

  • prof: ユーザのプロフィール画像Canvasを検索対象とするフラグ。trueにした場合プロフィール画像のみを検索する。 (true or false. default: false)
  • look_up_time: 作成日と更新日のどちらで検索するか。from, to, between, orderに影響する。 (created_at or updated_at. default: created_at)
  • from: 日時文字列。例: "2012-03-21", "2012-03-21T10:30:00"
  • to: 日時文字列。書式はfromと同じ。
  • between: 現在からどれだけの期間をさかのぼって検索するかを指定する。1日以内、1週間以内、1ヶ月以内が選択できる。 (daily, weekly or monthly. default: 指定なし)
  • order: ソート順を指定する。新しい順、古い順、Redraw数順の3通りが選択できる。 (new, old or redraw. default: new)
  • limit: 取得する結果の数を制限する。(default: 30)
  • offset: 獲得する結果のオフセット値(最初のN件を飛ばす)を指定する。(default: 0)

注意点

  • パラメータなしでリクエストを行った場合、最新30個のキャンバスが返ります。
  • クエリにcanvas_idを指定したとき、単一キャンバスAPIへのリクエストと同じ結果を返します。

result に格納されるフィールド

ひとつのCanvasが持つフィールドは、単一キャンバスAPIと同じです。ヒットした数だけ配列としてresultに格納されます。

利用例

$ curl "http://leeno.jp/api/canvases?between=monthly&order=redraw"

{"result":[{"canvas_id":"m0",
"title":"\u30bf\u30a4\u30c8\u30eb\u7121\u3057",
"name":"\u540d\u7121\u3057\u3055\u3093",
"tags":["hoge", "\u305f\u3050\u3093"],
"width":600,
"height":400,
"total_history":2,
"total_favorite":0,
"create_date":"2012-03-15T02:16:01Z",
"update_date":"2012-03-15T02:16:16Z"},
{"canvas_id":"lz",
"title":"taitotuuuuuuuuuuuuuuuuuuuu",
"name":"Hash",
"tags":["Tag"],
"width":600,
"height":400,
"total_history":1,
"total_favorite":0,
"create_date":"2012-03-03T08:12:45Z",
"update_date":"2012-03-03T08:12:46Z"}],
"status":"ok",
"message":""}

上記の例では2つのCanvasがヒットしています。

単一ヒストリ

エンドポイント: http://leeno.jp/api/history

LeenoではひとつのCanvasが複数のredraw履歴を持っており、それぞれのredraw履歴をHistoryと呼びます。別の言い方をすると、ひとつのHistoryは1枚の絵に対応し、HistoryはいずれかのCanvasに所属します。図示すると以下のようになります。

History構造

したがって、単一のHistoryを取得するには、canvas_idとhistory_idの双方を指定することが必要です。history_idとは、

http://leeno.jp/c/1ch-18

というURLの場合 18 の部分を指します。

クエリで利用可能なパラメータ

  • canvas_id(必須)
  • history_id(必須)

注意点

  • パラメータにcanvas_idとhistory_idの両方が含まれていない場合、エラーとなります。

resultに格納されるフィールド

  • "history_id": 数値。
  • "parent_id": Historyのredraw元。nullの場合は一番最初のHistory.
  • "canvas_id": Historyが所属するCanvasのid.
  • "image_large": オリジナルサイズの画像URL
  • "image_small": 小さいサイズの画像URL(125x125)
  • "image_thumb": サムネイルサイズの画像URL(60x60)
  • "create_date": Historyの作成日時。 例: "2012-03-15T02:16:01Z",
  • "update_date": Historyの最終更新日時。 例: "2012-03-15T02:16:01Z"

利用例

$ curl "http://leeno.jp/api/history?canvas_id=m0&history_id=1"

{"result":{"history_id":1,
"parent_id":null,
"canvas_id":"m0",
"image_large":"http://leeno.jp/c/m0-1/image.png",
"image_small":"http://leeno.jp/c/m0-1/thumb.png",
"image_thumb":"http://leeno.jp/c/m0-1/small_thumb.png",
"create_date":"2012-03-15T11:16:01+09:00",
"update_date":"2012-03-15T11:16:01+09:00"},
"status":"ok",
"message":""}

複数ヒストリ

エンドポイント: http://leeno.jp/api/histories

あるCanvasに紐尽くHistoryを返します。

クエリで利用可能なパラメータ

  • canvas_id(必須)

利用例

$ curl "http://leeno.jp/api/histories?canvas_id=m0"

{"result":[{"history_id":1,
"parent_id":null,
"canvas_id":"m0",
"image_large":"http://leeno.jp/c/m0-1/image.png",
"image_small":"http://leeno.jp/c/m0-1/thumb.png",
"image_thumb":"http://leeno.jp/c/m0-1/small_thumb.png",
"create_date":"2012-03-15T11:16:01+09:00",
"update_date":"2012-03-15T11:16:01+09:00"},
{"history_id":2,
"parent_id":1,
"canvas_id":"m0",
"image_large":"http://leeno.jp/c/m0-2/image.png",
"image_small":"http://leeno.jp/c/m0-2/thumb.png",
"image_thumb":"http://leeno.jp/c/m0-2/small_thumb.png",
"create_date":"2012-03-15T11:16:16+09:00",
"update_date":"2012-03-15T11:16:17+09:00"}],
"status":"ok",
"message":""}

例外処理

パスが不正な場合 HTTP Status Code = 404

{"result":"","status":"error","message":"The requested URL is Invalid"}
  • エンドポイントと引数を確認して下さい。

Canvas/Historyが存在しない場合 HTTP Status Code = 404

{"result":"","status":"error","message":"Data Not Found"}
  • リクエストしたcanvas_id, history_idなどが存在することを確認して下さい。

サーバーエラーが発生した場合 HTTP Status Code = 500

{"result":"","status":"error","message":"Internal Server Error"}
  • メンテナンス中の可能性があります。時間をおいて再度お試し下さい。
  • エラーが続く場合、問い合わせフォーム からお問い合わせ下さい。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment