123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <?php
- /**
- * Dropbox OAuth
- *
- * @package Dropbox
- * @copyright Copyright (C) 2010 Rooftop Solutions. All rights reserved.
- * @author Evert Pot (http://www.rooftopsolutions.nl/)
- * @license http://code.google.com/p/dropbox-php/wiki/License MIT
- */
- /**
- * This class is an abstract OAuth class.
- *
- * It must be extended by classes who wish to provide OAuth functionality
- * using different libraries.
- */
- abstract class Dropbox_OAuth {
- /**
- * After a user has authorized access, dropbox can redirect the user back
- * to this url.
- *
- * @var string
- */
- public $authorizeCallbackUrl = null;
-
- /**
- * Uri used to fetch request tokens
- *
- * @var string
- */
- const URI_REQUEST_TOKEN = 'https://api.dropbox.com/1/oauth/request_token';
- /**
- * Uri used to redirect the user to for authorization.
- *
- * @var string
- */
- const URI_AUTHORIZE = 'https://www.dropbox.com/1/oauth/authorize';
- /**
- * Uri used to
- *
- * @var string
- */
- const URI_ACCESS_TOKEN = 'https://api.dropbox.com/1/oauth/access_token';
- /**
- * An OAuth request token.
- *
- * @var string
- */
- protected $oauth_token = null;
- /**
- * OAuth token secret
- *
- * @var string
- */
- protected $oauth_token_secret = null;
- /**
- * Get OAuth request last responce
- *
- * @var array
- */
- protected $lastResponse = array();
-
- /**
- * Input file stream pointer or file path for PUT method
- *
- * @var resource|string
- */
- protected $inFile = null;
-
- /**
- * Input file size for PUT method
- *
- * @var resource | string
- */
- protected $inFileSize = null;
-
- /**
- * Is support PUT method on OAuth consumer
- *
- * @var bool
- */
- protected $putSupported = false;
-
- /**
- * Constructor
- *
- * @param string $consumerKey
- * @param string $consumerSecret
- */
- abstract public function __construct($consumerKey, $consumerSecret);
- /**
- * Sets the request token and secret.
- *
- * The tokens can also be passed as an array into the first argument.
- * The array must have the elements token and token_secret.
- *
- * @param string|array $token
- * @param string $token_secret
- * @return void
- */
- public function setToken($token, $token_secret = null) {
- if (is_array($token)) {
- $this->oauth_token = $token['token'];
- $this->oauth_token_secret = $token['token_secret'];
- } else {
- $this->oauth_token = $token;
- $this->oauth_token_secret = $token_secret;
- }
- }
- /**
- * Returns the oauth request tokens as an associative array.
- *
- * The array will contain the elements 'token' and 'token_secret'.
- *
- * @return array
- */
- public function getToken() {
- return array(
- 'token' => $this->oauth_token,
- 'token_secret' => $this->oauth_token_secret,
- );
- }
- /**
- * Returns the authorization url
- *
- * @param string $callBack Specify a callback url to automatically redirect the user back
- * @return string
- */
- public function getAuthorizeUrl($callBack = null) {
-
- // Building the redirect uri
- $token = $this->getToken();
- $uri = self::URI_AUTHORIZE . '?oauth_token=' . $token['token'];
- if ($callBack) $uri.='&oauth_callback=' . $callBack;
- return $uri;
- }
- /**
- * Set input file for PUT method
- *
- * @param resource|string $file
- * @throws Dropbox_Exception
- */
- public function setInfile($file) {
- if (is_resource($file)) {
- $stat = fstat($file);
- $this->inFileSize = $stat['size'];
- } else if (is_string($file) && is_readable($file)) {
- $this->inFileSize = filesize($file);
- $file = fopen($file, 'rb');
- }
- if (!is_resource($file)) {
- throw new Dropbox_Exception('File must be a file-resource or a string');
- }
- $this->inFile = $file;
- }
- /**
- * Return is PUT method supported
- *
- * @return boolean
- */
- public function isPutSupport() {
- return $this->putSupported;
- }
-
- /**
- * Get last request response
- *
- * @return array:
- */
- public function getLastResponse() {
- return $this->lastResponse;
- }
-
- /**
- * Fetches a secured oauth url and returns the response body.
- *
- * @param string $uri
- * @param mixed $arguments
- * @param string $method
- * @param array $httpHeaders
- * @return string
- */
- public abstract function fetch($uri, $arguments = array(), $method = 'GET', $httpHeaders = array());
- /**
- * Requests the OAuth request token.
- *
- * @return array
- */
- abstract public function getRequestToken();
- /**
- * Requests the OAuth access tokens.
- *
- * @return array
- */
- abstract public function getAccessToken();
- }
|