Services_Scribd
[ class tree: Services_Scribd ] [ index: Services_Scribd ] [ all elements ]

Source for file Scribd.php

Documentation is available at Scribd.php

  1. <?php
  2. /**
  3.  * Interface for Scribd's API.
  4.  *
  5.  * PHP version 5.2.0+
  6.  *
  7.  * LICENSE: This source file is subject to the New BSD license that is
  8.  * available through the world-wide-web at the following URI:
  9.  * http://www.opensource.org/licenses/bsd-license.php. If you did not receive
  10.  * a copy of the New BSD License and are unable to obtain it through the web,
  11.  * please send a note to license@php.net so we can mail you a copy immediately.
  12.  *
  13.  * @category  Services
  14.  * @package   Services_Scribd
  15.  * @author    Rich Schumacher <rich.schu@gmail.com>
  16.  * @copyright 2009 Rich Schumacher <rich.schu@gmail.com>
  17.  * @license   http://www.opensource.org/licenses/bsd-license.php New BSD License
  18.  * @version   Release: 0.2.0
  19.  * @link      http://pear.php.net/package/Services_Scribd
  20.  */
  21.  
  22. require_once 'Services/Scribd/Account.php';
  23. require_once 'Services/Scribd/Exception.php';
  24.  
  25. /**
  26.  * The base class for the Scribd API interface.  Takes care of defining common
  27.  * variables and loading the individual drivers.
  28.  *
  29.  * <code>
  30.  * <?php
  31.  * require_once 'Services/Scribd.php';
  32.  *
  33.  * $apiKey    = 'myAPIKey';
  34.  * $apiSecret = 'myAPISecret';
  35.  *
  36.  * $scribd = new Services_Scribd($apiKey, $apiSecret);
  37.  *
  38.  * try {
  39.  *     $result = $scribd->docs->search('vim');
  40.  *     var_dump($result);
  41.  * } catch (Services_Scribd_Exception $e) {
  42.  *     var_dump($e);
  43.  * }
  44.  * ?>
  45.  * </code>
  46.  *
  47.  * @category  Services
  48.  * @package   Services_Scribd
  49.  * @author    Rich Schumacher <rich.schu@gmail.com>
  50.  * @copyright 2009 Rich Schumacher <rich.schu@gmail.com>
  51.  * @license   http://www.opensource.org/licenses/bsd-license.php New BSD License
  52.  * @link      http://www.scribd.com/developers/platform
  53.  */
  54. {
  55.     /**
  56.      * URI of the API
  57.      *
  58.      * @var string 
  59.      */
  60.     const API = 'http://api.scribd.com/api';
  61.  
  62.     /**
  63.      * Timeout to use when making the request
  64.      *
  65.      * @var integer 
  66.      */
  67.     public $timeout = 10;
  68.  
  69.     /**
  70.      * The Scribd account to use for requests
  71.      *
  72.      * @var Services_Scribd_Account 
  73.      */
  74.     protected $account = null;
  75.  
  76.     /**
  77.      * An array that contains instances of the individual drivers
  78.      *
  79.      * @var array 
  80.      */
  81.     private $_drivers = array();
  82.  
  83.     /**
  84.      * An array of supported drivers
  85.      *
  86.      * @var array 
  87.      */
  88.     private $_validDrivers = array(
  89.         'collections',
  90.         'docs',
  91.         'thumbnail',
  92.         'user',
  93.         'empty'
  94.     );
  95.  
  96.     /**
  97.      * Sets the API key and optional API secret
  98.      *
  99.      * @param string|Services_Scribd_Account$spec      The API key or an
  100.      *  existing account object
  101.      * @param string                         $apiSecret The API secret
  102.      *
  103.      * @return void 
  104.      */
  105.     public function __construct($spec$apiSecret = null)
  106.     {
  107.         if ($spec instanceof Services_Scribd_Account{
  108.             $this->account = $spec;
  109.         else {
  110.             $this->account = new Services_Scribd_Account($spec$apiSecret);
  111.         }
  112.     }
  113.  
  114.     /**
  115.      * Loads individual endpoint drivers
  116.      *
  117.      * @param string $driver The driver we want to load
  118.      *
  119.      * @throws Services_Scribd_Exception
  120.      * @return Services_Scribd_Common 
  121.      */
  122.     public function __get($driver)
  123.     {
  124.         if (!in_array($driver$this->_validDrivers)) {
  125.             throw new Services_Scribd_Exception(
  126.                 'Invalid driver provided: ' $driver
  127.             );
  128.         }
  129.  
  130.         if (empty($this->_drivers[$driver])) {
  131.             $this->_drivers[$driver$this->_factory($driver);
  132.         }
  133.  
  134.         return $this->_drivers[$driver];
  135.     }
  136.  
  137.     /**
  138.      * Sets the Scribd account to use
  139.      *
  140.      * @param Services_Scribd_Account $account The account to set
  141.      *
  142.      * @return void 
  143.      */
  144.     public function setAccount(Services_Scribd_Account $account)
  145.     {
  146.         $this->account  = $account;
  147.         $this->_drivers = array();
  148.     }
  149.  
  150.     /**
  151.      * Returns the current account instance
  152.      *
  153.      * @return Services_Scribd_Account 
  154.      */
  155.     public function getAccount()
  156.     {
  157.         return $this->account;
  158.     }
  159.  
  160.     /**
  161.      * Churns out individual API endpoint drivers
  162.      *
  163.      * @param string $driver The driver we want to load
  164.      *
  165.      * @throws Services_Scribd_Exception
  166.      * @return Services_Scribd_Common 
  167.      */
  168.     private function _factory($driver)
  169.     {
  170.         $driver mb_convert_case($driverMB_CASE_TITLE);
  171.         $file   'Services/Scribd/' $driver '.php';
  172.         $class  'Services_Scribd_' $driver;
  173.  
  174.         include_once $file;
  175.  
  176.         if (!class_exists($class)) {
  177.             throw new Services_Scribd_Exception(
  178.                 'Unable to load driver: ' $driver
  179.             );
  180.         }
  181.  
  182.         return new $class($this->account);
  183.     }
  184. }
  185.  
  186. ?>

Documentation generated on Sat, 06 Apr 2013 14:30:04 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.