Chapitre 14. Zend_Gdata

Table des matières

14.1. Introduction to Gdata
14.1.1. L'authentification client Google Data
14.1.2. Les dépendances
14.1.3. Création d'un nouveau client GData
14.1.4. Paramètres de requête courants
14.1.5. Récupérer un fil
14.1.6. Envoyer des données sur le serveur Google
14.1.7. Supprimer des données sur le serveur Google
14.2. Authenticating with AuthSub
14.2.1. Creating an AuthSub authenticated Http Client
14.2.2. Revoking AuthSub authentication
14.3. Authenticating with ClientLogin
14.3.1. Creating a ClientLogin authenticated Http Client
14.3.2. Terminating a ClientLogin authenticated Http Client
14.4. Using Google Base
14.4.1. Querying Base data
14.4.2. Updating Base data
14.4.3. Querying Base metadata
14.5. Utilistion de Google Blogger
14.5.1. Comprendre la compatibilité de version Blogger
14.5.2. Interroger un blog
14.5.3. Poster sur votre blog
14.6. Using Google Calendar
14.6.1. Querying Google Calendar
14.6.2. Posting to Google Calendar
14.7. Using Google CodeSearch
14.8. Utiliser les Helper Gdata Data
14.9. Catching Gdata Exceptions

14.1. Introduction to Gdata

Les API Google Data fournissent une interface de programmation pour accéder aux differents services en ligne de Google. Les applications clientes envoyent des requetes et des données via HTTP, et récupères les resultats. Le composant Zend_Gdata est une interface PHP 5 pour accéder à Google Data depuis PHP.

Voir http://code.google.com/apis/gdata/ pour plus d'informations sur les API Google Data

Parmis les services accessibles à l'aide de Zend_Gdata on trouve :

  • Google Base Fournissant un moteur de recherche pour produits en ligne, emplois, événements, publiciés personnels, et d'autres type de données. Les personnes déposent des Items et les décrivent à l'aide d'attributs courants.

  • Google Blogger Est un outil populaire de Blog.

  • Google Calendar Est un calendrier en ligne et un outil de collaboration.

  • Google CodeSearch Vous donne la possibilité de rechercher des codes sources publiques dans de nombreux projets.

[Note] Services non supportés

Les API Google Data proposent aussi Google Spreadsheets, mais Zend_Gdata ne fourni pas de class d'aide pour spreadsheets dans sa version actuelle.

Zend_Gdata ne fourni pas non plus d'interface pour les autres services Google, comme la recherche (Google Search), Gmail, le service de traduction (Google Translate), ou le sercie de cartographie (Google Maps). Seul les services supportants les API Google Data sont implémentés.

14.1.1. L'authentification client Google Data

La pluparts des services Google Data requièrent l'authentification de l'application cliente auprès du serveur Google avant d'accéder aux données privés, de sauvegarder des données ou d'en supprimer. Il y a deux implémentations de l'authentification sur Google Data : AuthSub et ClientLogin. Zend-Gdata fourni des interfaces (Classes) pour chacunes de ces methodes.

La plupart des autres types de rêquetes au travers du service Google Data ne requièrent pas d'authentification.

14.1.2. Les dépendances

Zend_Gdata utilise Zend_Feed et Zend_Http_Client pour envoyer des données à google.com et récupérer les resultats. The response to most La plupart des réponses sont retournés sous la forme d'objets Zend_Feed au format Atom ou fil RSS.

L'utilisation de Zend_Gdata nécesite que l'hote sur lequel votre application PHP tourne ait accès au réseau Internet. Le client Zend_Gdata procède en contactant les serveurs Google Data.

14.1.3. Création d'un nouveau client GData

Créer un nouvel objet de la classe Zend_Gdata ou d'une des classes dérivés disponibles qui offrent des methodes spécifiques pour chaques services.

Le seul paramètre optionnel au constructeur de Zend_Gdata est une instance de Zend_Http_Client. Si vous ne passez pas ce paramètre, Zend_Gdata créera un nouvel objet Zend_Http_Client. Instancier un objet Zend_Http_Client vous permettra de passer des options de configuration à ce dernier.

<?php
require_once 'Zend/Gdata.php';
require_once 'Zend/Http/Client.php';

$client = new Zend_Http_Client();
$client->setConfig( ...options... );

$gdata = new Zend_Gdata($client);
?>

Voir aussi la partie sur l'authentification pour les méthodes de création d'un objet Zend_Http_Client authentifié.

14.1.4. Paramètres de requête courants

vos pouvez spécifier des paramètres avec Zend_Gdata pour personaliser vos requêtes. Certain paramètres s'appliquent uniquement sur certain services Google Data. Ces paramètres seront documentés plus tards dans les paragraphes des services correspondants. Certain paramètres agisent de façon générique sur tout les services Google Data accessibles. Voici leur description :

  • le paramètre alt spécifie le type de fil. le paramètre peux prendre pour valeur : atom, rss, json, ou json-in-script. si vous ne spécifiez pas de paramètre, le type par défaut est atom.

    Renseignez ce paramètre à l'aide de la fonction setAlt().

  • Le paramètre maxResults limitant le nombr d'entrées du fil RSS ou Atom. Ce paramètre est un entier. Le nombre d'entrées retrounés n'exèderons pas cette valeur

    Renseignez ce paramètre à l'aide de la fonction setMaxResults().

  • Le paramètre startIndex définit le rang du premier paramètre à renvoyer. Les entrées qui le précédent sont ignorés.

    Renseignez ce paramètre à l'aide de la fonction setStartIndex().

  • Les paramètres updatedMin et updatedMax définissent des limites sur les date des entrées. Si vous spécifiez un valeur pour updatedMin, Aucune entrée qui à été mise à jour plus tôt que la date spécifiée ne sera récupérée. De la meme façon, aucune entrée qui à été mise à jour après la date updatedMax ne sera remontée.

    Vous pouvez utiliser des timestamps ou des dates/heure sous forme de chaine de caractères comme valeurs pour ces paramètres.

    Renseignez ces paramètres à l'aide des fonctions setUpdatedMin() et setUpdatedMax().

Il existe une fonction get pour chaques fonctions set.

<?php
$gdata = new Zend_Gdata();
$gdata->setMaxResults(10);
echo $gdata->getMaxResults();   // returns 10
?>

Zend_Gdata implémente aussi des méthodes getter et setter "magic", vous donnant ainsi la possibilité d'utiliser les noms de ces paramètres en tant que membres virtuels de la classe. Vous pouvez donc utiliser isset() et unset() sur ces membres virtuels.

<?php
$gdata = new Zend_Gdata();
$gdata->maxResults = 10;
echo $gdata->maxResults;        // retourne 10
echo isset($gdata->maxResults); // renvoi "vrai"
unset($gdata->maxResults);      // efface le paramètre
?>

Vous pouvez effacer tous les paramètres en une fois en utilisant la fonction resetParameters(). Ceci est utile si vous réutilisez un objetc Zend_Gdata pour différentes requêtes.

<?php
$gdata = new Zend_Gdata();
$gdata->maxResults = 10;
// ...récupération des entrées...

$gdata->resetParameters();      // efface tous les paramètre
// ...récupérez de nouvelles entrées...
?>

14.1.5. Récupérer un fil

Utilisez la fonction getFeed() pour récupérer le fil d'une URI spécifiée. Cete fonction retourne un objet de type Zend_Feed.

<?php
$gdata = new Zend_Gdata();
$gdata->setQuery('digital camera');
$gdata->setMaxResults(10);
$uri = 'http://www.google.com/base/feeds/snippets'
    . $gdata->getQueryString();
$feed = $gdata->getFeed($uri);
?>

Voir la documentation de Zend_Feed pour plus d'informations sur l'utilisation de cet objet.

Voir les autres charpitres pour les fonctions spécifiques à certains services Google Data. Ces fonctions vous aide à récupérer les données d'un service particulier à partir de son URI.

14.1.6. Envoyer des données sur le serveur Google

L'objet Zend_GData possède une fonction post() avec laquelle vous pouvez uploader de nouvelles entrées dans les services Google Data.

Il est à votre charge de construire une chaine XML syntaxiquement et stucturellement correcte pour une entrée d'un service donné. Vous pouvez pour cela vous aider de librairies PHP comme DOM XML ou SimpleXML.

<?php
$gdata = new Zend_Gdata($authenticatedHttpClient);

$xmlString = <<<XML
<entry xmlns='http://www.w3.org/2005/Atom'
    xmlns:gd='http://schemas.google.com/g/2005'>
  <category scheme='http://schemas.google.com/g/2005#kind'
    term='http://schemas.google.com/g/2005#event'></category>
  <title type='text'>Tennis with Beth</title>
  <content type='text'>Meet for a quick lesson.</content>
  <author>
    <name>Jo March</name>
    <email>jo@gmail.com</email>
  </author>
  <gd:transparency
    value='http://schemas.google.com/g/2005#event.opaque'>
  </gd:transparency>
  <gd:eventStatus
    value='http://schemas.google.com/g/2005#event.confirmed'>
  </gd:eventStatus>
  <gd:where valueString='Rolling Lawn Courts'></gd:where>
  <gd:when startTime='2006-04-17T15:00:00.000Z'
    endTime='2006-04-17T17:00:00.000Z'></gd:when>
</entry>
XML;

$xml = new SimpleXMLElement($xmlString);

$myCalendar = 'http://www.google.com/calendar/feeds/default/private/full';
$gdata->post($xml->asXML(), $myCalendar);
?>

Pour transférer des données, vous devze utiliser un objet Zend_Http_Client authentifié que vous aurez créer en utilisant les classes Zend_Gdata_AuthSub ou Zend_Gdata_ClientLogin.

14.1.7. Supprimer des données sur le serveur Google

L'objet Zend_Gdata possède la fonction delete() avec laquelle vous pouvez supprimer des entrées sur les services Google Data. Pour cela il faut passer l'identifiant <id> d'une entrée à la methode delete().

<?php
$gdata = new Zend_Gdata($authenticatedHttpClient);
// a Google Data feed
$feedUri = ...;
$feed = $gdata->getFeed($feedUri);
foreach ($feed as $feedEntry) {
    // extract the <id> element
    $id = $feedEntry->id();
    $gdata->delete($id);
}
?>

Vous pouvez aussi utiliser la methode delete() sans identifiant du moment que vous lui passez une URI correcte identifiant une entrée.

<?php
$gdata = new Zend_Gdata($authenticatedHttpClient);
$uri = 'http://www.google.com/calendar/feeds/default/private/entryID';
$gdata->delete($uri);
?>

Dans l'exemple précédent, remplacez "entryID" par l'identifiant de l'entrée que vous voulez supprimer.

Pour supprimer des entrées, vous devez utiliser un objet Zend_Http_Client authentifié que vous aurez céer à l'aide d'une des classes Zend_Gdata_AuthSub ou Zend_Gdata_ClientLogin.