AurJson

提供: ArchWiki
2016年1月4日 (月) 19:59時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

関連記事

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 タイプのクエリにはパッケージ検索を行う文字列を指定します。返ってくるタイプは errorsearch です。

例:

https://aur.archlinux.org/rpc.php?type=search&arg=foobar

上記のクエリのタイプは search で検索引数は "foobar" です。

msearch

msearch タイプのクエリにはメンテナの名前で検索する文字列を指定します。返答タイプは errormsearch です。

例:

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 タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは searchinfo クエリタイプのどちらかで返ってきます。

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 パッケージでインストールできます。