MDL-49519 Google API: remove old stuff
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Wed, 8 Apr 2015 17:23:26 +0000 (19:23 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Wed, 8 Apr 2015 18:24:54 +0000 (20:24 +0200)
lib/google/Google_Client.php [deleted file]
lib/google/config.php [deleted file]
lib/google/local_config.php [deleted file]
lib/upgrade.txt

diff --git a/lib/google/Google_Client.php b/lib/google/Google_Client.php
deleted file mode 100644 (file)
index 3e12137..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-<?php
-/*
- * Copyright 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Check for the required json and curl extensions, the Google APIs PHP Client
-// won't function without them.
-if (! function_exists('curl_init')) {
-  throw new Exception('Google PHP API Client requires the CURL PHP extension');
-}
-
-if (! function_exists('json_decode')) {
-  throw new Exception('Google PHP API Client requires the JSON PHP extension');
-}
-
-if (! function_exists('http_build_query')) {
-  throw new Exception('Google PHP API Client requires http_build_query()');
-}
-
-if (! ini_get('date.timezone') && function_exists('date_default_timezone_set')) {
-  // Library hack. See MDL-42808.
-  // date_default_timezone_set('UTC');
-}
-
-// hack around with the include paths a bit so the library 'just works'
-set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());
-
-require_once "config.php";
-// If a local configuration file is found, merge it's values with the default configuration
-if (file_exists(dirname(__FILE__)  . '/local_config.php')) {
-  $defaultConfig = $apiConfig;
-  require_once (dirname(__FILE__)  . '/local_config.php');
-  $apiConfig = array_merge($defaultConfig, $apiConfig);
-}
-
-// Include the top level classes, they each include their own dependencies
-require_once 'service/Google_Model.php';
-require_once 'service/Google_Service.php';
-require_once 'service/Google_ServiceResource.php';
-require_once 'auth/Google_AssertionCredentials.php';
-require_once 'auth/Google_Signer.php';
-require_once 'auth/Google_P12Signer.php';
-require_once 'service/Google_BatchRequest.php';
-require_once 'external/URITemplateParser.php';
-require_once 'auth/Google_Auth.php';
-require_once 'cache/Google_Cache.php';
-require_once 'io/Google_IO.php';
-require_once('service/Google_MediaFileUpload.php');
-
-/**
- * The Google API Client
- * http://code.google.com/p/google-api-php-client/
- *
- * @author Chris Chabot <chabotc@google.com>
- * @author Chirag Shah <chirags@google.com>
- */
-class Google_Client {
-  /**
-   * @static
-   * @var Google_Auth $auth
-   */
-  static $auth;
-
-  /**
-   * @static
-   * @var Google_IO $io
-   */
-  static $io;
-
-  /**
-   * @static
-   * @var Google_Cache $cache
-   */
-  static $cache;
-
-  /**
-   * @static
-   * @var boolean $useBatch
-   */
-  static $useBatch = false;
-
-  /** @var array $scopes */
-  protected $scopes = array();
-
-  /** @var bool $useObjects */
-  protected $useObjects = false;
-
-  // definitions of services that are discovered.
-  protected $services = array();
-
-  // Used to track authenticated state, can't discover services after doing authenticate()
-  private $authenticated = false;
-
-  public function __construct($config = array()) {
-    global $apiConfig;
-    $apiConfig = array_merge($apiConfig, $config);
-    self::$cache = new $apiConfig['cacheClass']();
-    self::$auth = new $apiConfig['authClass']();
-    self::$io = new $apiConfig['ioClass']();
-  }
-
-  /**
-   * Add a service
-   */
-  public function addService($service, $version = false) {
-    global $apiConfig;
-    if ($this->authenticated) {
-      throw new Google_Exception('Cant add services after having authenticated');
-    }
-    $this->services[$service] = array();
-    if (isset($apiConfig['services'][$service])) {
-      // Merge the service descriptor with the default values
-      $this->services[$service] = array_merge($this->services[$service], $apiConfig['services'][$service]);
-    }
-  }
-
-  public function authenticate($code = null) {
-    $service = $this->prepareService();
-    $this->authenticated = true;
-    return self::$auth->authenticate($service, $code);
-  }
-
-  /**
-   * @return array
-   * @visible For Testing
-   */
-  public function prepareService() {
-    $service = array();
-    $scopes = array();
-    if ($this->scopes) {
-      $scopes = $this->scopes;
-    } else {
-      foreach ($this->services as $key => $val) {
-        if (isset($val['scope'])) {
-          if (is_array($val['scope'])) {
-            $scopes = array_merge($val['scope'], $scopes);
-          } else {
-            $scopes[] = $val['scope'];
-          }
-        } else {
-          $scopes[] = 'https://www.googleapis.com/auth/' . $key;
-        }
-        unset($val['discoveryURI']);
-        unset($val['scope']);
-        $service = array_merge($service, $val);
-      }
-    }
-    $service['scope'] = implode(' ', $scopes);
-    return $service;
-  }
-
-  /**
-   * Set the OAuth 2.0 access token using the string that resulted from calling authenticate()
-   * or Google_Client#getAccessToken().
-   * @param string $accessToken JSON encoded string containing in the following format:
-   * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer",
-   *  "expires_in":3600, "id_token":"TOKEN", "created":1320790426}
-   */
-  public function setAccessToken($accessToken) {
-    if ($accessToken == null || 'null' == $accessToken) {
-      $accessToken = null;
-    }
-    self::$auth->setAccessToken($accessToken);
-  }
-
-  /**
-   * Set the type of Auth class the client should use.
-   * @param string $authClassName
-   */
-  public function setAuthClass($authClassName) {
-    self::$auth = new $authClassName();
-  }
-
-  /**
-   * Construct the OAuth 2.0 authorization request URI.
-   * @return string
-   */
-  public function createAuthUrl() {
-    $service = $this->prepareService();
-    return self::$auth->createAuthUrl($service['scope']);
-  }
-
-  /**
-   * Get the OAuth 2.0 access token.
-   * @return string $accessToken JSON encoded string in the following format:
-   * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer",
-   *  "expires_in":3600,"id_token":"TOKEN", "created":1320790426}
-   */
-  public function getAccessToken() {
-    $token = self::$auth->getAccessToken();
-    return (null == $token || 'null' == $token) ? null : $token;
-  }
-
-  /**
-   * Returns if the access_token is expired.
-   * @return bool Returns True if the access_token is expired.
-   */
-  public function isAccessTokenExpired() {
-    return self::$auth->isAccessTokenExpired();
-  }
-
-  /**
-   * Set the developer key to use, these are obtained through the API Console.
-   * @see http://code.google.com/apis/console-help/#generatingdevkeys
-   * @param string $developerKey
-   */
-  public function setDeveloperKey($developerKey) {
-    self::$auth->setDeveloperKey($developerKey);
-  }
-
-  /**
-   * Set OAuth 2.0 "state" parameter to achieve per-request customization.
-   * @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2
-   * @param string $state
-   */
-  public function setState($state) {
-    self::$auth->setState($state);
-  }
-
-  /**
-   * @param string $accessType Possible values for access_type include:
-   *  {@code "offline"} to request offline access from the user. (This is the default value)
-   *  {@code "online"} to request online access from the user.
-   */
-  public function setAccessType($accessType) {
-    self::$auth->setAccessType($accessType);
-  }
-
-  /**
-   * @param string $approvalPrompt Possible values for approval_prompt include:
-   *  {@code "force"} to force the approval UI to appear. (This is the default value)
-   *  {@code "auto"} to request auto-approval when possible.
-   */
-  public function setApprovalPrompt($approvalPrompt) {
-    self::$auth->setApprovalPrompt($approvalPrompt);
-  }
-
-  /**
-   * Set the application name, this is included in the User-Agent HTTP header.
-   * @param string $applicationName
-   */
-  public function setApplicationName($applicationName) {
-    global $apiConfig;
-    $apiConfig['application_name'] = $applicationName;
-  }
-
-  /**
-   * Set the OAuth 2.0 Client ID.
-   * @param string $clientId
-   */
-  public function setClientId($clientId) {
-    global $apiConfig;
-    $apiConfig['oauth2_client_id'] = $clientId;
-    self::$auth->clientId = $clientId;
-  }
-
-  /**
-   * Get the OAuth 2.0 Client ID.
-   */
-  public function getClientId() {
-    return self::$auth->clientId;
-  }
-  
-  /**
-   * Set the OAuth 2.0 Client Secret.
-   * @param string $clientSecret
-   */
-  public function setClientSecret($clientSecret) {
-    global $apiConfig;
-    $apiConfig['oauth2_client_secret'] = $clientSecret;
-    self::$auth->clientSecret = $clientSecret;
-  }
-
-  /**
-   * Get the OAuth 2.0 Client Secret.
-   */
-  public function getClientSecret() {
-    return self::$auth->clientSecret;
-  }
-
-  /**
-   * Set the OAuth 2.0 Redirect URI.
-   * @param string $redirectUri
-   */
-  public function setRedirectUri($redirectUri) {
-    global $apiConfig;
-    $apiConfig['oauth2_redirect_uri'] = $redirectUri;
-    self::$auth->redirectUri = $redirectUri;
-  }
-
-  /**
-   * Get the OAuth 2.0 Redirect URI.
-   */
-  public function getRedirectUri() {
-    return self::$auth->redirectUri;
-  }
-
-  /**
-   * Fetches a fresh OAuth 2.0 access token with the given refresh token.
-   * @param string $refreshToken
-   * @return void
-   */
-  public function refreshToken($refreshToken) {
-    self::$auth->refreshToken($refreshToken);
-  }
-
-  /**
-   * Revoke an OAuth2 access token or refresh token. This method will revoke the current access
-   * token, if a token isn't provided.
-   * @throws Google_AuthException
-   * @param string|null $token The token (access token or a refresh token) that should be revoked.
-   * @return boolean Returns True if the revocation was successful, otherwise False.
-   */
-  public function revokeToken($token = null) {
-    self::$auth->revokeToken($token);
-  }
-
-  /**
-   * Verify an id_token. This method will verify the current id_token, if one
-   * isn't provided.
-   * @throws Google_AuthException
-   * @param string|null $token The token (id_token) that should be verified.
-   * @return Google_LoginTicket Returns an apiLoginTicket if the verification was
-   * successful.
-   */
-  public function verifyIdToken($token = null) {
-    return self::$auth->verifyIdToken($token);
-  }
-
-  /**
-   * @param Google_AssertionCredentials $creds
-   * @return void
-   */
-  public function setAssertionCredentials(Google_AssertionCredentials $creds) {
-    self::$auth->setAssertionCredentials($creds);
-  }
-
-  /**
-   * This function allows you to overrule the automatically generated scopes,
-   * so that you can ask for more or less permission in the auth flow
-   * Set this before you call authenticate() though!
-   * @param array $scopes, ie: array('https://www.googleapis.com/auth/plus.me', 'https://www.googleapis.com/auth/moderator')
-   */
-  public function setScopes($scopes) {
-    $this->scopes = is_string($scopes) ? explode(" ", $scopes) : $scopes;
-  }
-
-  /**
-   * Declare if objects should be returned by the api service classes.
-   *
-   * @param boolean $useObjects True if objects should be returned by the service classes.
-   * False if associative arrays should be returned (default behavior).
-   * @experimental
-   */
-  public function setUseObjects($useObjects) {
-    global $apiConfig;
-    $apiConfig['use_objects'] = $useObjects;
-  }
-
-  /**
-   * Declare if objects should be returned by the api service classes.
-   *
-   * @param boolean $useBatch True if the experimental batch support should
-   * be enabled. Defaults to False.
-   * @experimental
-   */
-  public function setUseBatch($useBatch) {
-    self::$useBatch = $useBatch;
-  }
-
-  /**
-   * @static
-   * @return Google_Auth the implementation of apiAuth.
-   */
-  public static function getAuth() {
-    return Google_Client::$auth;
-  }
-
-  /**
-   * @static
-   * @return Google_IO the implementation of apiIo.
-   */
-  public static function getIo() {
-    return Google_Client::$io;
-  }
-
-  /**
-   * @return Google_Cache the implementation of apiCache.
-   */
-  public function getCache() {
-    return Google_Client::$cache;
-  }
-}
-
-// Exceptions that the Google PHP API Library can throw
-class Google_Exception extends Exception {}
-class Google_AuthException extends Google_Exception {}
-class Google_CacheException extends Google_Exception {}
-class Google_IOException extends Google_Exception {}
-class Google_ServiceException extends Google_Exception {
-  /**
-   * Optional list of errors returned in a JSON body of an HTTP error response.
-   */
-  protected $errors = array();
-
-  /**
-   * Override default constructor to add ability to set $errors.
-   *
-   * @param string $message
-   * @param int $code
-   * @param Exception|null $previous
-   * @param [{string, string}] errors List of errors returned in an HTTP
-   * response.  Defaults to [].
-   */
-  public function __construct($message, $code = 0, Exception $previous = null,
-                              $errors = array()) {
-    if(version_compare(PHP_VERSION, '5.3.0') >= 0) {
-      parent::__construct($message, $code, $previous);
-    } else {
-      parent::__construct($message, $code);
-    }
-    
-    $this->errors = $errors;
-  }
-
-  /**
-   * An example of the possible errors returned.
-   *
-   * {
-   *   "domain": "global",
-   *   "reason": "authError",
-   *   "message": "Invalid Credentials",
-   *   "locationType": "header",
-   *   "location": "Authorization",
-   * }
-   *
-   * @return [{string, string}] List of errors return in an HTTP response or [].
-   */
-  public function getErrors() {
-    return $this->errors;
-  }
-}
diff --git a/lib/google/config.php b/lib/google/config.php
deleted file mode 100644 (file)
index 00917f4..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/*
- * Copyright 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-global $apiConfig;
-$apiConfig = array(
-    // True if objects should be returned by the service classes.
-    // False if associative arrays should be returned (default behavior).
-    'use_objects' => false,
-  
-    // The application_name is included in the User-Agent HTTP header.
-    'application_name' => '',
-
-    // OAuth2 Settings, you can get these keys at https://code.google.com/apis/console
-    'oauth2_client_id' => '',
-    'oauth2_client_secret' => '',
-    'oauth2_redirect_uri' => '',
-
-    // The developer key, you get this at https://code.google.com/apis/console
-    'developer_key' => '',
-  
-    // Site name to show in the Google's OAuth 1 authentication screen.
-    'site_name' => 'www.example.org',
-
-    // Which Authentication, Storage and HTTP IO classes to use.
-    'authClass'    => 'Google_OAuth2',
-    'ioClass'      => 'Google_CurlIO',
-    'cacheClass'   => 'Google_FileCache',
-
-    // Don't change these unless you're working against a special development or testing environment.
-    'basePath' => 'https://www.googleapis.com',
-
-    // IO Class dependent configuration, you only have to configure the values
-    // for the class that was configured as the ioClass above
-    'ioFileCache_directory'  =>
-        (function_exists('sys_get_temp_dir') ?
-            sys_get_temp_dir() . '/Google_Client' :
-        '/tmp/Google_Client'),
-
-    // Definition of service specific values like scopes, oauth token URLs, etc
-    'services' => array(
-      'analytics' => array('scope' => 'https://www.googleapis.com/auth/analytics.readonly'),
-      'calendar' => array(
-          'scope' => array(
-              "https://www.googleapis.com/auth/calendar",
-              "https://www.googleapis.com/auth/calendar.readonly",
-          )
-      ),
-      'books' => array('scope' => 'https://www.googleapis.com/auth/books'),
-      'latitude' => array(
-          'scope' => array(
-              'https://www.googleapis.com/auth/latitude.all.best',
-              'https://www.googleapis.com/auth/latitude.all.city',
-          )
-      ),
-      'moderator' => array('scope' => 'https://www.googleapis.com/auth/moderator'),
-      'oauth2' => array(
-          'scope' => array(
-              'https://www.googleapis.com/auth/userinfo.profile',
-              'https://www.googleapis.com/auth/userinfo.email',
-          )
-      ),
-      'plus' => array('scope' => 'https://www.googleapis.com/auth/plus.me'),
-      'siteVerification' => array('scope' => 'https://www.googleapis.com/auth/siteverification'),
-      'tasks' => array('scope' => 'https://www.googleapis.com/auth/tasks'),
-      'urlshortener' => array('scope' => 'https://www.googleapis.com/auth/urlshortener')
-    )
-);
\ No newline at end of file
diff --git a/lib/google/local_config.php b/lib/google/local_config.php
deleted file mode 100644 (file)
index b136b9f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-// This file is part of Moodle - http://moodle.org/
-//
-// Moodle is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Moodle is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
-
-/**
- * Basic configuration overwrite for Google API.
- *
- * @package   core
- * @copyright Frédéric Massart <fred@moodle.com>
- * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-defined('MOODLE_INTERNAL') || die();
-global $CFG, $SITE;
-require_once($CFG->libdir . '/weblib.php');
-require_once($CFG->libdir . '/google/curlio.php');
-
-make_temp_directory('googleapi');
-$GoogleConfigTempDir = $CFG->tempdir . '/googleapi';
-
-global $apiConfig;
-$apiConfig = array(
-    // Application name.
-    'application_name' => 'Moodle ' . $CFG->release,
-
-    // Site name to show in the Google's OAuth 1 authentication screen.
-    'site_name' => $SITE->fullname,
-
-    // Which HTTP IO classes to use.
-    'ioClass' => 'moodle_google_curlio',
-
-    // Cache class directory, it should never be used but created just in case.
-    'ioFileCache_directory' => $GoogleConfigTempDir,
-
-    // Default Access Type for OAuth 2.0.
-    'oauth2_access_type' => 'online',
-
-    // Default Approval Prompt for OAuth 2.0.
-    'oauth2_approval_prompt' => 'auto'
-);
index 0da0df3..93dbd8c 100644 (file)
@@ -36,6 +36,8 @@ information provided here is intended especially for developers.
 * Use standard PHP date time classes and methods - see new core_date class for timezone normalisation methods.
 * Moved lib/google/Google/ to lib/google/src/Google. This is to address autoloader issues with Google's provided autoloader
   for the library. See MDL-49519 for details.
+* The outdated lib/google/Google_Client.php and related files have been completely removed. To use
+  the new client, read lib/google/readme_moodle.txt, please.
 
 === 2.8 ===