XML-RPC 関数

XML-RPC 関数 -- XML-RPC 関数の API ドキュメント

標準チャネルではどんな XML-RPC 関数が使用可能?

標準 PEAR チャネルがサポートしている XML-RPC 関数の一覧は以下のとおりです。

channel.listAll を実装することも可能ですが、これは pear.php.net および pecl.php.net によってのみ実装されることを推奨します。 というのは、これは update-channels コマンドによって 公式なチャネルの一覧を取得するために使用されるものだからです。

logintest

xml-rpc 関数 logintest は login コマンドからコールされ、 論理型の TRUE を返します。

package.getDownloadURL

false|struct package.getDownloadURL (struct packageinfo [, string preferred_state = stable [, (v1.1) string installed_version = false]])

false|struct packageinfo

以下の形式の配列。

array(
        'channel' => チャネル名,
        'package' => パッケージ名,
        ['version' => 取得したい特定のバージョン,]
        ['state' => 取得したい特定の状態,]
     )

version および state がともに設定されている場合、 version の内容は無視されます。

string preferred_state = stable

クライアント側の preferred_state。これは、安定バージョンでない リリースを除くために使用します。

string installed_version = false

現在クライアント側にインストールされているパッケージのバージョン。 バージョンを表す文字列か、インストールされていない場合には false となります。これは、 (version_compare(返す可能性のあるバージョン, インストールされているバージョン, "<") で定義される) 古いバージョンを返さないことを確実にするために使用します。

package.getDownloadURL 関数は、2 つあるいは 3 つの要素を持つ 配列を返します。

package.getDownloadURL のバージョン 1.0 では installed_version パラメータをサポートしていません。バージョン 1.1 ではサポートしています。 これが、2 つのバージョン間の唯一の違いです。

package.getDepDownloadURL

false|struct package.getDepDownloadURL (string xsdversion, struct dependency, struct parentpackage [, string preferred_state = stable [, (v1.1) string installed_version = false]])

string xsdversion

'1.0' あるいは '2.0' のいずれかであり、トップレベルの <package version="X.0"> タグの version 属性に 一致します。これにより、第 2 パラメータをどのように処理するのかを 決定します。

struct dependency

第 1 パラメータ xsdversion が '1.0' の場合、以下の形式の配列となります。

array(
        'name' => パッケージ名,
        'type' => 'pkg' - これ以外はエラー,
        'rel' => 'has', 'ge', 'le', 'lt', 'le', 'not', 'ne'
        ['version' => 取得したい特定のバージョン,]
     )

xsdversion が '2.0' の場合、以下の形式の配列となります。

array(
        'name' => パッケージ名,
        'channel' => パッケージチャネル - 以下を参照,
        ['min' => 最小バージョン番号 (この値を含む),]
        ['max' => 最大バージョン番号 (この値を含む),]
        ['exclude' => 例外とするバージョン番号 (文字列),
                      あるいは例外とする複数バージョンの配列,]
     )

channel があなたのチャネルと一致することを常に確かめなければ なりません。もしチャネルサーバが pear.php.net あるいは pecl.php.net 以外の場合は、xsdversion='1.0' のリクエストは すべて拒否しなければなりません。また、xsdversion='2.0' であっても channel があなたのチャネルと一致しないリクエストも 拒否しなければなりません。

struct parentpackage

親パッケージの情報で、以下の形式の配列となります。

array(
        'channel' => チャネル名,
        'package' => パッケージ名,
        'version' => 取得したい特定のバージョン,
     )

string preferred_state = stable

クライアント側の preferred_state。これは、安定バージョンでない リリースを除くために使用します。

string installed_version = false

現在クライアント側にインストールされている依存パッケージのバージョン。 バージョンを表す文字列か、インストールされていない場合には false となります。これは、 (version_compare(返す可能性のあるバージョン, インストールされているバージョン, "<") で定義される) 古いバージョンを返さないことを確実にするために使用します。

package.getDownloadURL と同様、package.getDepDownloadURL は 2 つあるいは 3 つの要素を持つ配列を返します。

package.getDepDownloadURL のバージョン 1.0 では installed_version パラメータをサポートしていません。バージョン 1.1 ではサポートしています。 これが、2 つのバージョン間の唯一の違いです。

package.info

false|struct package.info (string package [, string field = null])

string package

情報を取得するパッケージの名前。

string field = null

情報を取得するフィールドの名前。null の場合、この関数は 以下の要素を持つ配列を返します。

<?php
array(
    'name' => 'パッケージ名',
    'category' => 'カテゴリ名',
    'license' => 'パッケージのライセンス',
    'summary' => 'パッケージの概要',
    'description' => 'パッケージの説明',
    'releases' =>
    array( // すべてのリリースをバージョン番号をキーとして格納します
        '0.1' =>
        array(
          'license' => 'リリースのライセンス',
          'summary' => 'リリースの概要',
          'description' => 'リリースの説明',
          'releasedate' => 'リリース日',
          'releasenotes' => 'リリースノート',
          'state' => 'リリースの安定性',
          // 以下の項目はオプションです
          'deps' =>
          array(
            array( // 最新リリースの依存性
              'type' => 'package.xml <dep> の type',
              'relation' => 'package.xml <dep> の rel',
              'version' => 'package.xml <dep> の version、あるいは空の文字列',
              'name' => 'package.xml <dep> の name',
              'optional' => 'yes あるいは no',
            ),
            // すべての依存性について続けます
          ),
        ),
        // すべてのリリースについて続けます
        // これは、リリース日の新しい順に並べなければなりません
    ),
);
?>

もし第 2 パラメータを指定する場合、それは以下のいずれかでなければなりません。

  • authors - 現在のパッケージメンテナの一覧。形式は以下のとおりです。

    <?php
    array(
        'handle1' =>
        array(
          'name' => 'メンテナの名前',
          'email' => 'maintainer@example.com',
          'role' => 'package.xml での role (lead, developer, contributor, helper)',
        ),
        'handle2' =>
        array(
          'name' => 'メンテナ 2 の名前',
          'email' => 'maintainer2@example.com',
          'role' => 'package.xml での role (lead, developer, contributor, helper)',
        ),
        // など
    );
    ?>

  • category - このパッケージが所属するカテゴリ。

  • description - 最新リリースの説明。

  • license - 最新リリースのライセンス。

  • notes - 最新リリースのリリースノート。

  • releases - すべてのリリースについての情報。上で説明したような 形式となります。

  • summary - 最新リリースの概要。

package.listAll

struct package.listAll ([bool released_only = true [, bool stable_only = true]])

bool released_only = TRUE

TRUE を指定すると、リリースされていないパッケージは パッケージ一覧で返されません。

bool stable_only = TRUE

TRUE を指定すると、安定版リリースでないパッケージは パッケージ一覧で返されません。

この関数は、上で示した条件を満たすすべてのパッケージを このような形式の配列で返します。

array(
  array(
    'name' => 'パッケージ名',
    'category' => 'カテゴリ名',
    'license' => 'リリースのライセンス',
    'summary' => 'パッケージの概要',
    'description' => 'パッケージの説明',
    'stable' => '条件を満たす最新のリリースのバージョン',
    'unstable' => '最新の非安定版リリースのバージョン。stable_only の場合は false',
    'state' => '条件を満たす最新のリリースのリリース状態',
    'deps' =>
    array( // package.info と同様の形式
    )
  ),
  // など
);

package.listLatestReleases

struct package.listLatestReleases ([string state = ''])

string state = ''

'' の場合は全パッケージの最新リリースが返されます。それ以外の場合は 'snapshot'、'devel'、'alpha'、'beta' あるいは 'stable' の いずれかを指定する必要があり、この関数は state よりも 安定しているリリースの中で最新のものを返します。

state が 'beta' の場合は、この関数は beta あるいは stable の リリースの中で最新のものを返します。state が 'devel' の場合は、 この関数は devel、alpha、beta あるいは stable のリリースの中で 最新のものを返します。その他の場合も同様です。

この関数は、パラメータ "state" で指定した条件を満たす リリースを、すべてのパッケージについて以下の形式の配列で返します。

array(
  array(
    'package' => 'パッケージ名',
    'version' => 'リリースのバージョン',
    'state' => 'リリースの安定性',
    'filesize' => 'ダウンロードする .tgz ファイルの大きさ',
  ),
  // etc.
);

package.search

struct package.listAll (string fragment [, string|bool summary = false [, bool released_only = true [, bool stable_only = true]]])

string fragment

パッケージ名で検索する場合に使用する文字列。

string|bool summary = FALSE

false の場合、このパラメータは無視されます。それ以外の場合は、 最初のパラメータにマッチした結果をさらに絞り込むために、 このパラメータを使用してパッケージの概要文を検索します。

bool released_only = TRUE

TRUE を指定すると、リリースされていないパッケージは パッケージ一覧で返されません。

bool stable_only = TRUE

TRUE を指定すると、安定版リリースでないパッケージは パッケージ一覧で返されません。

この関数は、上で示した条件を満たすすべてのパッケージを このような形式の配列で返します。

array(
  array(
    'name' => 'パッケージ名',
    'category' => 'カテゴリ名',
    'license' => 'リリースのライセンス',
    'summary' => 'パッケージの概要',
    'description' => 'パッケージの説明',
    'stable' => '条件を満たす最新のリリースのバージョン',
    'unstable' => '最新の非安定版リリースのバージョン。stable_only の場合は false',
    'state' => '条件を満たす最新のリリースのリリース状態',
    'deps' =>
    array( // package.info と同様の形式
    )
  ),
  // など
);