Aurweb RPC インターフェース

提供: ArchWiki
2023年4月28日 (金) 17:38時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (カテゴリを修正)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

Aurweb RPC インターフェースAUR の軽量 RPC インターフェースです。クエリは HTTP GET リクエストとして送信され、サーバーは JSON で応答します。

ノート: この記事では2018年7月7日の AUR v4.7.0 で更新された RPC インターフェース API バージョン5 について説明しています。

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&…

pkg1pkg2 は情報を取得したいパッケージの名前に置き換えてください (完全一致です)。

返り値タイプは multiinfo または error になります。

例:

foobar パッケージの情報を取得:

https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foobar

foobarbar パッケージの情報を取得:

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

ReturnTypesearchmultiinfo の場合は ReturnData はオブジェクト配列となり、ReturnTypeerror の場合は空の配列になります。

戻り値

ReturnData のタイプは、ReturnTypesearch またはmultiinfo の場合は辞書オブジェクトの配列で、ReturnType error の場合は空の配列です。

ReturnType search の場合、ReturnData には以下のフィールドが含まれている場合があります:

  • ID
  • Name
  • PackageBaseID
  • PackageBase
  • Version
  • Description
  • URL
  • NumVotes
  • Popularity
  • OutOfDate
  • Maintainer
  • FirstSubmitted
  • LastModified
  • URLPath

ReturnTypeinfo または multiinfo の場合、 ReturnData にはさらに次のフィールドが含まれる場合があります:

  • Depends
  • MakeDepends
  • OptDepends
  • CheckDepends
  • Conflicts
  • Provides
  • Replaces
  • Groups
  • License
  • Keywords

パッケージに含まれていないフィールドは出力から省略されます。

error

error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは searchinfo クエリタイプで返ってくることがあります。

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