diff options
Diffstat (limited to 'Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Service/Resource.php')
-rw-r--r-- | Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Service/Resource.php | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Service/Resource.php b/Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Service/Resource.php deleted file mode 100644 index e71a1ab..0000000 --- a/Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Service/Resource.php +++ /dev/null @@ -1,242 +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. - */ - -require_once realpath(dirname(__FILE__) . '/../../../autoload.php'); - -/** - * Implements the actual methods/resources of the discovered Google API using magic function - * calling overloading (__call()), which on call will see if the method name (plus.activities.list) - * is available in this service, and if so construct an apiHttpRequest representing it. - * - * @author Chris Chabot <chabotc@google.com> - * @author Chirag Shah <chirags@google.com> - * - */ -class Postman_Google_Service_Resource -{ - // Valid query parameters that work, but don't appear in discovery. - private $stackParameters = array( - 'alt' => array('type' => 'string', 'location' => 'query'), - 'fields' => array('type' => 'string', 'location' => 'query'), - 'trace' => array('type' => 'string', 'location' => 'query'), - 'userIp' => array('type' => 'string', 'location' => 'query'), - 'userip' => array('type' => 'string', 'location' => 'query'), - 'quotaUser' => array('type' => 'string', 'location' => 'query'), - 'data' => array('type' => 'string', 'location' => 'body'), - 'mimeType' => array('type' => 'string', 'location' => 'header'), - 'uploadType' => array('type' => 'string', 'location' => 'query'), - 'mediaUpload' => array('type' => 'complex', 'location' => 'query'), - ); - - /** @var Postman_Google_Service $service */ - private $service; - - /** @var Postman_Google_Client $client */ - private $client; - - /** @var string $serviceName */ - private $serviceName; - - /** @var string $resourceName */ - private $resourceName; - - /** @var array $methods */ - private $methods; - - public function __construct($service, $serviceName, $resourceName, $resource) - { - $this->service = $service; - $this->client = $service->getClient(); - $this->serviceName = $serviceName; - $this->resourceName = $resourceName; - $this->methods = isset($resource['methods']) ? - $resource['methods'] : - array($resourceName => $resource); - } - - /** - * TODO(ianbarber): This function needs simplifying. - * @param $name - * @param $arguments - * @param $expected_class - optional, the expected class name - * @return Postman_Google_Http_Request|expected_class - * @throws Postman_Google_Exception - */ - public function call($name, $arguments, $expected_class = null) - { - if (! isset($this->methods[$name])) { - $this->client->getLogger()->error( - 'Service method unknown', - array( - 'service' => $this->serviceName, - 'resource' => $this->resourceName, - 'method' => $name - ) - ); - - throw new Postman_Google_Exception( - "Unknown function: " . - "{$this->serviceName}->{$this->resourceName}->{$name}()" - ); - } - $method = $this->methods[$name]; - $parameters = $arguments[0]; - - // postBody is a special case since it's not defined in the discovery - // document as parameter, but we abuse the param entry for storing it. - $postBody = null; - if (isset($parameters['postBody'])) { - if ($parameters['postBody'] instanceof Postman_Google_Model) { - // In the cases the post body is an existing object, we want - // to use the smart method to create a simple object for - // for JSONification. - $parameters['postBody'] = $parameters['postBody']->toSimpleObject(); - } else if (is_object($parameters['postBody'])) { - // If the post body is another kind of object, we will try and - // wrangle it into a sensible format. - $parameters['postBody'] = - $this->convertToArrayAndStripNulls($parameters['postBody']); - } - $postBody = json_encode($parameters['postBody']); - unset($parameters['postBody']); - } - - // TODO(ianbarber): optParams here probably should have been - // handled already - this may well be redundant code. - if (isset($parameters['optParams'])) { - $optParams = $parameters['optParams']; - unset($parameters['optParams']); - $parameters = array_merge($parameters, $optParams); - } - - if (!isset($method['parameters'])) { - $method['parameters'] = array(); - } - - $method['parameters'] = array_merge( - $method['parameters'], - $this->stackParameters - ); - foreach ($parameters as $key => $val) { - if ($key != 'postBody' && ! isset($method['parameters'][$key])) { - $this->client->getLogger()->error( - 'Service parameter unknown', - array( - 'service' => $this->serviceName, - 'resource' => $this->resourceName, - 'method' => $name, - 'parameter' => $key - ) - ); - throw new Postman_Google_Exception("($name) unknown parameter: '$key'"); - } - } - - foreach ($method['parameters'] as $paramName => $paramSpec) { - if (isset($paramSpec['required']) && - $paramSpec['required'] && - ! isset($parameters[$paramName]) - ) { - $this->client->getLogger()->error( - 'Service parameter missing', - array( - 'service' => $this->serviceName, - 'resource' => $this->resourceName, - 'method' => $name, - 'parameter' => $paramName - ) - ); - throw new Postman_Google_Exception("($name) missing required param: '$paramName'"); - } - if (isset($parameters[$paramName])) { - $value = $parameters[$paramName]; - $parameters[$paramName] = $paramSpec; - $parameters[$paramName]['value'] = $value; - unset($parameters[$paramName]['required']); - } else { - // Ensure we don't pass nulls. - unset($parameters[$paramName]); - } - } - - $servicePath = $this->service->servicePath; - - $this->client->getLogger()->info( - 'Service Call', - array( - 'service' => $this->serviceName, - 'resource' => $this->resourceName, - 'method' => $name, - 'arguments' => $parameters, - ) - ); - - $url = Postman_Google_Http_REST::createRequestUri( - $servicePath, - $method['path'], - $parameters - ); - $httpRequest = new Postman_Google_Http_Request( - $url, - $method['httpMethod'], - null, - $postBody - ); - $httpRequest->setBaseComponent($this->client->getBasePath()); - - if ($postBody) { - $contentTypeHeader = array(); - $contentTypeHeader['content-type'] = 'application/json; charset=UTF-8'; - $httpRequest->setRequestHeaders($contentTypeHeader); - $httpRequest->setPostBody($postBody); - } - - $httpRequest = $this->client->getAuth()->sign($httpRequest); - $httpRequest->setExpectedClass($expected_class); - - if (isset($parameters['data']) && - ($parameters['uploadType']['value'] == 'media' || $parameters['uploadType']['value'] == 'multipart')) { - // If we are doing a simple media upload, trigger that as a convenience. - $mfu = new Postman_Google_Http_MediaFileUpload( - $this->client, - $httpRequest, - isset($parameters['mimeType']) ? $parameters['mimeType']['value'] : 'application/octet-stream', - $parameters['data']['value'] - ); - } - - if ($this->client->shouldDefer()) { - // If we are in batch or upload mode, return the raw request. - return $httpRequest; - } - - return $this->client->execute($httpRequest); - } - - protected function convertToArrayAndStripNulls($o) - { - $o = (array) $o; - foreach ($o as $k => $v) { - if ($v === null) { - unset($o[$k]); - } elseif (is_object($v) || is_array($v)) { - $o[$k] = $this->convertToArrayAndStripNulls($o[$k]); - } - } - return $o; - } -} |