「AurJson」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(直接転送に変更)
タグ: 転送先変更
 
(3人の利用者による、間の6版が非表示)
1行目: 1行目:
  +
#REDIRECT [[Aurweb RPC インターフェース]]
[[Category:パッケージ開発]]
 
[[en:AurJson]]
 
{{Related articles start}}
 
{{Related|公式リポジトリウェブインターフェイス}}
 
{{Related articles end}}
 
'''AurJson''' インターフェイスは [[AUR]] の軽量リモートインターフェイスです。http の GET クエリでリクエストすることで、[http://www.json.org/ json] データとしてレスポンスを得ることができます。
 
 
== API の使用方法 ==
 
 
[https://aur.archlinux.org/rpc.php RPC インターフェイス] には4つのクエリタイプがあります:
 
 
* search
 
* msearch
 
* info
 
* multiinfo
 
 
各メソッドには以下の HTTP GET 構文でアクセスする必要があります:
 
 
type=methodname&arg=data
 
 
'''''methodname''''' は使用するメソッドの名前に、'''''data''''' はコールの引数に置き換えて下さい。
 
 
データは json 形式で返ってきます。
 
 
=== クエリタイプ ===
 
 
上述したように、4つのクエリタイプが存在します:
 
* search
 
* msearch
 
* info
 
* multiinfo
 
 
==== search ====
 
 
'''''search''''' タイプのクエリにはパッケージ検索を行う文字列を指定します。返ってくるタイプは '''''error''''' と '''''search''''' です。
 
 
例:
 
<nowiki>https://aur.archlinux.org/rpc.php?type=search&arg=foobar</nowiki>
 
 
上記のクエリのタイプは '''''search''''' で検索引数は "foobar" です。
 
 
==== msearch ====
 
 
'''''msearch''''' タイプのクエリにはメンテナの名前で検索する文字列を指定します。返答タイプは '''''error''''' と '''''msearch''''' です。
 
 
例:
 
<nowiki>https://aur.archlinux.org/rpc.php?type=msearch&arg=cactus</nowiki>
 
 
上記のクエリのタイプは '''''msearch''''' で検索引数は "cactus" です。
 
 
==== info ====
 
 
'''''info''''' タイプのクエリには文字列あるいは数値を指定します。数値の場合、既存の packageID と完全一致する必要があり、一致しなければ '''''error''''' タイプが返ってきます。文字列の場合、既存の packageName と完全一致する必要があり、一致しない場合 '''''error''''' タイプが返ってきます。
 
 
例:
 
<nowiki>https://aur.archlinux.org/rpc.php?type=info&arg=1123</nowiki>
 
<nowiki>https://aur.archlinux.org/rpc.php?type=info&arg=foobar</nowiki>
 
 
上記の例はどちらも '''''info''''' タイプのクエリです。前者のクエリは数値を指定しており、後者は packageName 引数を使っています。packageID 1123 が packageName foobar に対応していた場合、上記のクエリはどちらも foobar パッケージの詳細を返します。
 
 
==== multiinfo ====
 
 
現実的には info リクエストを大量に行う必要が出てくることもあるでしょう。AUR では一回のリクエストで複数のパッケージを処理することができます。
 
 
例:
 
<nowiki>https://aur.archlinux.org/rpc.php?type=multiinfo&arg[]=cups-xerox&arg[]=cups-mc2430dl&arg[]=10673</nowiki>
 
 
=== 返り値タイプ ===
 
 
返り値は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''''' の例:
 
<nowiki>
 
{
 
"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
 
}
 
 
}
 
</nowiki>
 
 
==== multiinfo ====
 
multiinfo タイプは multiinfo リクエストから返される結果です。リクエストの結果は、info リクエストと同じです。info セクションを見てください。
 
 
ReturnType '''''multiinfo''''' の例:
 
{"type":"multiinfo","results":[{"Name":"pam_abl","ID":1995, ...}]}
 
 
=== jsonp ===
 
 
JavaScript のページを作っていて、JSON のコールバックメカニズムが必要な場合、可能です。callback 変数を追加で指定してください。コールバックは基本的に JavaScript のライブラリで処理しますが、以下が例です。
 
 
クエリの例:
 
<nowiki>https://aur.archlinux.org/rpc.php?type=search&arg=foobar&callback=jsonp1192244621103</nowiki>
 
 
結果:
 
jsonp1192244621103({"type":"error","results":"No results found"})
 
 
RPC コールの結果が設定されたパラメータ (上記の場合なら {{Ic|<nowiki>{"type":"error","results":"No results found"}</nowiki>}}) で JavaScript の関数 {{Ic|jsonp1192244621103}} が自動的に呼びだされます。
 
 
== サンプル ==
 
 
クエリの例と結果:
 
 
<nowiki>https://aur-url/rpc.php?type=search&arg=foobar</nowiki>
 
{"type":"error","results":"No results found"}
 
 
クエリの例と結果:
 
 
<nowiki>https://aur-url/rpc.php?type=search&arg=pam_abl</nowiki>
 
{"type":"search","results":[{"Name":"pam_abl","ID":1995}]}
 
 
クエリの例と結果:
 
 
<nowiki>https://aur-url/rpc.php?type=info&arg=pam_abl</nowiki>
 
{
 
"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": "<nowiki>http://www.hexten.net/pam_abl</nowiki>",
 
"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
 
 
== 関連するコード ==
 
 
非公式の [http://xyne.archlinux.ca/projects/python3-aur/ python3-aur] には AUR のリモート JSON インターフェイスなど AUR のサービスを使用するための Python 3 モジュールが入っています。パッケージは [http://xyne.archlinux.ca/repos/ Xyne のリポジトリ] や AUR の {{AUR|python3-aur}} パッケージでインストールできます。
 

2022年11月2日 (水) 16:30時点における最新版