delicious.php
来自「Bug tracker, and reporter.」· PHP 代码 · 共 616 行 · 第 1/2 页
PHP
616 行
<?php/** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category Zend * @package Zend_Service * @subpackage Delicious * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id: Delicious.php 8064 2008-02-16 10:58:39Z thomas $ *//** * @see Zend_Rest_Client */require_once 'Zend/Rest/Client.php';/** * @see Zend_Json_Decoder */require_once 'Zend/Json/Decoder.php';/** * @see Zend_Service_Delicious_SimplePost */require_once 'Zend/Service/Delicious/SimplePost.php';/** * @see Zend_Service_Delicious_Post */require_once 'Zend/Service/Delicious/Post.php';/** * @see Zend_Service_Delicious_PostList */require_once 'Zend/Service/Delicious/PostList.php';/** * Zend_Service_Delicious is a concrete implementation of the del.icio.us web service * * @category Zend * @package Zend_Service * @subpackage Delicious * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */class Zend_Service_Delicious{ const API_URI = 'https://api.del.icio.us'; const PATH_UPDATE = '/v1/posts/update'; const PATH_TAGS = '/v1/tags/get'; const PATH_TAG_RENAME = '/v1/tags/rename'; const PATH_BUNDLES = '/v1/tags/bundles/all'; const PATH_BUNDLE_DELETE = '/v1/tags/bundles/delete'; const PATH_BUNDLE_ADD = '/v1/tags/bundles/set'; const PATH_DATES = '/v1/posts/dates'; const PATH_POST_DELETE = '/v1/posts/delete'; const PATH_POSTS_GET = '/v1/posts/get'; const PATH_POSTS_ALL = '/v1/posts/all'; const PATH_POSTS_ADD = '/v1/posts/add'; const PATH_POSTS_RECENT = '/v1/posts/recent'; const JSON_URI = 'http://del.icio.us'; const JSON_POSTS = '/feeds/json/%s/%s'; const JSON_TAGS = '/feeds/json/tags/%s'; const JSON_NETWORK = '/feeds/json/network/%s'; const JSON_FANS = '/feeds/json/fans/%s'; const JSON_URL = '/feeds/json/url/data'; /** * Zend_Service_Rest instance * * @var Zend_Service_Rest */ protected $_rest; /** * Username * * @var string */ protected $_authUname; /** * Password * * @var string */ protected $_authPass; /** * Microtime of last request * * @var float */ protected static $_lastRequestTime = 0; /** * Constructs a new del.icio.us Web Services Client * * @param string $uname Client username * @param string $pass Client password * @return void */ public function __construct($uname = null, $pass = null) { $this->_rest = new Zend_Rest_Client(); $this->_rest->getHttpClient()->setConfig(array('ssltransport' => 'ssl')); $this->setAuth($uname, $pass); } /** * Set client username and password * * @param string $uname Client user name * @param string $pass Client password * @return Zend_Service_Delicious Provides a fluent interface */ public function setAuth($uname, $pass) { $this->_authUname = $uname; $this->_authPass = $pass; return $this; } /** * Get time of the last update * * @throws Zend_Service_Delicious_Exception * @return Zend_Date */ public function getLastUpdate() { $response = $this->makeRequest(self::PATH_UPDATE); $rootNode = $response->documentElement; if ($rootNode && $rootNode->nodeName == 'update') { /** * @todo replace strtotime() with Zend_Date equivalent */ return new Zend_Date(strtotime($rootNode->getAttribute('time'))); } else { /** * @see Zend_Service_Delicious_Exception */ require_once 'Zend/Service/Delicious/Exception.php'; throw new Zend_Service_Delicious_Exception('del.icio.us web service has returned something odd!'); } } /** * Get all tags, returning an array with tags as keys and number of corresponding posts as values * * @return array list of tags */ public function getTags() { $response = $this->makeRequest(self::PATH_TAGS); return self::_xmlResponseToArray($response, 'tags', 'tag', 'tag', 'count'); } /** * Rename a tag * * @param string $old Old tag name * @param string $new New tag name * @return Zend_Service_Delicious Provides a fluent interface */ public function renameTag($old, $new) { $response = $this->makeRequest(self::PATH_TAG_RENAME, array('old' => $old, 'new' => $new)); self::_evalXmlResult($response); return $this; } /** * Get all bundles, returning an array with bundles as keys and array of tags as values * * @return array list of bundles */ public function getBundles() { $response = $this->makeRequest(self::PATH_BUNDLES); $bundles = self::_xmlResponseToArray($response, 'bundles', 'bundle', 'name', 'tags'); foreach ($bundles as &$tags) { $tags = explode(' ', $tags); } return $bundles; } /** * Adds a new bundle * * @param string $bundle Name of new bundle * @param array $tags Array of tags * @return Zend_Service_Delicious Provides a fluent interface */ public function addBundle($bundle, array $tags) { $tags = implode(' ', (array) $tags); $response = $this->makeRequest(self::PATH_BUNDLE_ADD, array('bundle' => $bundle, 'tags' => $tags)); self::_evalXmlResult($response); return $this; } /** * Delete a bundle * * @param string $bundle Name of bundle to be deleted * @return Zend_Service_Delicious Provides a fluent interface */ public function deleteBundle($bundle) { $response = $this->makeRequest(self::PATH_BUNDLE_DELETE, array('bundle' => $bundle)); self::_evalXmlResult($response); return $this; } /** * Delete a post * * @param string $url URL of post to be deleted * @return Zend_Service_Delicious Provides a fluent interface */ public function deletePost($url) { $response = $this->makeRequest(self::PATH_POST_DELETE, array('url' => $url)); self::_evalXmlResult($response); return $this; } /** * Get number of posts by date * * Returns array where keys are dates and values are numbers of posts * * @param string $tag Optional filtering by tag * @return array list of dates */ public function getDates($tag = null) { $parms = array(); if ($tag) { $parms['tag'] = $tag; } $response = $this->makeRequest(self::PATH_DATES, $parms); return self::_xmlResponseToArray($response, 'dates', 'date', 'date', 'count'); } /** * Get posts matching the arguments * * If no date or url is given, most recent date will be used * * @param string $tag Optional filtering by tag * @param Zend_Date $dt Optional filtering by date * @param string $url Optional filtering by url * @throws Zend_Service_Delicious_Exception * @return Zend_Service_Delicious_PostList */ public function getPosts($tag = null, Zend_Date $dt = null, $url = null) { $parms = array(); if ($tag) { $parms['tag'] = $tag; } if ($url) { $parms['url'] = $url; } if ($dt) { $parms['dt'] = $dt->get('Y-m-d\TH:i:s\Z'); } $response = $this->makeRequest(self::PATH_POSTS_GET, $parms); return $this->_parseXmlPostList($response); } /** * Get all posts *
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?