ヘッドラインセンサ
プラグインタイプとして「hlsensor」を返すプラグインは、ヘッドラインセンサとして認識されます。
ヘッドラインセンサのすべき作業は、本体から渡されたhtmlデータを解析してヘッドラインを取り出し、それを本体に送り返すことです。
センサがどのようにデータを解析するかについては本体側は全く関与しません。
home
+-plugin
+-macotakara
+-alias.txt
+-siteinfo.txt
+-univsensor.jar
ヘッドラインセンサもプラグインの一種なので当然Javaのクラスであり、プラグインの
必須メソッドを実装する必要がありますが、ヘッドラインセンサの場合はさらに「request()」と
名付けられたメソッドを実装する必要があります。
■コンストラクタ
コンストラクタには常にjava.io.Fileでそのプラグインの所属するディレクトリが渡されます。
プラグインが作業用ファイルを作成したりする場合には必ずそのディレクトリ内で済ませてください。
省略は不可能です。
public UniversalHLSensor(File plugin_root);
■request()
ヘッドラインセンサは専用のプロトコルを用いて本体と通信し、それを「HEADLINE/1.0」とします。
本家「何か」における「HEADLINE/1.0」とは意味が全く異なることに注意して下さい。
public InputStream request(InputStream req);
request()は引数にjava.io.InputStreamを取り、ここからリクエストを読み出した後、
結果をjava.io.InputStreamで返します。
通信は例えば次のように行われます。
GET Description HEADLINE/1.0[CRLF]
Sender: Nobody[CRLF]
[CRLF]
HEADLINE/1.0 200 OK[CRLF]
Name: GNU[CRLF]
Data-Location: http://www.gnu.org/[CRLF]
Site-Location: http://www.gnu.org/[CRLF]
[CRLF]
各行はCRLFでセパレートされ、追加のデータが無い場合は空の行で終わり、
追加のデータがあればヘッダ部の終了後に続きます。
ヘッダ部の文字エンコーディングは常にUTF-8が使用されます。
クライアントからは常にUTF-8でリクエストが行われ、
サーバーは常にUTF-8で応答を行う必要があります。
■GET Description
ヘッドラインセンサがセンスするサイトの名前やURL等を本体側が要求するためのリクエストです。
GET Description HEADLINE/1.0[CRLF]
Sender: Nobody[CRLF]
[CRLF]
HEADLINE/1.0 200 OK[CRLF]
Name: Macお宝鑑定団[CRLF]
Data-Location: http://mediazone.tcp-net.ad.jp/danbo/[CRLF]
Site-Location: http://mediazone.tcp-net.ad.jp/danbo/[CRLF]
[CRLF]
リクエストのヘッダには特に重要なものはありません。
レスポンスでは「Data-Location」としてヘッドラインを解析するためのページのURLを、
「Site-Location」として実際にそのサイトにジャンプする際に使用されるURLをそれぞれ指定して下さい。
■GET Headline
実際のヘッドラインを解析させるためのリクエストです。
GET Headline HEADLINE/1.0[CRLF]
Sender: Nobody[CRLF]
Content-Length: xxxxx[CRLF]
[CRLF]
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
HEADLINE/1.0 200 OK[CRLF]
[CRLF]
■ヘッドライン1[CRLF]
■ヘッドライン2[CRLF]
■ヘッドライン3[CRLF]
リクエストの「Content-Length」は、後に続く解析前のデータ(通常はHTML)のバイト数を表します。
ヘッダ部の終了後にHTMLデータが続きます。UTF-8であることが確定しているのはあくまでヘッダ部のみであり、
HTMLデータの文字コードはセンサ側が判断しなければなりません。
ここにはネットワーク経由で取得したデータがそのまま渡されます。
レスポンスには特に必要なヘッダがありませんので空白の行を開けてヘッドラインデータが続きます。
ヘッドラインの整形方法は自由ですが、SAKURA SCRIPTタグは使えません。
各行をCRLFでセパレートしたプレーンなテキストで返して下さい。
なお、解析したヘッドラインデータは常にUTF-8で返してください。
アプリケーションはUTF-8以外の文字コードを認識しません。
ステータスコード
200 OK | 成功 |
204 No Conetnt | 成功したが返すべきデータが無い |
400 Bad Request | リクエスト不備 |
500 Internal Server Error | サーバ内でエラーが発生した |