ヘッドラインセンサ

プラグインタイプとして「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サーバ内でエラーが発生した