diff options
-rw-r--r-- | class/Parser.php | 97 | ||||
-rw-r--r-- | refresh.php | 79 |
2 files changed, 99 insertions, 77 deletions
diff --git a/class/Parser.php b/class/Parser.php index ee052e2..3113718 100644 --- a/class/Parser.php +++ b/class/Parser.php @@ -43,6 +43,7 @@ class Parser { echo date("r : ") . $msg ."\n"; } + /** * Parse the Bugzilla ACL list from pkgdb * @@ -266,5 +267,101 @@ class Parser } return $tot; } + + /** + * Parse the PECL webservices + * + * @param TableUpstream $uptable the table to write to + * @param string $url the URL to read from + * + * @return integer number of parsed line + */ + static public function readPecl(TableUpstream $uptable, $url) + { + self::log("PECL listLatestReleases - stable"); + + $request = xmlrpc_encode_request("package.listLatestReleases", "stable"); + $context = stream_context_create( + array( + 'http' => array( + 'method' => "POST", + 'header' => "Content-Type: text/xml", + 'content' => $request + ) + ) + ); + $file = file_get_contents($url, false, $context); + if (!$file) { + self::log("Can't file_get_contents($url)"); + return 0; + } + + $stable = xmlrpc_decode($file); + if (xmlrpc_is_fault($stable)) { + self::log("ERROR xmlrpc: $stable[faultString] ($stable[faultCode])"); + } else { + $nb = $uptable->delete(array('type'=>'pecl', 'channel'=>'pecl')); + self::log("Delete $nb packages"); + + $nb=0; + foreach ($stable as $name => $info) { + $rpmname="php-pecl-".str_replace("_", "-", $name); + + $id = $uptable->record( + 'pecl', + 'pecl', + $rpmname, + $info["version"], + true + ); + if ($id) { + $nb++; + } + } + self::log("Write $nb packages"); + } + + // ------------------------------------------------------------------- + self::log("PECL listLatestReleases - unstable"); + + $request = xmlrpc_encode_request("package.listLatestReleases", array()); + $context = stream_context_create( + array( + 'http' => array( + 'method' => "POST", + 'header' => "Content-Type: text/xml", + 'content' => $request + ) + ) + ); + $file = file_get_contents($url, false, $context); + if (!$file) { + self::log("Can't file_get_contents($url)"); + return 0; + } + $unstable = xmlrpc_decode($file); + if (xmlrpc_is_fault($unstable)) { + self::log("ERROR xmlrpc: $stable[faultString] ($stable[faultCode])"); + } else { + $nb=0; + foreach ($unstable as $name => $info) { + $rpmname="php-pecl-".str_replace("_", "-", $name); + + $id = $uptable->record( + 'pecl', + 'pecl', + $rpmname, + $info["version"], + true, + $info["state"] + ); + if ($id) { + $nb++; + } + } + self::log("Write $nb packages"); + } + return $nb; + } } ?>
\ No newline at end of file diff --git a/refresh.php b/refresh.php index 9603c78..14b0020 100644 --- a/refresh.php +++ b/refresh.php @@ -81,84 +81,9 @@ try { // ------------------------------------------------------------------- if ($_SERVER['argc']==1 || in_array('pecl', $_SERVER['argv'])) { - echo date("r : ") . "PECL listLatestReleases - stable\n"; - - $request = xmlrpc_encode_request("package.listLatestReleases", "stable"); - $context = stream_context_create( - array( - 'http' => array( - 'method' => "POST", - 'header' => "Content-Type: text/xml", - 'content' => $request - ) - ) - ); - $file = file_get_contents("http://pecl.php.net/xmlrpc.php", false, $context) - or die ("Can't file_get_contents(http://pecl.php.net/xmlrpc.php)"); - $stable = xmlrpc_decode($file); - if (xmlrpc_is_fault($stable)) { - echo date("r : ") . - "ERROR xmlrpc: $stable[faultString] ($stable[faultCode])"; - } else { - $nb = $uptable->delete(array('type'=>'pecl', 'channel'=>'pecl')); - echo date("r : ") . "Delete $nb packages\n"; - - $nb=0; - foreach ($stable as $name => $info) { - $rpmname="php-pecl-".str_replace("_", "-", $name); - - $id = $uptable->record( - 'pecl', - 'pecl', - $rpmname, - $info["version"], - true - ); - if ($id) { - $nb++; - } - } - echo date("r : ") . "Write $nb packages\n"; - } - // ------------------------------------------------------------------- - echo date("r : ") . "PECL listLatestReleases - unstable\n"; - - $request = xmlrpc_encode_request("package.listLatestReleases", array()); - $context = stream_context_create( - array( - 'http' => array( - 'method' => "POST", - 'header' => "Content-Type: text/xml", - 'content' => $request - ) - ) - ); - $file = file_get_contents("http://pecl.php.net/xmlrpc.php", false, $context) - or die ("Can't file_get_contents(http://pecl.php.net/xmlrpc.php)"); - $unstable = xmlrpc_decode($file); - if (xmlrpc_is_fault($unstable)) { - echo date("r : ") . "ERROR xmlrpc: $stable[faultString] ". - "($stable[faultCode])"; - } else { - $nb=0; - foreach ($unstable as $name => $info) { - $rpmname="php-pecl-".str_replace("_", "-", $name); - - $id = $uptable->record( - 'pecl', - 'pecl', - $rpmname, - $info["version"], - true, - $info["state"] - ); - if ($id) { - $nb++; - } - } - echo date("r : ") . "Write $nb packages\n"; - } + Parser::readPecl($uptable, 'http://pecl.php.net/xmlrpc.php'); + } // if in options // ------------------------------------------------------------------- |