2016/01/28

Confluence のページの履歴をSOAP APIで削除する

Confluence のページで修正履歴が残るのはいいのですが、絶対に使わないような履歴が残っているのは潔癖症として許すまじものがあるので(大袈裟)、気が向いたら削除しています。とはいえ、web の UI でひとつひとつ削除するのは地味に面倒です。ALL で削除っていうUIがあればいいのに。

そこで、APIでコマンド一発みたいなのが欲しくなり調べてみると、Atlassian的に、これからは REST APIを使え(意訳)的な方針ぽいのに、REST APIはまだ機能的に不十分で、XML-RPCと SOAP APIの方が色んなことができます。案の定、ページの履歴を削除する方法がREST APIには無いようなので、仕方なく SOAP APIを使ってみることに....

本家のドキュメントはこの二つを眺めながら

このご時世SOAPなんか使ってる人は誰も居ないのではないかという情報量なのですが、ruby で soap4r を使いました。debian 的には、ruby-soap4r です。あと、ruby-httpclient も入れておかないとハマる可能性があるので確認(後述)

こんな風。
wiredump_dev はデバッグ用に返ってきたXMLを表示します。
真ん中のコメントの中は、権限を確認してみたところ。
getPageHistory で、最新版を除く履歴が取れるので、取ってきたら削除をループして完了。
wsdl は毎回取得しないで、一旦ゲットしたらローカルに置いておくと優しいかもしれません。
userid, password, pageid の与え方は工夫してください。

恐しいので各自十分なテストの上で(約束)。

あと、テスト環境だとホストのSSL証明書がオレオレなので、


とか言われてストップ。これを回避するには、soap/property っていうファイルを作って、(とりあえずカレントディレクトリ以下でよかった)


と書いておきます。これで回避可能。このとき、ruby-httpclient パッケージを入れていないと、SSLなんか知らん!と言われるので注意。


0 件のコメント: