|
1 <?php |
|
2 |
|
3 /** |
|
4 * Zend Framework |
|
5 * |
|
6 * LICENSE |
|
7 * |
|
8 * This source file is subject to the new BSD license that is bundled |
|
9 * with this package in the file LICENSE.txt. |
|
10 * It is also available through the world-wide-web at this URL: |
|
11 * http://framework.zend.com/license/new-bsd |
|
12 * If you did not receive a copy of the license and are unable to |
|
13 * obtain it through the world-wide-web, please send an email |
|
14 * to license@zend.com so we can send you a copy immediately. |
|
15 * |
|
16 * @category Zend |
|
17 * @package Zend_Gdata |
|
18 * @subpackage Books |
|
19 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
|
20 * @license http://framework.zend.com/license/new-bsd New BSD License |
|
21 * @version $Id: Books.php 20096 2010-01-06 02:05:09Z bkarwin $ |
|
22 */ |
|
23 |
|
24 /** |
|
25 * @see Zend_Gdata |
|
26 */ |
|
27 require_once 'Zend/Gdata.php'; |
|
28 |
|
29 /** |
|
30 * @see Zend_Gdata_DublinCore |
|
31 */ |
|
32 require_once 'Zend/Gdata/DublinCore.php'; |
|
33 |
|
34 /** |
|
35 * @see Zend_Gdata_Books_CollectionEntry |
|
36 */ |
|
37 require_once 'Zend/Gdata/Books/CollectionEntry.php'; |
|
38 |
|
39 /** |
|
40 * @see Zend_Gdata_Books_CollectionFeed |
|
41 */ |
|
42 require_once 'Zend/Gdata/Books/CollectionFeed.php'; |
|
43 |
|
44 /** |
|
45 * @see Zend_Gdata_Books_VolumeEntry |
|
46 */ |
|
47 require_once 'Zend/Gdata/Books/VolumeEntry.php'; |
|
48 |
|
49 /** |
|
50 * @see Zend_Gdata_Books_VolumeFeed |
|
51 */ |
|
52 require_once 'Zend/Gdata/Books/VolumeFeed.php'; |
|
53 |
|
54 /** |
|
55 * Service class for interacting with the Books service |
|
56 * |
|
57 * @category Zend |
|
58 * @package Zend_Gdata |
|
59 * @subpackage Books |
|
60 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
|
61 * @license http://framework.zend.com/license/new-bsd New BSD License |
|
62 */ |
|
63 class Zend_Gdata_Books extends Zend_Gdata |
|
64 { |
|
65 const VOLUME_FEED_URI = 'http://books.google.com/books/feeds/volumes'; |
|
66 const MY_LIBRARY_FEED_URI = 'http://books.google.com/books/feeds/users/me/collections/library/volumes'; |
|
67 const MY_ANNOTATION_FEED_URI = 'http://books.google.com/books/feeds/users/me/volumes'; |
|
68 const AUTH_SERVICE_NAME = 'print'; |
|
69 |
|
70 /** |
|
71 * Namespaces used for Zend_Gdata_Books |
|
72 * |
|
73 * @var array |
|
74 */ |
|
75 public static $namespaces = array( |
|
76 array('gbs', 'http://schemas.google.com/books/2008', 1, 0), |
|
77 array('dc', 'http://purl.org/dc/terms', 1, 0) |
|
78 ); |
|
79 |
|
80 /** |
|
81 * Create Zend_Gdata_Books object |
|
82 * |
|
83 * @param Zend_Http_Client $client (optional) The HTTP client to use when |
|
84 * when communicating with the Google servers. |
|
85 * @param string $applicationId The identity of the app in the form of Company-AppName-Version |
|
86 */ |
|
87 public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0') |
|
88 { |
|
89 $this->registerPackage('Zend_Gdata_Books'); |
|
90 $this->registerPackage('Zend_Gdata_Books_Extension'); |
|
91 parent::__construct($client, $applicationId); |
|
92 $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME); |
|
93 } |
|
94 |
|
95 /** |
|
96 * Retrieves a feed of volumes. |
|
97 * |
|
98 * @param Zend_Gdata_Query|string|null $location (optional) The URL to |
|
99 * query or a Zend_Gdata_Query object from which a URL can be |
|
100 * determined. |
|
101 * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the |
|
102 * specified URL. |
|
103 */ |
|
104 public function getVolumeFeed($location = null) |
|
105 { |
|
106 if ($location == null) { |
|
107 $uri = self::VOLUME_FEED_URI; |
|
108 } else if ($location instanceof Zend_Gdata_Query) { |
|
109 $uri = $location->getQueryUrl(); |
|
110 } else { |
|
111 $uri = $location; |
|
112 } |
|
113 return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed'); |
|
114 } |
|
115 |
|
116 /** |
|
117 * Retrieves a specific volume entry. |
|
118 * |
|
119 * @param string|null $volumeId The volumeId of interest. |
|
120 * @param Zend_Gdata_Query|string|null $location (optional) The URL to |
|
121 * query or a Zend_Gdata_Query object from which a URL can be |
|
122 * determined. |
|
123 * @return Zend_Gdata_Books_VolumeEntry The feed of volumes found at the |
|
124 * specified URL. |
|
125 */ |
|
126 public function getVolumeEntry($volumeId = null, $location = null) |
|
127 { |
|
128 if ($volumeId !== null) { |
|
129 $uri = self::VOLUME_FEED_URI . "/" . $volumeId; |
|
130 } else if ($location instanceof Zend_Gdata_Query) { |
|
131 $uri = $location->getQueryUrl(); |
|
132 } else { |
|
133 $uri = $location; |
|
134 } |
|
135 return parent::getEntry($uri, 'Zend_Gdata_Books_VolumeEntry'); |
|
136 } |
|
137 |
|
138 /** |
|
139 * Retrieves a feed of volumes, by default the User library feed. |
|
140 * |
|
141 * @param Zend_Gdata_Query|string|null $location (optional) The URL to |
|
142 * query. |
|
143 * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the |
|
144 * specified URL. |
|
145 */ |
|
146 public function getUserLibraryFeed($location = null) |
|
147 { |
|
148 if ($location == null) { |
|
149 $uri = self::MY_LIBRARY_FEED_URI; |
|
150 } else { |
|
151 $uri = $location; |
|
152 } |
|
153 return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed'); |
|
154 } |
|
155 |
|
156 /** |
|
157 * Retrieves a feed of volumes, by default the User annotation feed |
|
158 * |
|
159 * @param Zend_Gdata_Query|string|null $location (optional) The URL to |
|
160 * query. |
|
161 * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the |
|
162 * specified URL. |
|
163 */ |
|
164 public function getUserAnnotationFeed($location = null) |
|
165 { |
|
166 if ($location == null) { |
|
167 $uri = self::MY_ANNOTATION_FEED_URI; |
|
168 } else { |
|
169 $uri = $location; |
|
170 } |
|
171 return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed'); |
|
172 } |
|
173 |
|
174 /** |
|
175 * Insert a Volume / Annotation |
|
176 * |
|
177 * @param Zend_Gdata_Books_VolumeEntry $entry |
|
178 * @param Zend_Gdata_Query|string|null $location (optional) The URL to |
|
179 * query |
|
180 * @return Zend_Gdata_Books_VolumeEntry The inserted volume entry. |
|
181 */ |
|
182 public function insertVolume($entry, $location = null) |
|
183 { |
|
184 if ($location == null) { |
|
185 $uri = self::MY_LIBRARY_FEED_URI; |
|
186 } else { |
|
187 $uri = $location; |
|
188 } |
|
189 return parent::insertEntry( |
|
190 $entry, $uri, 'Zend_Gdata_Books_VolumeEntry'); |
|
191 } |
|
192 |
|
193 /** |
|
194 * Delete a Volume |
|
195 * |
|
196 * @param Zend_Gdata_Books_VolumeEntry $entry |
|
197 * @return void |
|
198 */ |
|
199 public function deleteVolume($entry) |
|
200 { |
|
201 $entry->delete(); |
|
202 } |
|
203 |
|
204 } |