AurJson
関連記事
AurJson インターフェイスは AUR の軽量リモートインターフェイスです。http の GET クエリでリクエストすることで、json データとしてレスポンスを得ることができます。
目次
API の使用方法
RPC インターフェイス には4つのクエリタイプがあります:
- search
- msearch
- info
- multiinfo
各メソッドには以下の HTTP GET 構文でアクセスする必要があります:
type=methodname&arg=data
methodname は使用するメソッドの名前に、data はコールの引数に置き換えて下さい。
データは json 形式で返ってきます。
クエリタイプ
上述したように、4つのクエリタイプが存在します:
- search
- msearch
- info
- multiinfo
search
search タイプのクエリにはパッケージ検索を行う文字列を指定します。返ってくるタイプは error と search です。
例:
https://aur.archlinux.org/rpc.php?type=search&arg=foobar
上記のクエリのタイプは search で検索引数は "foobar" です。
msearch
msearch タイプのクエリにはメンテナの名前で検索する文字列を指定します。返答タイプは error と msearch です。
例:
https://aur.archlinux.org/rpc.php?type=msearch&arg=cactus
上記のクエリのタイプは msearch で検索引数は "cactus" です。
info
info タイプのクエリには文字列あるいは数値を指定します。数値の場合、既存の packageID と完全一致する必要があり、一致しなければ error タイプが返ってきます。文字列の場合、既存の packageName と完全一致する必要があり、一致しない場合 error タイプが返ってきます。
例:
https://aur.archlinux.org/rpc.php?type=info&arg=1123 https://aur.archlinux.org/rpc.php?type=info&arg=foobar
上記の例はどちらも info タイプのクエリです。前者のクエリは数値を指定しており、後者は packageName 引数を使っています。packageID 1123 が packageName foobar に対応していた場合、上記のクエリはどちらも foobar パッケージの詳細を返します。
multiinfo
現実的には info リクエストを大量に行う必要が出てくることもあるでしょう。AUR では一回のリクエストで複数のパッケージを処理することができます。
例:
https://aur.archlinux.org/rpc.php?type=multiinfo&arg[]=cups-xerox&arg[]=cups-mc2430dl&arg[]=10673
返り値タイプ
返り値は5つあるタイプのどれかになります。かならずタイプを返すので、操作の結果がエラーだったかどうか判断することができます。
返り値のペイロードは以下の形式になっています:
{"type":ReturnType,"results":ReturnData}
ReturnType は文字列で、以下のうちのどれかです:
* error * search * msearch * info * multiinfo
ReturnData のタイプはクエリタイプによります:
- ReturnType が error なら ReturnData は文字列です。
- ReturnType が search なら ReturnData は辞書オブジェクトの配列です。
- ReturnType が msearch なら ReturnData は辞書オブジェクトの配列です。
- ReturnType が info なら ReturnData は辞書オブジェクトです。
- ReturnType が multiinfo なら ReturnData は辞書オブジェクトの配列です。
error
error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは search と info クエリタイプのどちらかで返ってきます。
ReturnType error の例:
{"type":"error","results":"No results found"}
search
search タイプは search リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。
ReturnType search の例:
{"type":"search","results":[{"Name":"pam_abl","ID":1995, ...}]}
msearch
msearch タイプは msearch リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。
ReturnType msearch の例:
{"type":"msearch","results":[{"Name":"pam_abl","ID":1995, ...}]}
info
info タイプは info リクエストから返される結果です。検索でこのタイプが返ってきたら検索のレスポンスが検索データかエラーかを判断できます。
ReturnType info の例:
{ "type": "info", "results": { "URL": "http://pam-abl.deksai.com/" "Description": "Automated blacklisting on repeated failed authentication attempts" "Version": "0.4.3-1" "Name": "pam_abl" "FirstSubmitted": 1125707839 "License": "BSD GPL" "ID": 1995 "OutOfDate": 0 "LastModified": 1336659370 "Maintainer": "redden0t8" "CategoryID": 16 "URLPath": "/packages/pa/pam_abl/pam_abl.tar.gz" "NumVotes": 10 } }
multiinfo
multiinfo タイプは multiinfo リクエストから返される結果です。リクエストの結果は、info リクエストと同じです。info セクションを見てください。
ReturnType multiinfo の例:
{"type":"multiinfo","results":[{"Name":"pam_abl","ID":1995, ...}]}
jsonp
JavaScript のページを作っていて、JSON のコールバックメカニズムが必要な場合、可能です。callback 変数を追加で指定してください。コールバックは基本的に JavaScript のライブラリで処理しますが、以下が例です。
クエリの例:
https://aur.archlinux.org/rpc.php?type=search&arg=foobar&callback=jsonp1192244621103
結果:
jsonp1192244621103({"type":"error","results":"No results found"})
RPC コールの結果が設定されたパラメータ (上記の場合なら {"type":"error","results":"No results found"}
) で JavaScript の関数 jsonp1192244621103
が自動的に呼びだされます。
サンプル
クエリの例と結果:
https://aur-url/rpc.php?type=search&arg=foobar {"type":"error","results":"No results found"}
クエリの例と結果:
https://aur-url/rpc.php?type=search&arg=pam_abl {"type":"search","results":[{"Name":"pam_abl","ID":1995}]}
クエリの例と結果:
https://aur-url/rpc.php?type=info&arg=pam_abl { "type": "info", "results": { "Description": "Provides auto blacklisting of hosts and users responsible for repeated failed authentication attempts", "ID": 1995, "License": "", "Name": "pam_abl", "NumVotes": 4, "OutOfDate": 0, "URL": "http://www.hexten.net/pam_abl", "URLPath": "/packages/pam_abl/pam_abl.tar.gz", "Version": "0.2.3-1" } }
リファレンスクライアント
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/master/aurjson_examples
関連するコード
非公式の python3-aur には AUR のリモート JSON インターフェイスなど AUR のサービスを使用するための Python 3 モジュールが入っています。パッケージは Xyne のリポジトリ や AUR の python3-aurAUR パッケージでインストールできます。