Bonjour,

je voudrais savoir comment ajouter le client api tumblr ( https://github.com/tumblr/tumblr.php ) à cakephp, pour pouvoir lister les derniers messages du tumblr sur mon accueil, puis sans doute plus tard poster depuis mon admin.

J'ai bien compris les méthodes à employer ( https://api.tumblr.com/console//calls/blog/posts ) mais comment j'inclus le client ? Je sèche là ...

a+ :)

1 réponse


Tu as 2 façons de le faire: soit via un Helper pour récupérer les infos directement dans tes vues, soit via un component pour les traiter dans les Controller.

Dans les 2 cas, tu auras besoin d'utiliser App::import();

Dans un premier temps, Crée un dossier Tumblr dans app/Vendor et places y les fichiers de l'API (Client.php, RequestHandler.php et RequestException.php). Ensuite crée un fichier TumblrHelper dans app/View/Helper et ajoute en début de fichier la ligne

App::import('Vendor', 'Tumblr', array('file' => 'Tumblr/Client.php'));

Ensuite tu as juste à créer des fonctions pour les différents appels de l'API

Voila un exemple d'Helper que j'utilise pour l'API de Twitter:

TwitterHelper.php dans app/View/Helper

<?php
App::uses('AppHelper', 'View/Helper');
App::import('Vendor', 'TwitterOAuth', array('file' => 'TwitterOAuth/TwitterOAuth.php'));
class TwitterHelper extends AppHelper {
    public function userTimeline($options = array()) {
        $twitter = $this->__setup();
        // Vérifie si un fichier de cache existe et l'utilise, sinon création
        $tweets = Cache::read('Twitter.userTimeline', 'twitter');
        if (!$tweets) {
            $tweets = $twitter->get('statuses/user_timeline', $options);
            Cache::write('Twitter.userTimeline', $tweets, 'twitter');
        }
        return $this->_View->element('tweets', array('tweets' => $tweets));
    }
    private function __setup() {
        Configure::load('social', 'default', false);
        $consumerKey = Configure::read('Twitter.consumerKey');
        $consumerSecret = Configure::read('Twitter.consumerSecret');
        $tokenKey = Configure::read('Twitter.tokenKey');
        $tokenSecret = Configure::read('Twitter.tokenSecret');
        return new TwitterOAuth($consumerKey, $consumerSecret, $tokenKey, $tokenSecret);
    }
}

Déclaration du Helper dans AppController.php

public $helpers = array(
    'Twitter',
);