Welcome to QuoteIt’s documentation!

Contents:

QuoteIt について

QuoteIt は、さまざな Web サービスのサムネイル・埋め込みドキュメントを 取得するための Web API です。 プラグインはユーザ同士で共有され、誰でも自由に追加・変更を行なうことができます。

QuoteIt の利用方法

QuoteIt を利用するためには、以下の2つの方法があります。

Heroku にデプロイされているサービスを使う
QuoteIt は Heroku にデプロイされています。wedata を通じて自由に作成されたプラグインを利用することができます。プラグインの作成方法は、 プラグイン開発 で詳しく説明します。
インハウスにデプロイする
Heroku のサービスからはアクセスできないインハウスのリソースを引用することができます。また、インハウス QuoteIt のプラグインとして Heroku QuoteIt を追加することで、リレーを実現することもできます。インハウスデプロイの方法は、 セットアップ で詳しく説明します。

プラグイン開発

QuoteItで引用できるサービスは、プラグインにより自由に拡張できます。 プラグインはユーザ同士で共有され、誰でも自由に追加・変更を行なうことができます。

プラグインの種類

プラグインにはサムネイルプラグインとClipプラグインの2種類が存在します。

サムネイルプラグイン
Twitpicなどの画像共有サービスから、画像を引用するためのプラグインです。 結果は 画像 のURLでなければなりません。
Clipプラグイン
任意のWebサービスから引用するためのプラグインです。 結果には任意のHTMLタグを利用できます。 埋め込み HTML を引用する場合には、Clip プラグインが便利です。

プラグインの定義

サムネイルプラグインの場合

url
該当サービスの代表的なURLです。プラグイン一覧を表示する際に利用されます。
regexp

本プラグインが対象とするURLの正規表現です。 ( ) により正規表現をグループ化し、 thumbnail から参照できます。

使える文法は Rubyの正規表現 を参照してください。

thumbnail
画像のURLです。 $1 , $2 , $3 , ... で regexp の n番目にマッチしたテキストを参照できます(nは1から9まで)。 また、 $$1 , $$2 , $$3 , ... とすることで、URL エンコードされた値を参照することもできます。

Clipプラグインの場合

url
該当サービスの代表的なURLです。プラグイン一覧を表示する際に利用されます。
regexp

本プラグインが対象とするURLの正規表現です。( ) により正規表現をグループ化し、 clip から参照できます。

使える文法は Rubyの正規表現 を参照してください。

clip
引用するデータのURLです。 $1 , $2 , $3 , ... で regexp の n番目にマッチしたテキストを参照できます。(nは1から9まで)
transform

clip からHTMLコードを生成する方法を定義します。 制限されたRubyコードが利用できます。

Rubyの制限については Rubyのセキュリティモデル のセーフレベル4を参照してください。

また transform 内で利用できるメソッドは以下の通りです。

original_url
regexp にマッチしたURL
clip_url
マッチしたURLを clip によって変換したURL
content
clip_url の指すページの内容
json
content をJSONとしてパースしたハッシュテーブル

プラグインのテスト

プラグインの動作は、 Sandboxページ にて確認できます。

プラグインの登録・反映

完成したプラグインをWedataに登録することで、QuoteItに反映させることができます。

  1. サムネイルプラグインは QuoteIt-thumbnail DB に、Clipプラグインは QuoteIt-clip DB に登録します。 なお登録にはOpenIDが必要です。
  2. Upgradeページ から反映させます。

セットアップ

ここでは、インハウスに QuoteIt をデプロイする方法を説明します。 QuoteIt で、インハウスのリソースを引用したい場合に参照してください。 そうでない場合には、Heroku 版の QuoteIt を利用してください。

動作環境

QuoteIt を利用するためには、以下のソフトウェアが必要です。

  • Ruby 1.9.2
  • Bundler 1.0.7 or later
  • MongoDB 1.8.1 or later
  • memcached 1.4.9 or later

デプロイ方法

1. QuoteIt をダウンロードします。

$ git clone git://github.com/codefirst/QuoteIt.git

2. MongoDB を立ち上げます。

$ mongod --dbpath <dir_name>

3. memcached を立ち上げます。

$ memcached -vv

4. 必要な gem をインストールします。

$ bundle install --path vendor/bundle

5. QuoteIt を立ち上げます。

$ bundle exec padrino start

6. QuoteIt にアクセスします。

http://localhost:3000

プラグインの追加

インハウスにデプロイした QuoteIt へのプラグインの追加は CUI から行います。 ここでは例として debeso を引用するプラグインを作成します。

QuoteIt にはローカルのプラグインを追加する機構がないため、 コンソールを利用して、プラグインを追加します。

$ bundle exec padrino console

以下のコードを実行します。

Html.create(:name => 'debeso', :regexp => 'http://localhost/debeso/codes/edit/(\d+)', :clip => 'http://localhost/debeso/api/v1/snippets/$1.json', :url => 'http://localhost/debeso/', :transform => 'json["content"]')

Heroku QuoteIt へのリレー

インハウス QuoteIt で処理されなかった URL を Heroku QuoteIt へ 移譲することもできます。

$ bundle exec padrino console

以下のコードを実行します。

Html.create(:name => 'QuoteIt', :regexp => '(.+)', :clip => 'http://quoteit.heroku.com/clip.html?u=$$1', :url => 'http://quoteit.heroku.com', :transform => 'content')

注釈

QuoteIt は、プラグインが登録された順に処理をしていくため、 QuoteIt プラグインは必ず最後に登録して下さい。

クレジット

コミッタ

ライセンス

The MIT License.

Copyright (c) 2011-2012 mzp

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.