summaryrefslogtreecommitdiffstats
path: root/class
diff options
context:
space:
mode:
Diffstat (limited to 'class')
-rw-r--r--class/Parser.php97
1 files changed, 97 insertions, 0 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