Zend_Service_Audioscrobbler

Zend_Service_Delicious

Introduction

Zend_Service_Delicious est une API pour accéder aux Web services XML et JSON de » del.icio.us. Ce composant vous donne, si vous avez les droits, un accès en lecture-écriture à vos entrées sur del.icio.us. Il permet également un accès en lecture seule aux données de tous les utilisateurs.

Example #1 Récupérer toutes vos entrées

  1. span style="color: #ff0000;">'identifiant', 'mot_de_passe'"--\n""Titre: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  2. }

Récupérer vos entrées

Zend_Service_Delicious fournis trois méthodes pour récupérer vos entrées : getPosts(), getRecentPosts() et getAllPosts(). Elles retournent toutes une instance de la classe Zend_Service_Delicious_PostList, qui contient toutes les entrées récupérées.

  1. /**
  2. * Récupère les entrées correspondants aux arguments. Si la date ou
  3. * l'url n'est pas précisée, la date la plus récente
  4. * sera prise en compte.
  5. *
  6. * @param string $tag Optionnel pour filtrer par tag
  7. * @param Zend_Date $dt Optionnel pour filtrer par date
  8. * @param string $url Optionnel pour filtrer par url
  9. * @return Zend_Service_Delicious_PostList
  10. *//**
  11. * Récupère les dernières entrées
  12. *
  13. * @param string $tag Optionnel pour filtrer par tag
  14. * @param string $count Nombre maximum d'entrées à récupérer
  15. *                     (15 par défaut)
  16. * @return Zend_Service_Delicious_PostList
  17. *//**
  18. * Récupère toutes les entrées
  19. *
  20. * @param string $tag Optionnel pour filtrer par tag
  21. * @return Zend_Service_Delicious_PostList
  22. */

Zend_Service_Delicious_PostList

Des instances de cette classe sont retournées par les méthodes getPosts(), getAllPosts(), getRecentPosts(), et getUserPosts() de Zend_Service_Delicious.

Pour faciliter l'accès au données cette classe implémente les interfaces Countable, Iterator, etArrayAccess.

Example #2 Accéder à la liste des entrées

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe'// Affiche le nombre d'entrées
  3. // Itération sur les entrées
  4. "--\n""Titre: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  5. }
  6.  
  7. // Affiche une entrée en utilisant un tableau

Note: Dans cette implémentation les méthodes ArrayAccess::offsetSet() et ArrayAccess::offsetUnset() lèvent des exceptions. Ainsi, du code tel que unset($posts[0]); ou $posts[0] = 'A'; lèvera une exception car ces propriétés sont en lecture seule.

Les objets d'entrées ont deux capacités de filtrage incorporées. Les entrées peuvent être filtrées par étiquette et URL.

Example #3 Filtrage d'une entrée par une étiquette spécifique

Les entrées peuvent être filtrées par une (des) étiquette(s) spécifique(s) en utilisant withTags(). Par confort, withTag() est aussi fourni quand il est nécessaire 'e ne spécifier qu'une seule étiquette

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe'// Affiche les entrées ayant les étiquettes "php" et "zend"
  3. 'php', 'zend'"Title: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  4. }

Example #4 Filtrage d'une entrée par URL

Les entrées peuvent être filtrées par URL correspondant à une expression régulière spécifiée en utilisant la méthode withUrl() :

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe'// Affiche les entrées ayant "help" dans l'URL
  3. '/help/'"Title: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  4. }

Édition des entrées

Example #5 Édition d'une entrée

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe'// change le titre
  3. 'Nouveau Titre');
  4. // sauvegarde le changement

Example #6 Enchaînement des appels de méthode

Toutes les méthodes "setter" renvoient l'objet Zend_Service_Delicious_PostList vous pouvez donc chaîner les appels aux méthodes en utilisant une interface fluide.

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe''Nouveau Titre')
  3.          ->setNotes('Nouvelle note')
  4.          ->save();

Supprimer des entrées

Il y a deux moyens de supprimer une entrée, en spécifiant son URL ou en appelant la méthode delete() sur un objet Zend_Service_Delicious_PostList.

Example #7 Suppression d'une entrée

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe');
  3.  
  4. // en spécifiant l' URL
  5. 'http://framework.zend.com');
  6.  
  7. // en appelant la méthode de l'objet Zend_Service_Delicious_PostList
  8. // une autre façon d'utiliser deletePost()

Ajout d'entrées

Pour ajouter une entrée vous devez appeler la méthode createNewPost(), qui renvoie un objet Zend_Service_Delicious_Post. Quand vous éditez l'entrée, vous devez la sauvegarder dans la base de donnée de del.icio.us en appelant la méthode save().

Example #8 Ajouter une entrée

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe');
  3.  
  4. // créé et sauvegarde une nouvelle entrée (en chainant les méthodes)
  5. 'Zend Framework', 'http://framework.zend.com')
  6.           ->setNotes('Page d\'accueil de Zend Framework')
  7.           ->save();
  8.  
  9. // créé et sauvegarde une nouvelle entrée (sans enchaîner les méthodes)
  10. 'Zend Framework',
  11.                                      'http://framework.zend.com''Page d\'accueil de Zend Framework'

Les étiquettes ("tags")

Example #9 Récupérer les étiquettes

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe');
  3.  
  4. // récupère tous les étiquettes
  5. // renomme l'étiquette "ZF" en "zendFramework"
  6. 'ZF', 'zendFramework');

Les groupes d'étiquettes

Example #10 Gestion des groupes d'étiquette

  1. span style="color: #ff0000;">'nom_d_utilisateur',
  2.                                         'mot_de_passe');
  3.  
  4. // récupère tous les groupes
  5. // efface le groupe someBundle
  6. 'someBundle');
  7.  
  8. // ajoute un groupe
  9. 'newBundle''tag1', 'tag2'));

Données publiques

L'API Web del.icio.us autorise l'accès aux données publiques de tous les utilisateurs.

Méthodes pour récupérer les données publiques
Nom Description Type de retour
getUserFans() Récupère les fans d'un utilisateur Array
getUserNetwork() Récupère le réseau d'un utilisateur Array
getUserPosts() Récupère les entrées d'un utilisateur Zend_Service_Delicious_PostList
getUserTags() Récupère les étiquettes d'un utilisateur Array

Note: Si vous utilisez uniquement ces méthodes, le nom d'utilisateur et le mot de passe ne sont pas obligatoires pour créer un nouvel objet Zend_Service_Delicious.

Example #11 Récupérer les données publiques

  1. // nom d'utilisateur et mot de passe optionnels
  2. // récupère les fans de l'utilisateur someUser
  3. 'someUser'));
  4.  
  5. // récupère le réseau de l'utilisateur someUser
  6. 'someUser'));
  7.  
  8. // récupère les Tags de l'utilisateur someUser
  9. 'someUser'));

Entrées publiques

Quand vous récupérez des entrées publiques, la méthode getUserPosts() retourne un objet Zend_Service_Delicious_PostList qui contient des objets Zend_Service_Delicious_SimplePost. Ces derniers contiennent des informations basiques sur l'entrée : URL, title, notes, and tags.

Méthodes de la classe Zend_Service_Delicious_SimplePost
Nom Description Type de retour
getNotes() Récupère les notes de l'entrée String
getTags() Récupère les étiquettes de l'entrée Array
getTitle() Récupère le titre de l'entrée String
getUrl() Récupère l'URL de l'entrée String

Client HTTP

Zend_Service_Delicious utilise Zend_Rest_Client pour effectuer les requêtes HTTP sur le Web service de del.icio.us. Pour modifier le client HTTP utiliser par Zend_Service_Delicious, vous devez modifier le client HTTP de Zend_Rest_Client.

Example #12 Modifier le client HTTP de Zend_Rest_Client

  1.  

Quand vous effectuez plus d'une requête avec Zend_Service_Delicious vous pouvez accélérez vos requêtes en configurant votre client HTTP pour qu'il ne ferme pas les connexions.

Example #13 Configurer votre client HTTP pour qu'il ne ferme pas les connexions

  1. span style="color: #ff0000;">'keepalive'

Note: En raison de quelques problèmes de del.icio.us avec 'ssl2' (environs 2 secondes pour une requête), quand un objet Zend_Service_Delicious est construit, le transport SSL de Zend_Rest_Client est configuré sur 'ssl' au lieu de la valeur par défaut 'ssl2'.


Zend_Service_Audioscrobbler