diff options
| author | Horus3 | 2014-02-24 16:42:14 +0100 |
|---|---|---|
| committer | Horus3 | 2014-02-24 16:42:14 +0100 |
| commit | 06f945f27840b53e57795dadbc38e76f7e11ab1c (patch) | |
| tree | 689d5c7f4ffa15460c7e90f47c6a7dd59ce4e8bd /zend/library/Zend/Gdata.php | |
| download | random-06f945f27840b53e57795dadbc38e76f7e11ab1c.tar.gz | |
init
Diffstat (limited to 'zend/library/Zend/Gdata.php')
| -rw-r--r-- | zend/library/Zend/Gdata.php | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/zend/library/Zend/Gdata.php b/zend/library/Zend/Gdata.php new file mode 100644 index 0000000..1135374 --- /dev/null +++ b/zend/library/Zend/Gdata.php @@ -0,0 +1,241 @@ +<?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_Gdata + * @subpackage Gdata + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: Gdata.php 24593 2012-01-05 20:35:02Z matthew $ + */ + +/** + * Zend_Gdata_App + */ +require_once 'Zend/Gdata/App.php'; + +/** + * Provides functionality to interact with Google data APIs + * Subclasses exist to implement service-specific features + * + * As the Google data API protocol is based upon the Atom Publishing Protocol + * (APP), Gdata functionality extends the appropriate Zend_Gdata_App classes + * + * @link http://code.google.com/apis/gdata/overview.html + * + * @category Zend + * @package Zend_Gdata + * @subpackage Gdata + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Gdata extends Zend_Gdata_App +{ + + /** + * Service name for use with Google's authentication mechanisms + * + * @var string + */ + const AUTH_SERVICE_NAME = 'xapi'; + + /** + * Default URI to which to POST. + * + * @var string + */ + protected $_defaultPostUri = null; + + /** + * Packages to search for classes when using magic __call method, in order. + * + * @var array + */ + protected $_registeredPackages = array( + 'Zend_Gdata_Kind', + 'Zend_Gdata_Extension', + 'Zend_Gdata', + 'Zend_Gdata_App_Extension', + 'Zend_Gdata_App'); + + /** + * Namespaces used for Gdata data + * + * @var array + */ + public static $namespaces = array( + array('gd', 'http://schemas.google.com/g/2005', 1, 0), + array('openSearch', 'http://a9.com/-/spec/opensearchrss/1.0/', 1, 0), + array('openSearch', 'http://a9.com/-/spec/opensearch/1.1/', 2, 0), + array('rss', 'http://blogs.law.harvard.edu/tech/rss', 1, 0) + ); + + /** + * Client object used to communicate + * + * @var Zend_Gdata_HttpClient + */ + protected $_httpClient; + + /** + * Client object used to communicate in static context + * + * @var Zend_Gdata_HttpClient + */ + protected static $_staticHttpClient = null; + + /** + * Create Gdata object + * + * @param Zend_Http_Client $client + * @param string $applicationId The identity of the app in the form of + * Company-AppName-Version + */ + public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0') + { + parent::__construct($client, $applicationId); + } + + /** + * Imports a feed located at $uri. + * + * @param string $uri + * @param Zend_Http_Client $client The client used for communication + * @param string $className The class which is used as the return type + * @throws Zend_Gdata_App_Exception + * @return string|Zend_Gdata_App_Feed Returns string only if the object + * mapping has been disabled explicitly + * by passing false to the + * useObjectMapping() function. + */ + public static function import($uri, $client = null, + $className='Zend_Gdata_Feed') + { + $app = new Zend_Gdata($client); + $requestData = $app->decodeRequest('GET', $uri); + $response = $app->performHttpRequest($requestData['method'], $requestData['url']); + + $feedContent = $response->getBody(); + + $feed = self::importString($feedContent, $className); + if ($client != null) { + $feed->setHttpClient($client); + } + return $feed; + } + + /** + * Retrieve feed as string or object + * + * @param mixed $location The location as string or Zend_Gdata_Query + * @param string $className The class type to use for returning the feed + * @throws Zend_Gdata_App_InvalidArgumentException + * @return string|Zend_Gdata_App_Feed Returns string only if the object + * mapping has been disabled explicitly + * by passing false to the + * useObjectMapping() function. + */ + public function getFeed($location, $className='Zend_Gdata_Feed') + { + if (is_string($location)) { + $uri = $location; + } elseif ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl(); + } else { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'You must specify the location as either a string URI ' . + 'or a child of Zend_Gdata_Query'); + } + return parent::getFeed($uri, $className); + } + + /** + * Retrieve entry as string or object + * + * @param mixed $location The location as string or Zend_Gdata_Query + * @throws Zend_Gdata_App_InvalidArgumentException + * @return string|Zend_Gdata_App_Entry Returns string only if the object + * mapping has been disabled explicitly + * by passing false to the + * useObjectMapping() function. + */ + public function getEntry($location, $className='Zend_Gdata_Entry') + { + if (is_string($location)) { + $uri = $location; + } elseif ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl(); + } else { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'You must specify the location as either a string URI ' . + 'or a child of Zend_Gdata_Query'); + } + return parent::getEntry($uri, $className); + } + + /** + * Performs a HTTP request using the specified method. + * + * Overrides the definition in the parent (Zend_Gdata_App) + * and uses the Zend_Gdata_HttpClient functionality + * to filter the HTTP requests and responses. + * + * @param string $method The HTTP method for the request - + * 'GET', 'POST', 'PUT', 'DELETE' + * @param string $url The URL to which this request is being performed, + * or null if found in $data + * @param array $headers An associative array of HTTP headers + * for this request + * @param string $body The body of the HTTP request + * @param string $contentType The value for the content type of the + * request body + * @param int $remainingRedirects Number of redirects to follow + * if requests results in one + * @return Zend_Http_Response The response object + */ + public function performHttpRequest($method, $url, $headers = array(), $body = null, $contentType = null, $remainingRedirects = null) + { + if ($this->_httpClient instanceof Zend_Gdata_HttpClient) { + $filterResult = $this->_httpClient->filterHttpRequest($method, $url, $headers, $body, $contentType); + $method = $filterResult['method']; + $url = $filterResult['url']; + $body = $filterResult['body']; + $headers = $filterResult['headers']; + $contentType = $filterResult['contentType']; + return $this->_httpClient->filterHttpResponse(parent::performHttpRequest($method, $url, $headers, $body, $contentType, $remainingRedirects)); + } else { + return parent::performHttpRequest($method, $url, $headers, $body, $contentType, $remainingRedirects); + } + } + + /** + * Determines whether service object is authenticated. + * + * @return boolean True if service object is authenticated, false otherwise. + */ + public function isAuthenticated() + { + $client = parent::getHttpClient(); + if ($client->getClientLoginToken() || + $client->getAuthSubToken()) { + return true; + } + + return false; + } + +} |
