(注)私は失敗してます。
#Imgurとは?
海外の画像アップロードサイト。某掲示板では事実上の標準として使われています。他のアップローダに比べ消えることが少ない(というか消さない限り消えない)のが特徴です。
ちなみに読み方は"image-er"(イメージャー)だそう。
#Imgur API
アップロードその他は、全て**SSL通信で行います。**私はC++で実装していたのでOpenSSLを使用しました。
APIにはOAuthによるユーザー認証が必要なものとそうでないものがありますが、今回は認証の不要なもののみを使用します。
API自体はREST APIで作られており、慣れている人ならそんなに迷わないのかも。
#Imgur APIを使う
##アプリケーションの登録
Imgurのアカウントを作成して、アプリケーションの登録をします。特に難しいことは無いと思います。
- Application name : アプリケーションの名前
- Authorization type : 今回は一番下を。ユーザー認証を使う場合は2番めを使います(たぶん)
- Authorization callback URL : たぶんOAuthに使うんでしょう。適当なURLを
- Application website : アプリケーションの公式サイト
- Email : Eメールアドレス。(クライアントID等が送られてきます)
- Description : アプリケーションの説明文
登録に成功するとClient IDとClient secretの2つの文字列が表示されます。
今回はClient secretは特に使いません。クライアントIDのみでAPIにアクセスできます。
##匿名モードで画像をアップロードする
https://api.imgur.com/3/image/ に対してPOSTメッセージを送ります。
POST /3/image HTTP/1.0
host: api.imgur.com
Content-length: xxx
Connection: close
Authorization: Client-ID (クライアントID)
image=(画像データ)
画像データは、Base64エンコード、URLエンコードをして突っ込めば大丈夫そう。公式を見る限りバイナリデータやURLにも対応しているようです。
{"data":{"error":"Image format not supported, or image is corrupt.","request":"\/3\/image\/","method":"POST"},"success":false,"status":400}
このように、無事エラーメッセージが返ってきました。
どのようなHTTPボディに対しても同じエラーを返すようです。