Interface2を参照してください。他のFSWiki用プラグインについてはこちらからどうぞ。metaWeblog.newPostなどblog用APIを実装したblog4fswikiもあります。Wiki用のモジュールPerlでSOAP::Lite(XMLRPC::Lite)を使ってみたかったのです。version1については公式のプラグイン投稿にも投げてあります(bookmarkletはここにある方が最新)。選択したテキストと現在のページURLをFSWikiに書き込むbookmarklet。上記モジュール付属のwikigate.cgiが必要です。主要ファイルwiki_xmlrpc.cgiサーバCGI。wiki.cgiと同じディレクトリに設置します。lib/WikiAPI.pmAPIスーパークラス。lib/WikiAPI/FSWiki.pmFSWiki用モジュール(WikiAPI::FSWiki::Adapter)を呼び出すためのAPIサブクラスlib/WikiAPI/FSWiki/Adapter.pmWikiAPI.pmとWiki.pmを取り持つアダプタみたいなものlib/WikiAPI/FSWiki/LinkParser.pmlinkList(後述)用のパーサlib/WikiAPI/FSWiki/Introspection.pmイントロスペクション用ファイルCPANモジュール群SOAPXMLXMLRPCを利用しています。mod_perl(Apache::Registry)で動作確認しています。lib以下にいれます。Wiki用簡易インターフェース(XML-RPCとは関係ありません)。wiki.cgiと同じディレクトリに置きます。設置方法ファイルを展開して、稼働中のwikiディレクトリに一式入れます。標準で3.5.3以降対応ですが、一行書き直すだけで3.5.2でも動作するでしょう。WikiAPI::FSWikiで使用可能APIFSWiki用の引数もありますが、基本的にはhttp://www.hyuki.com/yukiwiki/wiki.cgi?WikiRPCを参考にするとよいでしょう。下記以外にも一応インターフェースはありますが、FSWikiにはページのバージョンという概念がないと思うので、実装していません。ページのバージョンに関するデータは1を、ページの作者については空文字を返します。)timestamp(UTC)以降変更されたページのリストを返します。WikiFarmに対応するため、第二引数(wikifarm名)をとれます。配列リファレンス(nameはutf8でエンコードされています。authorは常に空文字、versionは常に1)。wiki.getRPCVersionSupported()戻り値:このAPIのバージョンを返します。)ページのソースを返します。ページにコロン':'が入っているとコロンより前部分がWikiFarmのパスになります。)HTMLレンダリングされたページを返します。ページにコロン':'が入っているとコロンより前部分がWikiFarmのパスになります('farmname:pagename')。)全ページのリストを返します。WikiFarmに対応するため第二引数にFarm名をとれます。戻り値:配列リファレンス(ページ名はutf8でエンコードされています)。)ページ情報を返します。}(nameはutf8でエンコードされています。authorは常に空文字、versionは常に1)。)与えられたページの全リンクを返します。配列リファレンス(pageはリンク先の名前(utf8でエンコード)かURLです。typeはexternal(外部)かlocal(内部)hrefはリンク先のHREF)。)ページに内容を書き込みます。pagenameにコロン(:)を含めると前部分がWikiFarm名になります。pagenameはutf8でエンコードされている必要があります。現在の所、attributesで「下げ」指定ができます。}また、attributesにid,passを設定することで、ログインユーザとして書き込むことができます。Wikiを操作する簡易インターフェースです。WikiAPI::FSWiki::Adapterを利用するだけなので、XML-RPCとは直接関係ありません。wikigate.cgi?method=addPage&page=Memo&sage=1&content=ほにゃららなどとやりますと、Memoというページにタイムスタンプを更新することなくテキストを追加できます。これを利用してbookmarkletをつくったりとかしたら便利かなあと。一応IE用に一つテスト用ファイルが含まれています。method呼び出したい手続き名。APIと同じ名前を持ちますが、大文字小文字は関係有りません。addpageという値もとることができ、これはputpageと違い、既存のページに追加をします。自動で追加データの前に改行されます。ページ名に':'をつけることで、コロンの前の部分がWikiFarm名になります。farmWikiFarm名。このパラメータはrecentchanges、getallpagesに対してのみ有効です。dayrecentchangesにおいて指定する過去の日数。day=3なら3日前からの更新ページの一覧が表示されます。sage真値を設定することで、putpage、addpageにおけるタイムスタンプを更新しなくなります。add真値を設定することで、putpageの場合でも追加書き込みにする。contentputpage、addpageで書き込むデータ。idログインユーザしか書き込めない設定の場合にputPage、addPageで使用するユーザid。passログインユーザしか書き込めない設定の場合にputPage、addPage時で使用するパスワード。注意wiki_xmlrpc.cgiを使用する際、XS版のJcode::Unicodeを利用しないと、レンタルサーバでは動かない可能性があります。wikigate.cgiからの利用だけなら、utf8を使わないのでたぶん大丈夫でしょう。管理者にしか見られないページは、見られません。XML-RPCの処理で利用しているXML::Parser::Liteは公式にはPerl5.6以降対応となっているのですが、5.00503でも動作することを確認しています(必ずしも動くわけではないかもしれません)。参照3.5.2で利用する際は、Adapter.pmのDESTROYDメソッドの一行をコメントアウトしてください。主要ファイルwiki_xmlrpc.cgiサーバCGI。wiki.cgiと同じディレクトリに設置します。lib/WikiAPI.pmAPI用モジュール。lib/WikiAPI/WikiMod.pmWikiAPI.pmとWiki.pmを取り持つアダプタみたいなものlib/WikiAPI/LinkParser.pmlinkList(後述)用のパーサlib/WikiAPI/Introspection.pmイントロスペクション用ファイルCPANモジュール群SOAPXMLXMLRPCを利用しています(SOAP:Liteを参照)。mod_perl(Apache::Registry)で動作確認しています。lib以下にいれます。おまけwikigate.cgiWikiMod.pmを利用した簡易インターフェース(XML-RPCとは関係ありません)。wiki.cgiと同じディレクトリに置きます。etc/wikitest.htmlIE用bookmarklet。ブラウザ上で選択したテキストを直ちにFSWikiのページとして(追加)保存します。実験的なものでIEでしか動きません。wikigate.cgiを叩きます。→うまく動作しませんので、wikitest2.htmlをご利用下さい。etc/xmlrpc_client.cgi適当クライアントCGI。使う必要はありません。パラメータはwikigate.cgiに準じます。設置方法ファイルを展開して、稼働中のwikiディレクトリに一式入れます。標準で3.5.3対応ですが、一行書き直すだけで3.5.2でも動作することを確認しています。使用可能API下記以外にも一応インターフェースはありますが、FSWikiにはページのバージョンという概念がないと思うので、実装していません。ページのバージョンに関するデータは1を、ページの作者については空文字を返します。)timestamp(UTC)以降変更されたページのリストを返します。WikiFarmに対応するため、第二引数(wikifarm名)をとれます。配列リファレンス(nameはutf8でURLエンコードされています。authorは常に空文字、versionは常に1)。wiki.getRPCVersionSupported()戻り値:このAPIのバージョンを返します。)ページのソースを返します。ページにコロン':'が入っているとコロンより前部分がWikiFarmのパスになります。)HTMLレンダリングされたページを返します。ページにコロン':'が入っているとコロンより前部分がWikiFarmのパスになります('farmname:pagename')。)全ページのリストを返します。WikiFarmに対応するため第二引数にFarm名をとれます。戻り値:配列リファレンス(ページ名はutf8でURLエンコードされています)。)ページ情報を返します。}(nameはutf8でURLエンコードされています。authorは常に空文字、versionは常に1)。)与えられたページの全リンクを返します。配列リファレンス(pageはリンク先の名前(utf8でURLエンコード)かURLです。typeはexternal(外部)かlocal(内部)hrefはリンク先のHREF)。)ページに内容を書き込みます。pagenameにコロン(:)を含めると前部分がWikiFarm名になります。pagenameはutf8でURLエンコードされている必要があります。現在の所、attributesで「下げ」指定ができます。}また、attributesにid,passを設定することで、ログインユーザとして書き込むことができます。戻り値:成功時1、それ以外は0wikigate.cgi用のパラメータ主にWikiAPI::WikiModを利用するだけなので、XML-RPCとは関係ない代物です。wikigate.cgi?method=addPage&page=Memo&sage=1&content=ほにゃららなどとやりますと、Memoというページにタイムスタンプを更新することなくテキストを追加できます。これを利用してbookmarkletをつくったりとかしたら便利かなあと。一応IE用に一つテスト用ファイルが含まれています。method呼び出したい手続き名。APIと同じ名前を持ちますが、大文字小文字は関係有りません。addpageという値もとることができ、これはputpageと違い、既存のページに追加をします。自動で追加データの前に改行されます。ページ名に':'をつけることで、コロンの前の部分がWikiFarm名になります。farmWikiFarm名。このパラメータはrecentchanges、getallpagesに対してのみ有効です。dayrecentchangesにおいて指定する過去の日数。day=3なら3日前からの更新ページの一覧が表示されます。sage真値を設定することで、putpage、addpageにおけるタイムスタンプを更新しなくなります。add真値を設定することで、putpageの場合でも追加書き込みにする。contentputpage、addpageで書き込むデータ。idログインユーザしか書き込めない設定の場合にputPage、addPageで使用するユーザid。passログインユーザしか書き込めない設定の場合にputPage、addPage時で使用するパスワード。管理者にしか見られないページは、見られません。wiki_xmlrpc.cgiが利用しているXML::Parser::Liteは公式にはPerl5.6以降対応となっているのですが、5.00503でも動作することを確認しています(必ずしも動くわけではないかもしれません)。参照3.5.2で利用する際は、WikiMod.pmのDESTROYDメソッドの一行をコメントアウトしてください。out}TODObookmarkletの追加。