summaryrefslogtreecommitdiffstats
path: root/class/FedoraPkgdb.php
diff options
context:
space:
mode:
Diffstat (limited to 'class/FedoraPkgdb.php')
-rw-r--r--class/FedoraPkgdb.php150
1 files changed, 150 insertions, 0 deletions
diff --git a/class/FedoraPkgdb.php b/class/FedoraPkgdb.php
new file mode 100644
index 0000000..d170911
--- /dev/null
+++ b/class/FedoraPkgdb.php
@@ -0,0 +1,150 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * FedoraClient is a PHP class to interact with web services
+ *
+ * PHP version 5
+ *
+ * Copyright (C) 2010 Remi Collet
+ * http://github.com/remicollet/rpmphp.
+ *
+ * Inspired from python-fedora
+ *
+ * FedoraClient is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FedoraClient is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * See <http://www.gnu.org/licenses/>
+ *
+ * @category Main
+ * @package FedoraClient
+ *
+ * @author Remi Collet <unknown@unknwown.com>
+ * @author Johan Cwiklinski <johan@x-tnd.be>
+ * @copyright 2010 Remi Collet
+ * @license http://www.gnu.org/licenses/lgpl-2.1.txt LGPL License 2.1 or (at your option) any later version
+ * @link http://github.com/remicollet/rpmphp/
+ * @since The begining of times.
+ */
+
+class FedoraPkgdb extends FedoraClient
+{
+ private $suburl;
+
+ function __construct (array $options=array())
+ {
+ parent::__construct('https://admin.fedoraproject.org/pkgdb/', $options);
+ $this->suburl = 'acls/name/';
+
+ $this->logDebug(
+ 3,
+ __CLASS__."::".__FUNCTION__
+ );
+ }
+
+ function getBranches($refresh=false)
+ {
+ $rep = ($refresh ? false : $this->cache->get(__FUNCTION__, __CLASS__));
+ if ($rep) {
+ $this->logDebug(
+ 2,
+ __CLASS__."::".__FUNCTION__."() get from cache"
+ );
+ } else {
+ $rep =$this->sendRequest('collections');
+ $this->cache->save($rep, __FUNCTION__, __CLASS__);
+ $this->logDebug(
+ 2,
+ __CLASS__."::".__FUNCTION__."() save to cache"
+ );
+ }
+
+ $branches = array();
+ if (isset($rep['collections'])) {
+ foreach ($rep['collections'] as $coll) {
+ if (isset($coll[0]['branchname'])) {
+ $branches[$coll[0]['branchname']] = $coll[0];
+ }
+ }
+ }
+ return $branches;
+ }
+
+ function getPackageURL($name)
+ {
+ return $this->url.$this->suburl.$name;
+ }
+
+ function getPackageInfo($name, $refresh=false)
+ {
+ $url=$this->suburl.urlencode($name);
+ $rep = ($refresh ? false : $this->cache->get($url, __CLASS__));
+ if ($rep) {
+ $this->logDebug(
+ 2,
+ __CLASS__."::".__FUNCTION__."($name) get from cache"
+ );
+ } else {
+ $rep =$this->sendRequest($url);
+ $this->cache->save($rep, $url, __CLASS__);
+ $this->logDebug(
+ 2,
+ __CLASS__."::".__FUNCTION__."($name) save to cache"
+ );
+ }
+
+ if (isset($rep['status']) && !$rep['status']) {
+ $this->logDebug(
+ 1,
+ __CLASS__."::".__FUNCTION__."($name) ".$rep['message']
+ );
+ return false;
+ }
+ $this->logDebug(8,print_r($rep,true));
+ $branches = array();
+ foreach ($rep['packageListings'] as $pack) {
+ $branches[$pack['collection']['branchname']] = $pack;
+ }
+ $this->logDebug(7,print_r($branches,true));
+ return $branches;
+ }
+
+ function getBranch($name, $refresh=false)
+ {
+ $branches = $this->getBranches($refresh);
+
+ if (isset($branches[$name])) {
+ return $branches[$name];
+ }
+ return false;
+ }
+
+ function getCritPath($refresh=false)
+ {
+ $url="lists/critpath";
+ $rep = ($refresh ? false : $this->cache->get($url, __CLASS__));
+ if ($rep) {
+ $this->logDebug(
+ 2,
+ __CLASS__."::".__FUNCTION__." get from cache"
+ );
+ } else {
+ $rep =$this->sendRequest($url);
+ $this->cache->save($rep, $url, __CLASS__);
+ $this->logDebug(
+ 2,
+ __CLASS__."::".__FUNCTION__." save to cache"
+ );
+ }
+ return $rep['pkgs'];
+ }
+}
+?> \ No newline at end of file