Zend_Service_Delicious.xml 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.service.delicious">
  5. <title>Zend_Service_Delicious</title>
  6. <sect2 id="zend.service.delicious.introduction">
  7. <title>Introduction</title>
  8. <para>
  9. <classname>Zend_Service_Delicious</classname> est une <acronym>API</acronym> pour accéder aux Web
  10. services <acronym>XML</acronym> et <acronym>JSON</acronym> de <ulink url="http://del.icio.us">del.icio.us</ulink>. Ce
  11. composant vous donne, si vous avez les droits, un accès en lecture-écriture à vos
  12. entrées sur del.icio.us. Il permet également un accès en lecture seule aux données de
  13. tous les utilisateurs.
  14. </para>
  15. <example id="zend.service.delicious.introduction.getAllPosts">
  16. <title>Récupérer toutes vos entrées</title>
  17. <programlisting language="php"><![CDATA[
  18. $delicious = new Zend_Service_Delicious('identifiant', 'mot_de_passe');
  19. $posts = $delicious->getAllPosts();
  20. foreach ($posts as $post) {
  21. echo "--\n";
  22. echo "Titre: {$post->getTitle()}\n";
  23. echo "Url: {$post->getUrl()}\n";
  24. }
  25. ]]></programlisting>
  26. </example>
  27. </sect2>
  28. <sect2 id="zend.service.delicious.retrieving_posts">
  29. <title>Récupérer vos entrées</title>
  30. <para>
  31. <classname>Zend_Service_Delicious</classname> fournis trois méthodes pour
  32. récupérer vos entrées : <methodname>getPosts()</methodname>, <methodname>getRecentPosts()</methodname> et
  33. <methodname>getAllPosts()</methodname>. Elles retournent toutes une instance de la classe
  34. <classname>Zend_Service_Delicious_PostList</classname>, qui contient toutes les entrées
  35. récupérées.
  36. </para>
  37. <programlisting language="php"><![CDATA[
  38. /**
  39. * Récupère les entrées correspondants aux arguments. Si la date ou
  40. * l'url n'est pas précisée, la date la plus récente
  41. * sera prise en compte.
  42. *
  43. * @param string $tag Optionnel pour filtrer par tag
  44. * @param Zend_Date $dt Optionnel pour filtrer par date
  45. * @param string $url Optionnel pour filtrer par url
  46. * @return Zend_Service_Delicious_PostList
  47. */
  48. public function getPosts($tag = null, $dt = null, $url = null);
  49. /**
  50. * Récupère les dernières entrées
  51. *
  52. * @param string $tag Optionnel pour filtrer par tag
  53. * @param string $count Nombre maximum d'entrées à récupérer
  54. * (15 par défaut)
  55. * @return Zend_Service_Delicious_PostList
  56. */
  57. public function getRecentPosts($tag = null, $count = 15);
  58. /**
  59. * Récupère toutes les entrées
  60. *
  61. * @param string $tag Optionnel pour filtrer par tag
  62. * @return Zend_Service_Delicious_PostList
  63. */
  64. public function getAllPosts($tag = null);
  65. ]]></programlisting>
  66. </sect2>
  67. <sect2 id="zend.service.delicious.postlist">
  68. <title>Zend_Service_Delicious_PostList</title>
  69. <para>
  70. Des instances de cette classe sont retournées par les méthodes
  71. <methodname>getPosts()</methodname>, <methodname>getAllPosts()</methodname>,<methodname>getRecentPosts()</methodname>, et
  72. <methodname>getUserPosts()</methodname> de <classname>Zend_Service_Delicious</classname>.
  73. </para>
  74. <para>
  75. Pour faciliter l'accès au données cette classe implémente les interfaces
  76. <code>Countable</code>, <code>Iterator</code>, et<code>ArrayAccess</code>.
  77. </para>
  78. <example id="zend.service.delicious.postlist.accessing_post_lists">
  79. <title>Accéder à la liste des entrées</title>
  80. <programlisting language="php"><![CDATA[
  81. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  82. 'mot_de_passe');
  83. $posts = $delicious->getAllPosts();
  84. // Affiche le nombre d'entrées
  85. echo count($posts);
  86. // Itération sur les entrées
  87. foreach ($posts as $post) {
  88. echo "--\n";
  89. echo "Titre: {$post->getTitle()}\n";
  90. echo "Url: {$post->getUrl()}\n";
  91. }
  92. // Affiche une entrée en utilisant un tableau
  93. echo $posts[0]->getTitle();
  94. ]]></programlisting>
  95. </example>
  96. <note>
  97. <para>
  98. Dans cette implémentation les méthodes <methodname>ArrayAccess::offsetSet()</methodname>
  99. et <methodname>ArrayAccess::offsetUnset()</methodname> lèvent des exceptions. Ainsi, du code tel
  100. que <code>unset($posts[0]);</code> ou <code>$posts[0] = 'A';</code> lèvera une
  101. exception car ces propriétés sont en lecture seule.
  102. </para>
  103. </note>
  104. <para>
  105. Les objets d'entrées ont deux capacités de filtrage incorporées. Les entrées
  106. peuvent être filtrées par étiquette et <acronym>URL</acronym>.
  107. </para>
  108. <example id="zend.service.delicious.postlist.example.withTags">
  109. <title>Filtrage d'une entrée par une étiquette spécifique</title>
  110. <para>
  111. Les entrées peuvent être filtrées par une (des) étiquette(s) spécifique(s) en
  112. utilisant <methodname>withTags()</methodname>. Par confort, <methodname>withTag()</methodname> est aussi
  113. fourni quand il est nécessaire 'e ne spécifier qu'une seule étiquette
  114. </para>
  115. <programlisting language="php"><![CDATA[
  116. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  117. 'mot_de_passe');
  118. $posts = $delicious->getAllPosts();
  119. // Affiche les entrées ayant les étiquettes "php" et "zend"
  120. foreach ($posts->withTags(array('php', 'zend')) as $post) {
  121. echo "Title: {$post->getTitle()}\n";
  122. echo "Url: {$post->getUrl()}\n";
  123. }
  124. ]]></programlisting>
  125. </example>
  126. <example id="zend.service.delicious.postlist.example.byUrl">
  127. <title>Filtrage d'une entrée par URL</title>
  128. <para>
  129. Les entrées peuvent être filtrées par <acronym>URL</acronym> correspondant à une expression
  130. régulière spécifiée en utilisant la méthode <methodname>withUrl()</methodname> :
  131. </para>
  132. <programlisting language="php"><![CDATA[
  133. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  134. 'mot_de_passe');
  135. $posts = $delicious->getAllPosts();
  136. // Affiche les entrées ayant "help" dans l'URL
  137. foreach ($posts->withUrl('/help/') as $post) {
  138. echo "Title: {$post->getTitle()}\n";
  139. echo "Url: {$post->getUrl()}\n";
  140. }
  141. ]]></programlisting>
  142. </example>
  143. </sect2>
  144. <sect2 id="zend.service.delicious.editing_posts">
  145. <title>Édition des entrées</title>
  146. <example id="zend.service.delicious.editing_posts.post_editing">
  147. <title>Édition d'une entrée</title>
  148. <programlisting language="php"><![CDATA[
  149. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  150. 'mot_de_passe');
  151. $posts = $delicious->getPosts();
  152. // change le titre
  153. $posts[0]->setTitle('Nouveau Titre');
  154. // sauvegarde le changement
  155. $posts[0]->save();
  156. ]]></programlisting>
  157. </example>
  158. <example id="zend.service.delicious.editing_posts.method_call_chaining">
  159. <title>Enchaînement des appels de méthode</title>
  160. <para>
  161. Toutes les méthodes "setter" renvoient l'objet
  162. <classname>Zend_Service_Delicious_PostList</classname> vous pouvez donc chaîner les
  163. appels aux méthodes en utilisant une interface fluide.
  164. </para>
  165. <programlisting language="php"><![CDATA[
  166. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  167. 'mot_de_passe');
  168. $posts = $delicious->getPosts();
  169. $posts[0]->setTitle('Nouveau Titre')
  170. ->setNotes('Nouvelle note')
  171. ->save();
  172. ]]></programlisting>
  173. </example>
  174. </sect2>
  175. <sect2 id="zend.service.delicious.deleting_posts">
  176. <title>Supprimer des entrées</title>
  177. <para>
  178. Il y a deux moyens de supprimer une entrée, en spécifiant son <acronym>URL</acronym> ou en appelant
  179. la méthode <methodname>delete()</methodname> sur un objet Zend_Service_Delicious_PostList.
  180. </para>
  181. <example id="zend.service.delicious.deleting_posts.deleting_posts">
  182. <title>Suppression d'une entrée</title>
  183. <programlisting language="php"><![CDATA[
  184. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  185. 'mot_de_passe');
  186. // en spécifiant l' URL
  187. $delicious->deletePost('http://framework.zend.com');
  188. // en appelant la méthode de l'objet Zend_Service_Delicious_PostList
  189. $posts = $delicious->getPosts();
  190. $posts[0]->delete();
  191. // une autre façon d'utiliser deletePost()
  192. $delicious->deletePost($posts[0]->getUrl());
  193. ]]></programlisting>
  194. </example>
  195. </sect2>
  196. <sect2 id="zend.service.delicious.adding_posts">
  197. <title>Ajout d'entrées</title>
  198. <para>
  199. Pour ajouter une entrée vous devez appeler la méthode
  200. <methodname>createNewPost()</methodname>, qui renvoie un objet
  201. <classname>Zend_Service_Delicious_Post</classname>. Quand vous éditez l'entrée, vous
  202. devez la sauvegarder dans la base de donnée de del.icio.us en appelant la méthode
  203. <methodname>save()</methodname>.
  204. </para>
  205. <example id="zend.service.delicious.adding_posts.adding_a_post">
  206. <title>Ajouter une entrée</title>
  207. <programlisting language="php"><![CDATA[
  208. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  209. 'mot_de_passe');
  210. // créé et sauvegarde une nouvelle entrée (en chainant les méthodes)
  211. $delicious->createNewPost('Zend Framework', 'http://framework.zend.com')
  212. ->setNotes('Page d\'accueil de Zend Framework')
  213. ->save();
  214. // créé et sauvegarde une nouvelle entrée (sans enchaîner les méthodes)
  215. $newPost = $delicious->createNewPost('Zend Framework',
  216. 'http://framework.zend.com');
  217. $newPost->setNotes('Page d\'accueil de Zend Framework');
  218. $newPost->save();
  219. ]]></programlisting>
  220. </example>
  221. </sect2>
  222. <sect2 id="zend.service.delicious.tags">
  223. <title>Les étiquettes ("tags")</title>
  224. <example id="zend.service.delicious.tags.tags">
  225. <title>Récupérer les étiquettes</title>
  226. <programlisting language="php"><![CDATA[
  227. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  228. 'mot_de_passe');
  229. // récupère tous les étiquettes
  230. print_r($delicious->getTags());
  231. // renomme l'étiquette "ZF" en "zendFramework"
  232. $delicious->renameTag('ZF', 'zendFramework');
  233. ]]></programlisting>
  234. </example>
  235. </sect2>
  236. <sect2 id="zend.service.delicious.bundles">
  237. <title>Les groupes d'étiquettes</title>
  238. <example id="zend.service.delicious.bundles.example">
  239. <title>Gestion des groupes d'étiquette</title>
  240. <programlisting language="php"><![CDATA[
  241. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  242. 'mot_de_passe');
  243. // récupère tous les groupes
  244. print_r($delicious->getBundles());
  245. // efface le groupe someBundle
  246. $delicious->deleteBundle('someBundle');
  247. // ajoute un groupe
  248. $delicious->addBundle('newBundle', array('tag1', 'tag2'));
  249. ]]></programlisting>
  250. </example>
  251. </sect2>
  252. <sect2 id="zend.service.delicious.public_data">
  253. <title>Données publiques</title>
  254. <para>
  255. L'API Web del.icio.us autorise l'accès aux données publiques de tous les
  256. utilisateurs.
  257. </para>
  258. <table id="zend.service.delicious.public_data.functions_for_retrieving_public_data">
  259. <title>Méthodes pour récupérer les données publiques</title>
  260. <tgroup cols="3">
  261. <thead>
  262. <row>
  263. <entry>Nom</entry>
  264. <entry>Description</entry>
  265. <entry>Type de retour</entry>
  266. </row>
  267. </thead>
  268. <tbody>
  269. <row>
  270. <entry><methodname>getUserFans()</methodname></entry>
  271. <entry>Récupère les fans d'un utilisateur</entry>
  272. <entry>Array</entry>
  273. </row>
  274. <row>
  275. <entry><methodname>getUserNetwork()</methodname></entry>
  276. <entry>Récupère le réseau d'un utilisateur</entry>
  277. <entry>Array</entry>
  278. </row>
  279. <row>
  280. <entry><methodname>getUserPosts()</methodname></entry>
  281. <entry>Récupère les entrées d'un utilisateur</entry>
  282. <entry>Zend_Service_Delicious_PostList</entry>
  283. </row>
  284. <row>
  285. <entry><methodname>getUserTags()</methodname></entry>
  286. <entry>Récupère les étiquettes d'un utilisateur</entry>
  287. <entry>Array</entry>
  288. </row>
  289. </tbody>
  290. </tgroup>
  291. </table>
  292. <note>
  293. <para>
  294. Si vous utilisez uniquement ces méthodes, le nom d'utilisateur et le mot de
  295. passe ne sont pas obligatoires pour créer un nouvel objet
  296. <classname>Zend_Service_Delicious</classname>.
  297. </para>
  298. </note>
  299. <example id="zend.service.delicious.public_data.retrieving_public_data">
  300. <title>Récupérer les données publiques</title>
  301. <programlisting language="php"><![CDATA[
  302. // nom d'utilisateur et mot de passe optionnels
  303. $delicious = new Zend_Service_Delicious();
  304. // récupère les fans de l'utilisateur someUser
  305. print_r($delicious->getUserFans('someUser'));
  306. // récupère le réseau de l'utilisateur someUser
  307. print_r($delicious->getUserNetwork('someUser'));
  308. // récupère les Tags de l'utilisateur someUser
  309. print_r($delicious->getUserTags('someUser'));
  310. ]]></programlisting>
  311. </example>
  312. <sect3 id="zend.service.delicious.public_data.posts">
  313. <title>Entrées publiques</title>
  314. <para>
  315. Quand vous récupérez des entrées publiques, la méthode
  316. <methodname>getUserPosts()</methodname> retourne un objet
  317. <classname>Zend_Service_Delicious_PostList</classname> qui contient des objets
  318. <classname>Zend_Service_Delicious_SimplePost</classname>. Ces derniers contiennent
  319. des informations basiques sur l'entrée : <acronym>URL</acronym>, title, notes, and tags.
  320. </para>
  321. <table id="zend.service.delicious.public_data.posts.SimplePost_methods">
  322. <title>Méthodes de la classe
  323. <classname>Zend_Service_Delicious_SimplePost</classname></title>
  324. <tgroup cols="3">
  325. <thead>
  326. <row>
  327. <entry>Nom</entry>
  328. <entry>Description</entry>
  329. <entry>Type de retour</entry>
  330. </row>
  331. </thead>
  332. <tbody>
  333. <row>
  334. <entry><methodname>getNotes()</methodname></entry>
  335. <entry>Récupère les notes de l'entrée</entry>
  336. <entry>String</entry>
  337. </row>
  338. <row>
  339. <entry><methodname>getTags()</methodname></entry>
  340. <entry>Récupère les étiquettes de l'entrée</entry>
  341. <entry>Array</entry>
  342. </row>
  343. <row>
  344. <entry><methodname>getTitle()</methodname></entry>
  345. <entry>Récupère le titre de l'entrée</entry>
  346. <entry>String</entry>
  347. </row>
  348. <row>
  349. <entry><methodname>getUrl()</methodname></entry>
  350. <entry>Récupère l'URL de l'entrée</entry>
  351. <entry>String</entry>
  352. </row>
  353. </tbody>
  354. </tgroup>
  355. </table>
  356. </sect3>
  357. </sect2>
  358. <sect2 id="zend.service.delicious.httpclient">
  359. <title>Client HTTP</title>
  360. <para>
  361. <classname>Zend_Service_Delicious</classname> utilise
  362. <classname>Zend_Rest_Client</classname> pour effectuer les requêtes <acronym>HTTP</acronym> sur le Web
  363. service de del.icio.us. Pour modifier le client <acronym>HTTP</acronym> utiliser par
  364. <classname>Zend_Service_Delicious</classname>, vous devez modifier le client <acronym>HTTP</acronym> de
  365. <classname>Zend_Rest_Client</classname>.
  366. </para>
  367. <example id="zend.service.delicious.httpclient.changing">
  368. <title>Modifier le client HTTP de <classname>Zend_Rest_Client</classname></title>
  369. <programlisting language="php"><![CDATA[
  370. $myHttpClient = new My_Http_Client();
  371. Zend_Rest_Client::setHttpClient($myHttpClient);
  372. ]]></programlisting>
  373. </example>
  374. <para>
  375. Quand vous effectuez plus d'une requête avec
  376. <classname>Zend_Service_Delicious</classname> vous pouvez accélérez vos requêtes en
  377. configurant votre client <acronym>HTTP</acronym> pour qu'il ne ferme pas les connexions.
  378. </para>
  379. <example id="zend.service.delicious.httpclient.keepalive">
  380. <title>Configurer votre client HTTP pour qu'il ne ferme pas les connexions</title>
  381. <programlisting language="php"><![CDATA[
  382. Zend_Rest_Client::getHttpClient()->setConfig(array(
  383. 'keepalive' => true
  384. ));
  385. ]]></programlisting>
  386. </example>
  387. <note>
  388. <para>
  389. En raison de quelques problèmes de del.icio.us avec <code>'ssl2'</code>
  390. (environs 2 secondes pour une requête), quand un objet
  391. <classname>Zend_Service_Delicious</classname> est construit, le transport <acronym>SSL</acronym> de
  392. <classname>Zend_Rest_Client</classname> est configuré sur <code>'ssl'</code> au lieu
  393. de la valeur par défaut <code>'ssl2'</code>.
  394. </para>
  395. </note>
  396. </sect2>
  397. </sect1>