Aurweb RPC インターフェース
関連記事
Aurweb RPC インターフェース は AUR の軽量 RPC インターフェースです。クエリは HTTP GET リクエストとして送信され、サーバーは JSON で応答します。
目次
API の使用方法
クエリタイプ
以下の2つのクエリタイプが存在します:
- search
- info
search
以下の形式のリクエストを実行することでパッケージを検索できます:
/rpc/?v=5&type=search&by=field&arg=keywords
keywords
は検索単語に field
は以下の値のどれかに置き換えてください:
name
(パッケージ名だけで検索)name-desc
(パッケージ名と説明の両方で検索)maintainer
(パッケージメンテナで検索)depends
(search for packages that depend on keywords)makedepends
(search for packages that makedepend on keywords)optdepends
(search for packages that optdepend on keywords)checkdepends
(search for packages that checkdepend on keywords)
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
Search for packages that have foobar
as `makedepends`:
https://aur.archlinux.org/rpc/?v=5&type=search&by=makedepends&arg=foobar
コールバックを指定して検索:
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
の場合は空の配列になります。
戻り値
ReturnData
のタイプは、ReturnType
が search
またはmultiinfo
の場合は辞書オブジェクトの配列で、ReturnType
error
の場合は空の配列です。
ReturnType
search
の場合、ReturnData
には以下のフィールドが含まれている場合があります:
ID
Name
PackageBaseID
PackageBase
Version
Description
URL
NumVotes
Popularity
OutOfDate
Maintainer
FirstSubmitted
LastModified
URLPath
ReturnType
が info
または multiinfo
の場合、 ReturnData
にはさらに次のフィールドが含まれる場合があります:
Depends
MakeDepends
OptDepends
CheckDepends
Conflicts
Provides
Replaces
Groups
License
Keywords
パッケージに含まれていないフィールドは出力から省略されます。
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
が自動的に呼び出されます。
制限事項
- HTTP GET リクエストは、最大長 8190バイトのURIに制限されていますが、HTTP/2 を使用して nginx サーバーで実行されている公式AURインスタンスは、デフォルトの URI 最大長の制限である 4443バイトを使用します。引数として約200を超えるパッケージを含む info リクエストは分割する必要があります。
- 検索クエリは少なくとも2文字以上である必要があります。
- 検索結果が5000件以上の場合、検索は失敗します。
- API レートは 1 IPあたり 1 日最大 4000リクエストに制限されています。
リファレンスクライアント
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/2b72a1723bfc8ae64eed6a3c40cb154accae3974/aurjson_examples