「AurJson」の版間の差分
(同期) |
|||
4行目: | 4行目: | ||
{{Related|公式リポジトリウェブインターフェイス}} |
{{Related|公式リポジトリウェブインターフェイス}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | + | [https://aur.archlinux.org/rpc.php AurJson] インターフェイスは [[AUR]] の軽量リモートインターフェイスです。http の GET クエリでリクエストすることで、[http://www.json.org/ json] データとしてレスポンスを得ることができます。 |
|
+ | |||
+ | {{Note|この記事では2016年2月15日にリリースされた AUR v4.2.0 の RPC インターフェイス API バージョン5について説明しています。}} |
||
== API の使用方法 == |
== API の使用方法 == |
||
+ | === クエリタイプ === |
||
− | [https://aur.archlinux.org/rpc.php RPC インターフェイス] には4つのクエリタイプがあります: |
||
+ | |||
+ | 以下の2つのクエリタイプが存在します: |
||
* search |
* search |
||
− | * msearch |
||
* info |
* info |
||
− | * multiinfo |
||
+ | ==== search ==== |
||
− | 各メソッドには以下の HTTP GET 構文でアクセスする必要があります: |
||
+ | 以下の形式のリクエストを実行することでパッケージを検索できます: |
||
− | type=methodname&arg=data |
||
+ | /rpc/?v=5&type=search&by=''field''&arg=''keywords'' |
||
− | '''''methodname''''' は使用するメソッドの名前に、'''''data''''' はコールの引数に置き換えて下さい。 |
||
+ | {{ic|''keywords''}} は検索単語に {{ic|''field''}} は以下の値のどれかに置き換えてください: |
||
− | データは json 形式で返ってきます。 |
||
+ | * {{ic|name}} (パッケージ名だけで検索) |
||
− | === クエリタイプ === |
||
+ | * {{ic|name-desc}} (パッケージ名と説明の両方で検索) |
||
+ | * {{ic|maintainer}} (パッケージメンテナで検索) |
||
+ | {{ic|by}} パラメータは省略することができ、その場合は {{ic|name-desc}} がデフォルトです。 |
||
− | 上述したように、4つのクエリタイプが存在します: |
||
− | * search |
||
− | * msearch |
||
− | * info |
||
− | * multiinfo |
||
+ | 返り値タイプは {{ic|search}} または {{ic|error}} になります。 |
||
− | ==== search ==== |
||
+ | 検索単語を空にしてメンテナ検索した場合、メンテナが存在しないパッケージのリストが返ってきます。 |
||
− | '''''search''''' タイプのクエリにはパッケージ検索を行う文字列を指定します。返ってくるタイプは '''''error''''' と '''''search''''' です。 |
||
例: |
例: |
||
− | <nowiki>https://aur.archlinux.org/rpc.php?type=search&arg=foobar</nowiki> |
||
+ | {{ic|foobar}} で検索: |
||
− | 上記のクエリのタイプは '''''search''''' で検索引数は "foobar" です。 |
||
+ | <nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar</nowiki> |
||
+ | {{ic|john}} によってメンテナンスされているパッケージを検索: |
||
− | ==== msearch ==== |
||
+ | <nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&by=maintainer&arg=john</nowiki> |
||
+ | コールバックを指定して検索: |
||
− | '''''msearch''''' タイプのクエリにはメンテナの名前で検索する文字列を指定します。返答タイプは '''''error''''' と '''''msearch''''' です。 |
||
+ | <nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103</nowiki> |
||
+ | ==== info ==== |
||
− | 例: |
||
− | <nowiki>https://aur.archlinux.org/rpc.php?type=msearch&arg=cactus</nowiki> |
||
+ | 以下の形式のリクエストを実行することでパッケージの情報を取得できます: |
||
− | 上記のクエリのタイプは '''''msearch''''' で検索引数は "cactus" です。 |
||
+ | /rpc/?v=5&type=info&arg[]=''pkg1''&arg[]=''pkg2''&… |
||
− | ==== info ==== |
||
+ | |||
+ | {{ic|''pkg1''}} や {{ic|''pkg2''}} は情報を取得したいパッケージの名前に置き換えてください (完全一致です)。 |
||
+ | 返り値タイプは {{ic|multiinfo}} または {{ic|error}} になります。 |
||
− | '''''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> |
||
+ | {{ic|foobar}} パッケージの情報を取得: |
||
− | 上記の例はどちらも '''''info''''' タイプのクエリです。前者のクエリは数値を指定しており、後者は packageName 引数を使っています。packageID 1123 が packageName foobar に対応していた場合、上記のクエリはどちらも foobar パッケージの詳細を返します。 |
||
+ | <nowiki>https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foobar</nowiki> |
||
+ | {{ic|foobar}} と {{ic|bar}} パッケージの情報を取得: |
||
− | ==== multiinfo ==== |
||
+ | <nowiki>https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foo&arg[]=bar</nowiki> |
||
− | |||
− | 現実的には info リクエストを大量に行う必要が出てくることもあるでしょう。AUR では一回のリクエストで複数のパッケージを処理することができます。 |
||
− | |||
− | 例: |
||
− | <nowiki>https://aur.archlinux.org/rpc.php?type=multiinfo&arg[]=cups-xerox&arg[]=cups-mc2430dl&arg[]=10673</nowiki> |
||
=== 返り値タイプ === |
=== 返り値タイプ === |
||
− | 返り値は |
+ | 返り値は3つあるタイプのどれかになります。かならずタイプを返すので、操作の結果がエラーだったかどうか判断することができます。 |
返り値のペイロードは以下の形式になっています: |
返り値のペイロードは以下の形式になっています: |
||
− | {"type":ReturnType,"results":ReturnData} |
+ | {"version":5,"type":''ReturnType'',"resultcount":0,"results":''ReturnData''} |
− | ReturnType は文字列で、以下のうちのどれか |
+ | {{ic|''ReturnType''}} は文字列で、以下のうちのどれかになります: |
− | * error |
||
− | * search |
||
− | * msearch |
||
− | * info |
||
− | * multiinfo |
||
+ | * {{ic|search}} |
||
− | ReturnData のタイプはクエリタイプによります: |
||
+ | * {{ic|multiinfo}} |
||
− | * ReturnType が '''''error''''' なら ReturnData は文字列です。 |
||
+ | * {{ic|error}} |
||
− | * ReturnType が '''''search''''' なら ReturnData は辞書オブジェクトの配列です。 |
||
+ | |||
− | * ReturnType が '''''msearch''''' なら ReturnData は辞書オブジェクトの配列です。 |
||
+ | {{ic|''ReturnType''}} が {{ic|search}} と {{ic|multiinfo}} の場合は {{ic|''ReturnData''}} はオブジェクト配列となり、{{ic|''ReturnType''}} が {{ic|error}} の場合は空の配列になります。 |
||
− | * ReturnType が '''''info''''' なら ReturnData は辞書オブジェクトです。 |
||
− | * ReturnType が '''''multiinfo''''' なら ReturnData は辞書オブジェクトの配列です。 |
||
==== error ==== |
==== error ==== |
||
− | error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは |
+ | error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは {{ic|search}} と {{ic|info}} クエリタイプで返ってくることがあります。 |
− | + | {{ic|''ReturnType''}} {{ic|error}} の例: |
|
− | {"type":"error","results":" |
+ | {"version":5,"type":"error","resultcount":0,"results":[],"error":"Incorrect by field specified."} |
==== search ==== |
==== search ==== |
||
search タイプは search リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。 |
search タイプは search リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。 |
||
− | + | {{ic|''ReturnType''}} {{ic|search}} の例: |
|
− | {"type":"search","results":[{" |
+ | {"version":5,"type":"search","resultcount":2,"results":[{"ID":206807,"Name":"cower-git", ...}]} |
− | |||
− | ==== msearch ==== |
||
− | msearch タイプは msearch リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。 |
||
− | |||
− | ReturnType '''''msearch''''' の例: |
||
− | {"type":"msearch","results":[{"Name":"pam_abl","ID":1995, ...}]} |
||
==== info ==== |
==== info ==== |
||
− | info タイプは info リクエストから返される結果で |
+ | info タイプは info リクエストから返される結果です。 |
+ | {{ic|''ReturnType''}} {{ic|multiinfo}} の例: |
||
− | ReturnType '''''info''''' の例: |
||
<nowiki> |
<nowiki> |
||
{ |
{ |
||
− | " |
+ | "version":5, |
− | " |
+ | "type":"multiinfo", |
+ | "resultcount":1, |
||
− | "URL": "http://pam-abl.deksai.com/" |
||
+ | "results":[{ |
||
− | "Description": "Automated blacklisting on repeated failed authentication attempts" |
||
− | " |
+ | "ID":229417, |
− | "Name": |
+ | "Name":"cower", |
− | " |
+ | "PackageBaseID":44921, |
− | " |
+ | "PackageBase":"cower", |
− | " |
+ | "Version":"14-2", |
+ | "Description":"A simple AUR agent with a pretentious name", |
||
− | "OutOfDate": 0 |
||
+ | "URL":"http:\/\/github.com\/falconindy\/cower", |
||
− | "LastModified": 1336659370 |
||
− | " |
+ | "NumVotes":590, |
− | " |
+ | "Popularity":24.595536, |
+ | "OutOfDate":null, |
||
− | "URLPath": "/packages/pa/pam_abl/pam_abl.tar.gz" |
||
− | " |
+ | "Maintainer":"falconindy", |
+ | "FirstSubmitted":1293676237, |
||
− | } |
||
+ | "LastModified":1441804093, |
||
− | |||
+ | "URLPath":"\/cgit\/aur.git\/snapshot\/cower.tar.gz", |
||
+ | "Depends":[ |
||
+ | "curl", |
||
+ | "openssl", |
||
+ | "pacman", |
||
+ | "yajl" |
||
+ | ], |
||
+ | "MakeDepends":[ |
||
+ | "perl" |
||
+ | ], |
||
+ | "License":[ |
||
+ | "MIT" |
||
+ | ], |
||
+ | "Keywords":[] |
||
+ | }] |
||
} |
} |
||
</nowiki> |
</nowiki> |
||
− | |||
− | ==== multiinfo ==== |
||
− | multiinfo タイプは multiinfo リクエストから返される結果です。リクエストの結果は、info リクエストと同じです。info セクションを見てください。 |
||
− | |||
− | ReturnType '''''multiinfo''''' の例: |
||
− | {"type":"multiinfo","results":[{"Name":"pam_abl","ID":1995, ...}]} |
||
=== jsonp === |
=== jsonp === |
||
− | JavaScript |
+ | JavaScript ページを作っていて、JSON のコールバックメカニズムが必要な場合、callback 変数を追加で指定することで可能です。コールバックは基本的に JavaScript のライブラリで処理しますが、以下が例です。 |
クエリの例: |
クエリの例: |
||
− | <nowiki>https://aur.archlinux.org/rpc |
+ | <nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103</nowiki> |
− | 結果: |
+ | 結果の例: |
+ | /**/jsonp1192244621103({"version":5,"type":"search","resultcount":1,"results":[{"ID":250608,"Name":"foobar2000","PackageBaseID":37068,"PackageBase":"foobar2000","Version":"1.3.9-1","Description":"An advanced freeware audio player (uses Wine).","URL":"http:\/\/www.foobar2000.org\/","NumVotes":39,"Popularity":0.425966,"OutOfDate":null,"Maintainer":"supermario","FirstSubmitted":1273255356,"LastModified":1448326415,"URLPath":"\/cgit\/aur.git\/snapshot\/foobar2000.tar.gz"}]}) |
||
− | jsonp1192244621103({"type":"error","results":"No results found"}) |
||
− | RPC コールの結果が設定され |
+ | 引数に RPC コールの結果が設定されて 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/ |
+ | 時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/2b72a1723bfc8ae64eed6a3c40cb154accae3974/aurjson_examples |
== 関連するコード == |
== 関連するコード == |
||
− | + | * {{AUR|python3-aur}} パッケージには AUR のリモート JSON インターフェイスなど AUR のサービスを使用するための Python 3 モジュールが入っています。詳しくは [http://xyne.archlinux.ca/projects/python3-aur/ python3-aur] を参照。 |
|
+ | * {{Pkg|jshon}} はコマンドラインから JSON をパース・読み込み・作成します。詳しくは [http://kmkeen.com/jshon/ jshon] を参照。 |
2017年6月5日 (月) 21:40時点における版
関連記事
AurJson インターフェイスは AUR の軽量リモートインターフェイスです。http の GET クエリでリクエストすることで、json データとしてレスポンスを得ることができます。
目次
API の使用方法
クエリタイプ
以下の2つのクエリタイプが存在します:
- search
- info
search
以下の形式のリクエストを実行することでパッケージを検索できます:
/rpc/?v=5&type=search&by=field&arg=keywords
keywords
は検索単語に field
は以下の値のどれかに置き換えてください:
name
(パッケージ名だけで検索)name-desc
(パッケージ名と説明の両方で検索)maintainer
(パッケージメンテナで検索)
by
パラメータは省略することができ、その場合は name-desc
がデフォルトです。
返り値タイプは search
または error
になります。
検索単語を空にしてメンテナ検索した場合、メンテナが存在しないパッケージのリストが返ってきます。
例:
foobar
で検索:
https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar
john
によってメンテナンスされているパッケージを検索:
https://aur.archlinux.org/rpc/?v=5&type=search&by=maintainer&arg=john
コールバックを指定して検索:
https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103
info
以下の形式のリクエストを実行することでパッケージの情報を取得できます:
/rpc/?v=5&type=info&arg[]=pkg1&arg[]=pkg2&…
pkg1
や pkg2
は情報を取得したいパッケージの名前に置き換えてください (完全一致です)。
返り値タイプは multiinfo
または error
になります。
例:
foobar
パッケージの情報を取得:
https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foobar
foobar
と bar
パッケージの情報を取得:
https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foo&arg[]=bar
返り値タイプ
返り値は3つあるタイプのどれかになります。かならずタイプを返すので、操作の結果がエラーだったかどうか判断することができます。
返り値のペイロードは以下の形式になっています:
{"version":5,"type":ReturnType,"resultcount":0,"results":ReturnData}
ReturnType
は文字列で、以下のうちのどれかになります:
search
multiinfo
error
ReturnType
が search
と multiinfo
の場合は ReturnData
はオブジェクト配列となり、ReturnType
が error
の場合は空の配列になります。
error
error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは search
と info
クエリタイプで返ってくることがあります。
ReturnType
error
の例:
{"version":5,"type":"error","resultcount":0,"results":[],"error":"Incorrect by field specified."}
search
search タイプは search リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。
ReturnType
search
の例:
{"version":5,"type":"search","resultcount":2,"results":[{"ID":206807,"Name":"cower-git", ...}]}
info
info タイプは info リクエストから返される結果です。
ReturnType
multiinfo
の例:
{ "version":5, "type":"multiinfo", "resultcount":1, "results":[{ "ID":229417, "Name":"cower", "PackageBaseID":44921, "PackageBase":"cower", "Version":"14-2", "Description":"A simple AUR agent with a pretentious name", "URL":"http:\/\/github.com\/falconindy\/cower", "NumVotes":590, "Popularity":24.595536, "OutOfDate":null, "Maintainer":"falconindy", "FirstSubmitted":1293676237, "LastModified":1441804093, "URLPath":"\/cgit\/aur.git\/snapshot\/cower.tar.gz", "Depends":[ "curl", "openssl", "pacman", "yajl" ], "MakeDepends":[ "perl" ], "License":[ "MIT" ], "Keywords":[] }] }
jsonp
JavaScript ページを作っていて、JSON のコールバックメカニズムが必要な場合、callback 変数を追加で指定することで可能です。コールバックは基本的に JavaScript のライブラリで処理しますが、以下が例です。
クエリの例:
https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103
結果の例:
/**/jsonp1192244621103({"version":5,"type":"search","resultcount":1,"results":[{"ID":250608,"Name":"foobar2000","PackageBaseID":37068,"PackageBase":"foobar2000","Version":"1.3.9-1","Description":"An advanced freeware audio player (uses Wine).","URL":"http:\/\/www.foobar2000.org\/","NumVotes":39,"Popularity":0.425966,"OutOfDate":null,"Maintainer":"supermario","FirstSubmitted":1273255356,"LastModified":1448326415,"URLPath":"\/cgit\/aur.git\/snapshot\/foobar2000.tar.gz"}]})
引数に RPC コールの結果が設定されて JavaScript 関数 jsonp1192244621103
が自動的に呼び出されます。
リファレンスクライアント
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/2b72a1723bfc8ae64eed6a3c40cb154accae3974/aurjson_examples
関連するコード
- python3-aurAUR パッケージには AUR のリモート JSON インターフェイスなど AUR のサービスを使用するための Python 3 モジュールが入っています。詳しくは python3-aur を参照。
- jshon はコマンドラインから JSON をパース・読み込み・作成します。詳しくは jshon を参照。