diff --git a/.gitignore b/.gitignore index c4b3aa7..15e3877 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /vendor /public/tmp +/public/compressed /storage/db /storage/app /storage/temp \ No newline at end of file diff --git a/README.md b/README.md index db8daba..d7e1c2e 100644 --- a/README.md +++ b/README.md @@ -1 +1,12 @@ "# F3Module" + +## KNOWN ISSUES + 1: Rendering modules views: + This issue can be resolved by modifying `Preview->render` as below: + if(is_file($view = $f3->fixslashes($dir.$file))) // REPLACE THIS WITH + + + $_f = $fw->fixslashes($dir.$file); + $_fr = str_ireplace('./', '', $_f); + $view = (is_file($_f) ? $_f : (is_file($_fr) ? $_fr : null)); + if ($view) { \ No newline at end of file diff --git a/app b/app new file mode 100644 index 0000000..4eeaa67 --- /dev/null +++ b/app @@ -0,0 +1,101 @@ +#!/usr/bin/env php + +args = $args; + } + + public function help() { + echo "\n"; + echo "Syntax: php app []".PHP_EOL; + echo PHP_EOL; + echo "Commands: \n"; + echo "php app --help --> Displays the help menu.".PHP_EOL; + echo "php app generate --> Generate SECRET key.".PHP_EOL; + echo "php app serve --> Start WebServer.".PHP_EOL; + echo "php app serve --port --> Start WebServer to specific port.".PHP_EOL; + echo PHP_EOL; + } + + public function run() { + if (count($this->args) <= 1) { + $this->help(); + } else { + switch ($this->args[1]) { + case "generate": + $this->generateKey(); + break; + case "serve": + $this->serve(); + break; + case "help": + case "--help": + $this->help(); + break; + default: + $this->error(); + } + } + } + + private function serve() { + $command = 'php -S'; + $ip = '127.0.0.1'; + $port = 8888; + $dir = './'; + + foreach($this->args as $key => $arg) { + $arg = strtolower($arg); + if($arg === 'ip' || $arg === '--ip'){ + $host = $this->args[++$key]; + if( + (is_numeric($host) && !filter_var($host, FILTER_VALIDATE_IP)) + || + (is_string($host) && strtolower($host) !== 'localhost') + ){ + $this->error($arg.': '.$host.' must be localhost OR an valid IP!'); + break; + } + $ip = $host; + } + if($arg === 'port' || $arg === '--port'){ + $port = $this->args[++$key]; + } + if($arg === 'dir' || $arg === '--dir'){ + $dir = $this->args[++$key]; + } + } + + echo "Served as {$ip}:{$port} to {$dir}"; + $started = exec($command.' '.$ip.':'.$port.' -t '.$dir); + $this->error($started); + } + + private function generateKey() { + $cipher = 'AES-256-CBC'; + echo 'base64:'.base64_encode(random_bytes($cipher == 'AES-128-CBC' ? 16 : 32)); + } + + private function error($msg = null) { + if($msg){ + echo "\t{$msg}"; + exit(); + } + + echo "\nSupplied argument/s is not supported:\n"; + foreach($this->args as $arg) { + if($arg == 'app') { continue; } + echo "\t"; + echo "{$arg}"; + echo "\n"; + } + + echo PHP_EOL; + } +} + +$app = new App($argv); +$app->run(); \ No newline at end of file diff --git a/bootstrap/helpers.php b/bootstrap/helpers.php index f4deb13..1a8674a 100644 --- a/bootstrap/helpers.php +++ b/bootstrap/helpers.php @@ -21,20 +21,6 @@ function status($code = 404) { f3()->error($code); } -function view($template, array $data = []) -{ - Response::instance()->view($template, $data); - exit(); -} -function response($key, $val = null) -{ - if(!is_array($key)) { - $key = [$key => $val]; - } - header('Content-Type: application/json; charset='.f3()->CHARSET); - echo json_encode($key); - exit(); -} function reroute($where) { f3()->reroute($where); @@ -46,6 +32,30 @@ function is_api($path) } return false; } +function view($template, array $data = []) +{ + return Response::instance()->view($template, $data); +} +function response($key, $val = null) +{ + return Response::instance()->json($key, $val); +} +function template($layout, $f3) +{ + $loc = null; + if(Str::contains($layout, '::')) { + $module = explode('::', $layout)[0]; + foreach(explode(';', $f3->UI) as $path) { + if(Str::contains($path, 'modules/'.$module) || Str::contains($path, str_ireplace('/', '', 'modules\/'.$module))) { + $loc = str_ireplace($module.'::', '', $path.$layout); + break; + } + } + }else{ + $loc = $layout; + } + return $loc; +} function generateKey($chiper = 'AES-256-CBC') { return 'base64:'.generateEncKey($chiper); diff --git a/composer.lock b/composer.lock index bd38a12..860cf10 100644 --- a/composer.lock +++ b/composer.lock @@ -1,23 +1,23 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2b591aa83b9e980e59249b74139afcb3", + "content-hash": "17d8092e0ea1db0c913519b776c74122", "packages": [ { "name": "anandpilania/f3-validator", - "version": "v1.1.2", + "version": "v1.2.2", "source": { "type": "git", "url": "https://github.com/AnandPilania/f3-validator.git", - "reference": "a076f4f260175c1f260272f08f036db0cfb8e194" + "reference": "b3942939071845cee678cf5414a87ba59a4c318c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/AnandPilania/f3-validator/zipball/a076f4f260175c1f260272f08f036db0cfb8e194", - "reference": "a076f4f260175c1f260272f08f036db0cfb8e194", + "url": "https://api.github.com/repos/AnandPilania/f3-validator/zipball/b3942939071845cee678cf5414a87ba59a4c318c", + "reference": "b3942939071845cee678cf5414a87ba59a4c318c", "shasum": "" }, "require": { @@ -47,20 +47,20 @@ "fatfree", "fatfreeframework" ], - "time": "2017-11-11T14:11:24+00:00" + "time": "2018-09-01T12:20:24+00:00" }, { "name": "bcosca/fatfree-core", - "version": "3.6.3", + "version": "3.6.4", "source": { "type": "git", "url": "https://github.com/bcosca/fatfree-core.git", - "reference": "b35fe7ae88f6f3667c50c36563b50e5a1ec36bb1" + "reference": "4d1a08829b14468c4821c03b9a5f3b6e4bc981e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bcosca/fatfree-core/zipball/b35fe7ae88f6f3667c50c36563b50e5a1ec36bb1", - "reference": "b35fe7ae88f6f3667c50c36563b50e5a1ec36bb1", + "url": "https://api.github.com/repos/bcosca/fatfree-core/zipball/4d1a08829b14468c4821c03b9a5f3b6e4bc981e5", + "reference": "4d1a08829b14468c4821c03b9a5f3b6e4bc981e5", "shasum": "" }, "require": { @@ -78,7 +78,7 @@ ], "description": "A powerful yet easy-to-use PHP micro-framework designed to help you build dynamic and robust Web applications - fast!", "homepage": "http://fatfreeframework.com/", - "time": "2017-12-31T14:47:39+00:00" + "time": "2018-04-19T17:35:23+00:00" }, { "name": "firebase/php-jwt", @@ -128,16 +128,16 @@ }, { "name": "ikkez/f3-assets", - "version": "v1.1.2", + "version": "v1.1.6", "source": { "type": "git", "url": "https://github.com/ikkez/f3-assets.git", - "reference": "3df6210393f279f04cd3f3936253cdc194a79e54" + "reference": "99fc507b365a166e9a9e4ba2e3da0621d290d346" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ikkez/f3-assets/zipball/3df6210393f279f04cd3f3936253cdc194a79e54", - "reference": "3df6210393f279f04cd3f3936253cdc194a79e54", + "url": "https://api.github.com/repos/ikkez/f3-assets/zipball/99fc507b365a166e9a9e4ba2e3da0621d290d346", + "reference": "99fc507b365a166e9a9e4ba2e3da0621d290d346", "shasum": "" }, "type": "library", @@ -159,20 +159,20 @@ "fatfree", "minify" ], - "time": "2017-09-26T23:19:44+00:00" + "time": "2018-08-21T10:24:47+00:00" }, { "name": "ikkez/f3-cortex", - "version": "v1.5.0", + "version": "v1.5.1", "source": { "type": "git", "url": "https://github.com/ikkez/f3-cortex.git", - "reference": "2cd1712eeae33c9d05716e8a1d8e3796f0ea4016" + "reference": "c5a481070271b31fb5b4537b18fee9fc28cbcd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ikkez/f3-cortex/zipball/2cd1712eeae33c9d05716e8a1d8e3796f0ea4016", - "reference": "2cd1712eeae33c9d05716e8a1d8e3796f0ea4016", + "url": "https://api.github.com/repos/ikkez/f3-cortex/zipball/c5a481070271b31fb5b4537b18fee9fc28cbcd88", + "reference": "c5a481070271b31fb5b4537b18fee9fc28cbcd88", "shasum": "" }, "require": { @@ -197,7 +197,7 @@ "orm", "sql" ], - "time": "2017-06-30T13:23:09+00:00" + "time": "2018-04-25T10:51:45+00:00" }, { "name": "ikkez/f3-events", @@ -381,12 +381,12 @@ "source": { "type": "git", "url": "https://github.com/ikkez/f3-opauth.git", - "reference": "85b541da8b75d1e1d97d672b4627884d9c52ec83" + "reference": "67ebf5dbb5ee702ab0c61e32192b0a06fcdd1fa3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ikkez/f3-opauth/zipball/85b541da8b75d1e1d97d672b4627884d9c52ec83", - "reference": "85b541da8b75d1e1d97d672b4627884d9c52ec83", + "url": "https://api.github.com/repos/ikkez/f3-opauth/zipball/67ebf5dbb5ee702ab0c61e32192b0a06fcdd1fa3", + "reference": "67ebf5dbb5ee702ab0c61e32192b0a06fcdd1fa3", "shasum": "" }, "type": "library", @@ -409,7 +409,7 @@ "fatfree", "oauth" ], - "time": "2017-02-16T23:23:23+00:00" + "time": "2018-08-26T20:42:07+00:00" }, { "name": "ikkez/f3-pagination", @@ -450,16 +450,16 @@ }, { "name": "ikkez/f3-schema-builder", - "version": "v2.2.1", + "version": "v2.2.3", "source": { "type": "git", "url": "https://github.com/ikkez/f3-schema-builder.git", - "reference": "9c15676247e6f85a28c9f5db126b9030cdc5dc05" + "reference": "42d8f3f0a117dce29ab3fe30ef46fafb419224e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ikkez/f3-schema-builder/zipball/9c15676247e6f85a28c9f5db126b9030cdc5dc05", - "reference": "9c15676247e6f85a28c9f5db126b9030cdc5dc05", + "url": "https://api.github.com/repos/ikkez/f3-schema-builder/zipball/42d8f3f0a117dce29ab3fe30ef46fafb419224e3", + "reference": "42d8f3f0a117dce29ab3fe30ef46fafb419224e3", "shasum": "" }, "type": "library", @@ -479,7 +479,7 @@ "fatfree", "sql" ], - "time": "2017-04-25T20:19:11+00:00" + "time": "2018-05-15T13:03:21+00:00" }, { "name": "rafamds/f3-falsum", @@ -645,12 +645,12 @@ ], "packages-dev": [], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": { "ikkez/f3-events": 20, "ikkez/f3-opauth": 20 }, - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, "platform": [], "platform-dev": [] diff --git a/helpers/ApiController.php b/helpers/ApiController.php index 8c7b423..6e21914 100644 --- a/helpers/ApiController.php +++ b/helpers/ApiController.php @@ -1,4 +1,7 @@ initMiddlewares(); + } + public function initMiddlewares() + {} public function validate($data = [], $rules = []) { return Validator::instance()->validate($data, $rules); diff --git a/helpers/Model.php b/helpers/Model.php index 52ee54a..bef65ee 100644 --- a/helpers/Model.php +++ b/helpers/Model.php @@ -1,12 +1,12 @@ init(); } @@ -116,6 +116,6 @@ static public function run() static public function autoload($class) { $file = self::$path . str_replace('\\', '/', $class) . '.php'; - require $file; + if(file_exists($file)) { require $file; } } } \ No newline at end of file diff --git a/helpers/Response.php b/helpers/Response.php index 9b91b91..1d23cc2 100644 --- a/helpers/Response.php +++ b/helpers/Response.php @@ -10,26 +10,21 @@ public function __construct() public function view($layout, $data = []) { - $loc = null; - if(Str::contains($layout, '::')) { - $module = explode('::', $layout)[0]; - foreach(explode(';', $this->f3->UI) as $path) { - if(Str::contains($path, 'modules/'.$module) || Str::contains($path, str_ireplace('/', '', 'modules\/'.$module))) { - $loc = str_ireplace($module.'::', '', $path.$layout); - break; - } - } - }else{ - $loc = $layout; - } - $f3 = f3(); $f3->mset($data); + $loc = template($layout, $f3); //$f3->set('content', hasExtension($template)); echo Template::instance()->render($loc.'.htm');//'layouts/app.htm'); exit(); } public function json($data = [], $status = '200') - {} + { + if(!is_array($key)) { + $key = [$key => $val]; + } + header('Content-Type: application/json; charset='.f3()->CHARSET); + echo json_encode($key); + exit(); + } } \ No newline at end of file diff --git a/helpers/WebController.php b/helpers/WebController.php index 3e9cae6..cb45656 100644 --- a/helpers/WebController.php +++ b/helpers/WebController.php @@ -1,4 +1,7 @@ false ), 'api_token' => array( - 'has-one' => array('\Auth\Models\Token', 'user') + 'has-one' => array(Token::class, 'user') ), 'password_token' => array( - 'has-one' => array('\Auth\Models\PasswordReset', 'user') + 'has-one' => array(PasswordReset::class, 'user') ), 'activation_token' => array( - 'has-one' => array('\Auth\Models\Activation', 'user') + 'has-one' => array(Activation::class, 'user') ), ); public function set_first_name($fName) diff --git a/modules/auth/repositories/ActivationRepository.php b/modules/auth/repositories/ActivationRepository.php new file mode 100644 index 0000000..90582a7 --- /dev/null +++ b/modules/auth/repositories/ActivationRepository.php @@ -0,0 +1,6 @@ + + + + + + + + + signup + + \ No newline at end of file diff --git a/modules/index/Module.php b/modules/core/Module.php similarity index 64% rename from modules/index/Module.php rename to modules/core/Module.php index 5122063..97787e0 100644 --- a/modules/index/Module.php +++ b/modules/core/Module.php @@ -1,12 +1,16 @@ f3->env === 'dev') { $this->f3->set('DEBUG', 3); Falsum::handler(3); + $this->loadConfigFrom(__DIR__.'/config/reloadr.php', true); + $this->f3->route('GET @reloadr: /reloadr', 'Core\Controllers\ReloadrController->init'); + }else{ + $this->f3->set('ONERROR', 'Core\Controllers\ErrorController->init'); } $this->configureDB(); @@ -30,6 +38,7 @@ public function init() $this->loadLangFrom($res.'/lang'); $this->loadViewsFrom($res.'/views'); $this->loadAssetsFrom($res.'/assets'); + $this->configurePackages(); } protected function configureDB() @@ -57,6 +66,29 @@ protected function configureSession() } } + protected function configurePackages() + { + if(isset($this->f3->packages)) { + if($this->f3->packages['middlewares']) { + $this->f3->set('middleware', Middleware::instance()); + } + if($this->f3->packages['events']) { + Event::instance(); + } + if($this->f3->packages['mailer']) { + $this->loadConfigFrom(__DIR__.'/config/mailer.php'); + Mailer::initTracking(); + } + if($this->f3->packages['assets']) { + $this->loadConfigFrom(__DIR__.'/config/assets.php'); + Assets::instance(); + $this->f3->set('ASSETS.onFileNotFound',function($file) use ($f3){ + echo 'file not found: '.$file; + }); + } + } + } + protected function get_db_type($type) { $type = strtolower($type); diff --git a/modules/index/config.php b/modules/core/config.php similarity index 74% rename from modules/index/config.php rename to modules/core/config.php index a8d5f6f..73539b3 100644 --- a/modules/index/config.php +++ b/modules/core/config.php @@ -17,5 +17,11 @@ 'session_db' => true, 'csrf' => true, 'cache' => true, - 'TEMP' => root_path('/storage/temp/') + 'TEMP' => root_path('/storage/temp/'), + 'packages' => [ + 'assets' => true, + 'mailer' => true, + 'events' => true, + 'middlewares' => true + ] ]; \ No newline at end of file diff --git a/modules/core/config/assets.php b/modules/core/config/assets.php new file mode 100644 index 0000000..33d3f91 --- /dev/null +++ b/modules/core/config/assets.php @@ -0,0 +1,29 @@ + [ + 'auto_include' => true, + 'greedy' => false, + 'filter' => [ + 'js' => 'minify,combine', + 'css' => 'minify,combine', + ], + 'public_path' => '/compressed/', + //'combine' => [ + //'public_path' => 'ui-assets/compressed/', + //'exclude' => ".*(\/plugin\/).*", + //'slots' => [ + //'30' => 'custom', + //], + //], + //'minify' => [ + //'public_path' => 'ui-assets/compressed/', + //'exclude' => ".*(.min.).*" + //'inline' => true + //], + 'timestamps' => true + //'fixRelativePaths' => 'relative', + //'handle_inline' = true + //'prepend_base' = true + ] +]; \ No newline at end of file diff --git a/modules/core/config/mailer.php b/modules/core/config/mailer.php new file mode 100644 index 0000000..19b8ba2 --- /dev/null +++ b/modules/core/config/mailer.php @@ -0,0 +1,24 @@ + [ + 'smtp' => [ + 'host' => 'smtp.domain.com', + 'port' => 25, + 'user' => 'username', + 'pw' => 'password', + 'scheme' => null, // SSL, TLS + ], + 'from_mail' => 'info@domain.de', + 'from_name' => 'Web Application', + 'errors_to' => 'error@domain.com', + 'return_to' => 'bounce@domain.com', + 'on' => [ + 'failure' => '\MailTest::logError', + 'ping' => '\MailTest::traceMail', + 'jump' => '\MailTest::traceClick', + 'jumplinks' => true, + 'storage_path' => root_path('storage/logs/') + ] + ] +]; \ No newline at end of file diff --git a/modules/core/config/reloadr.php b/modules/core/config/reloadr.php new file mode 100644 index 0000000..335f6f1 --- /dev/null +++ b/modules/core/config/reloadr.php @@ -0,0 +1,13 @@ + [ + 'freq' => 5000, + 'dirs' => [ 'resources/', 'public/assets/' ], + 'files' => null, + 'filter' => [ + 'except' => '.git', + 'accept' => [ 'php', 'htm', 'html', 'css', 'js' ] + ] + ] +]; \ No newline at end of file diff --git a/modules/core/controllers/ErrorController.php b/modules/core/controllers/ErrorController.php new file mode 100644 index 0000000..15ffe93 --- /dev/null +++ b/modules/core/controllers/ErrorController.php @@ -0,0 +1,13 @@ +get('reloadr'); + $filter = $config['filter']; + + if(!empty($dirs = $config['dirs']?:array())){ + foreach($dirs as $dir){ + $dir = $root_path.$dir; + if(file_exists($dir)){ + foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS)) as $file){ + $this->filterExt($file, $filter); + } + } + } + } + + if(!empty($files = $config['files']?:array())){ + foreach($files as $file){ + $file = $root_path.$file; + if($file_exists($file)){ + $this->filterExt($file, $filter); + } + } + } + + json($this->list); + } + + protected function filterExt($file, array $filter = []) { + $except = (null !== $filter['except'] ? $filter['except'] : []); + $accept = (null !== $filter['accept'] ? $filter['accept'] : []); + + if(!empty($except)){ + foreach($except as $ext){ + if(pathinfo($file, PATHINFO_EXTENSION) !== strtolower($ext)){ + $this->list[] = filemtime($file); + } + } + } + + if(!empty($accept)){ + foreach($accept as $ext){ + if(pathinfo($file, PATHINFO_EXTENSION) === strtolower($ext)){ + $this->list[] = filemtime($file); + } + } + } + } +} \ No newline at end of file diff --git a/modules/index/resources/lang/en.php b/modules/core/resources/lang/en.php similarity index 100% rename from modules/index/resources/lang/en.php rename to modules/core/resources/lang/en.php diff --git a/modules/index/resources/views/index.htm b/modules/core/resources/views/index.htm similarity index 100% rename from modules/index/resources/views/index.htm rename to modules/core/resources/views/index.htm diff --git a/modules/core/routes.php b/modules/core/routes.php new file mode 100644 index 0000000..edf601d --- /dev/null +++ b/modules/core/routes.php @@ -0,0 +1,3 @@ +route('GET @getIndex: /', 'Core\Controllers\IndexController->get'); \ No newline at end of file diff --git a/modules/index/routes.php b/modules/index/routes.php deleted file mode 100644 index de22086..0000000 --- a/modules/index/routes.php +++ /dev/null @@ -1,3 +0,0 @@ -route('GET @getIndex: /', 'Index\Controllers\IndexController->get'); \ No newline at end of file diff --git a/modules/installer/Module.php b/modules/installer/Module.php index 7ec27d2..564d2ce 100644 --- a/modules/installer/Module.php +++ b/modules/installer/Module.php @@ -13,15 +13,17 @@ class Module extends Modules public function init() { $this->loadConfigFrom(__DIR__.'/config.php', true); - $this->f3->route('GET|POST @installer: /install/@step', 'Installer\Controller->init'); - if(!file_exists(root_path('storage/app/installed'))) { - $res = __DIR__.'/resources'; - $this->loadLangFrom($res.'/lang'); - $this->loadViewsFrom($res.'/views'); - $this->loadAssetsFrom($res.'/assets'); - if(!Route::instance()->is('/install')) { - $this->f3->reroute('/install/start'); - die(); + if($this->f3->get('installer.enabled')) { + $this->f3->route('GET|POST @installer: /install/@step', 'Installer\Controller->init'); + if(!file_exists(root_path('storage/app/installed'))) { + $res = __DIR__.'/resources'; + $this->loadLangFrom($res.'/lang'); + $this->loadViewsFrom($res.'/views'); + $this->loadAssetsFrom($res.'/assets'); + if(!Route::instance()->is('/install')) { + $this->f3->reroute('/install/start'); + die(); + } } } } diff --git a/modules/installer/config.php b/modules/installer/config.php index b993871..4a74d72 100644 --- a/modules/installer/config.php +++ b/modules/installer/config.php @@ -1,3 +1,5 @@ false +]; \ No newline at end of file diff --git a/modules/oauth/Loginer.php b/modules/oauth/Loginer.php new file mode 100644 index 0000000..ce55da6 --- /dev/null +++ b/modules/oauth/Loginer.php @@ -0,0 +1,29 @@ +app = $app; + $this->loginType = $data['loginer']; + $this->config = $data['config']; + $this->model = new Model(); + + if (file_exists($file = $this->config['src'].$this->loginType."/login.php")) { + include_once $file; + $login = new \Login($app, $this->config, $this); + } else { + exit("Include File Not Exists"); + } + } + + public function user($data) { + $user = $this->model->load(array("oauth = ? AND uid = ?", $data->oauth, $data->uid)); + if($user->dry()) { $user->reset(); } + $user->copyFrom($data, array_keys($user->getFieldConfiguration())); + $user->date_modified = date("Y-m-d H:i:s", time()); + $user->save(); + } +} diff --git a/modules/oauth/Module.php b/modules/oauth/Module.php new file mode 100644 index 0000000..5585692 --- /dev/null +++ b/modules/oauth/Module.php @@ -0,0 +1,22 @@ +exclude(__DIR__.'/src/*'); + $this->loadConfigFrom(__DIR__.'/config.php', true); + $this->loadRoutesFrom(__DIR__.'/routes.php'); + + $res = __DIR__.'/resources'; + $this->loadLangFrom($res.'/lang'); + $this->loadViewsFrom($res.'/views'); + $this->loadAssetsFrom($res.'/assets'); + } +} \ No newline at end of file diff --git a/modules/oauth/config.php b/modules/oauth/config.php new file mode 100644 index 0000000..a491d9d --- /dev/null +++ b/modules/oauth/config.php @@ -0,0 +1,25 @@ + dirname(__FILE__).'/src/', + "login_url" => "http://localhost:8888/oauth/login", + "return_url" => "http://localhost:8888/oauth/example", + + "facebook" => array( + "status" => 1, + "app_id" => "167885977352", + "app_secret" => "70cdc6459125f3ce8327fe5ece09f", + "default_graph_version" => "v2.5", + ), + "google" => array( + "status" => 1, + "clientId" => "1093260479743-4s3u00lai3aa420c8t4j3v2qpdri.apps.googleusercontent.com", + "clientSecret" => "ErEcnUptfXP0FO2-15Xt", + "ApplicationName" => " Your App Name ", + ), + "twitter" => array( + "status" => 1, + "consumer_key" => "iZO5Ln9bcIX3F1mXOqIiODN", + "consumer_secret" => "9vPPjgkSbf7fV5YxOwD26Z8gn2kAlnrB6ntAAHqsknHTfsR", + ) +]; \ No newline at end of file diff --git a/modules/oauth/controllers/OAuthController.php b/modules/oauth/controllers/OAuthController.php new file mode 100644 index 0000000..679305f --- /dev/null +++ b/modules/oauth/controllers/OAuthController.php @@ -0,0 +1,41 @@ +get('oauth'); + $oauth = $app->get('GET.oauth'); + + if(!$oauth) { + exit("login url is Not valid"); + } + + if(!isset($_SESSION['sloginer'])) { + if(in_array($oauth, array_keys($config)) == false || @$config[$oauth]['status'] != 1) { + exit("Login Type Not allowed or Not exists"); + } + } + + $loginer = new Loginer($app, [ + "loginer" => $oauth, + "config" => $config + ]); + } + + public function logout($f3) + { + $f3->clear('SESSION.sloginer'); + reroute($f3->get('oauth.return_url')); + } + + public function example($f3) + { + echo 'example'; + } +} \ No newline at end of file diff --git a/modules/oauth/example.php b/modules/oauth/example.php new file mode 100644 index 0000000..ba6915b --- /dev/null +++ b/modules/oauth/example.php @@ -0,0 +1,64 @@ + +* @copyright 2016 Application Layout PHP +* @version 1.0 +* @package AppLayout PHP +* @subpackage Social Loginer +* @link http://www.elbahja.me +*/ + +session_start(); + +include('loginer_config.php'); + +if (!isset($_SESSION['sloginer'])) { + +echo "

Login with Google: Google

"; + +echo "Login with Facebook: facebook

"; + +echo "Login with Twitter: twitter

"; + +}else{ + +$dbconn = new mysqli($db_config['host'], $db_config['user'], $db_config['pass'], $db_config['db_name']); + +if (!$dbconn){ + die(" Failed connect to MySQL "); +} + +$userid = $dbconn->real_escape_string($_SESSION['sloginer']['uid']); +$oauth = $dbconn->real_escape_string($_SESSION['sloginer']['oauth']); + +if($userinfo = $dbconn->query("SELECT * FROM $db_config[users_table] WHERE uid ='$userid' AND oauth ='$oauth'")) { + + $userdata = $userinfo->fetch_assoc(); + + echo "
user Id : ". $userdata['id']; + echo "
user social Id : ". $userdata['uid']; + echo "
user name : ". $userdata['name']; + echo "
user email : ". $userdata['email']; + echo "
user gender : ". $userdata['gender']; + echo "
user last name : ". $userdata['last_name']; + echo "
user first name : ". $userdata['first_name']; + echo "
user picture : ". $userdata['picture']; + echo "
user date created : ". $userdata['date_created']; + echo "
user date modified : ". $userdata['date_modified']; +} + + + +echo "

Session :

"; +echo "Oauth Login : ". $_SESSION['sloginer']['oauth']; + +echo "

Userid : ". $_SESSION['sloginer']['uid']; + +echo "

User Name : ". $_SESSION['sloginer']['name']; + +echo "

Logout : Logout
"; + +} + +?> \ No newline at end of file diff --git a/modules/oauth/models/OAuth.php b/modules/oauth/models/OAuth.php new file mode 100644 index 0000000..6b65d29 --- /dev/null +++ b/modules/oauth/models/OAuth.php @@ -0,0 +1,49 @@ + array( + 'type' => Schema::DT_INT, + ), + 'oauth' => array( + 'type' => Schema::DT_VARCHAR256, + ), + 'uid' => array( + 'type' => Schema::DT_VARCHAR128, + ), + 'name' => array( + 'type' => Schema::DT_VARCHAR128, + ), + 'email' => array( + 'type' => Schema::DT_VARCHAR256, + ), + 'first_name' => array( + 'type' => Schema::DT_VARCHAR256, + ), + 'last_name' => array( + 'type' => Schema::DT_VARCHAR256, + ), + 'gender' => array( + 'type' => Schema::DT_VARCHAR128, + ), + 'picture' => array( + 'type' => Schema::DT_VARCHAR256, + ), + 'date_created' => array( + 'type' => Schema::DT_TIMESTAMP, + 'default' => Schema::DF_CURRENT_TIMESTAMP + ), + 'date_modified' => array( + 'type' => Schema::DT_TIMESTAMP, + 'default' => '' + ), + ); +} \ No newline at end of file diff --git a/modules/oauth/routes.php b/modules/oauth/routes.php new file mode 100644 index 0000000..6f1bd5e --- /dev/null +++ b/modules/oauth/routes.php @@ -0,0 +1,5 @@ +route('GET /oauth/login', 'OAuth\Controllers\OAuthController->login'); +$app->route('GET /oauth/logout', 'OAuth\Controllers\OAuthController->logout'); +$app->route('GET /oauth/example', 'OAuth\Controllers\OAuthController->example'); \ No newline at end of file diff --git a/modules/oauth/src/facebook/Authentication/AccessToken.php b/modules/oauth/src/facebook/Authentication/AccessToken.php new file mode 100644 index 0000000..582ea61 --- /dev/null +++ b/modules/oauth/src/facebook/Authentication/AccessToken.php @@ -0,0 +1,160 @@ +value = $accessToken; + if ($expiresAt) { + $this->setExpiresAtFromTimeStamp($expiresAt); + } + } + + /** + * Generate an app secret proof to sign a request to Graph. + * + * @param string $appSecret The app secret. + * + * @return string + */ + public function getAppSecretProof($appSecret) + { + return hash_hmac('sha256', $this->value, $appSecret); + } + + /** + * Getter for expiresAt. + * + * @return \DateTime|null + */ + public function getExpiresAt() + { + return $this->expiresAt; + } + + /** + * Determines whether or not this is an app access token. + * + * @return bool + */ + public function isAppAccessToken() + { + return strpos($this->value, '|') !== false; + } + + /** + * Determines whether or not this is a long-lived token. + * + * @return bool + */ + public function isLongLived() + { + if ($this->expiresAt) { + return $this->expiresAt->getTimestamp() > time() + (60 * 60 * 2); + } + + if ($this->isAppAccessToken()) { + return true; + } + + return false; + } + + /** + * Checks the expiration of the access token. + * + * @return boolean|null + */ + public function isExpired() + { + if ($this->getExpiresAt() instanceof \DateTime) { + return $this->getExpiresAt()->getTimestamp() < time(); + } + + if ($this->isAppAccessToken()) { + return false; + } + + return null; + } + + /** + * Returns the access token as a string. + * + * @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * Returns the access token as a string. + * + * @return string + */ + public function __toString() + { + return $this->getValue(); + } + + /** + * Setter for expires_at. + * + * @param int $timeStamp + */ + protected function setExpiresAtFromTimeStamp($timeStamp) + { + $dt = new \DateTime(); + $dt->setTimestamp($timeStamp); + $this->expiresAt = $dt; + } +} diff --git a/modules/oauth/src/facebook/Authentication/AccessTokenMetadata.php b/modules/oauth/src/facebook/Authentication/AccessTokenMetadata.php new file mode 100644 index 0000000..f302a6d --- /dev/null +++ b/modules/oauth/src/facebook/Authentication/AccessTokenMetadata.php @@ -0,0 +1,390 @@ +metadata = $metadata['data']; + + $this->castTimestampsToDateTime(); + } + + /** + * Returns a value from the metadata. + * + * @param string $field The property to retrieve. + * @param mixed $default The default to return if the property doesn't exist. + * + * @return mixed + */ + public function getField($field, $default = null) + { + if (isset($this->metadata[$field])) { + return $this->metadata[$field]; + } + + return $default; + } + + /** + * Returns a value from the metadata. + * + * @param string $field The property to retrieve. + * @param mixed $default The default to return if the property doesn't exist. + * + * @return mixed + * + * @deprecated 5.0.0 getProperty() has been renamed to getField() + * @todo v6: Remove this method + */ + public function getProperty($field, $default = null) + { + return $this->getField($field, $default); + } + + /** + * Returns a value from a child property in the metadata. + * + * @param string $parentField The parent property. + * @param string $field The property to retrieve. + * @param mixed $default The default to return if the property doesn't exist. + * + * @return mixed + */ + public function getChildProperty($parentField, $field, $default = null) + { + if (!isset($this->metadata[$parentField])) { + return $default; + } + + if (!isset($this->metadata[$parentField][$field])) { + return $default; + } + + return $this->metadata[$parentField][$field]; + } + + /** + * Returns a value from the error metadata. + * + * @param string $field The property to retrieve. + * @param mixed $default The default to return if the property doesn't exist. + * + * @return mixed + */ + public function getErrorProperty($field, $default = null) + { + return $this->getChildProperty('error', $field, $default); + } + + /** + * Returns a value from the "metadata" metadata. *Brain explodes* + * + * @param string $field The property to retrieve. + * @param mixed $default The default to return if the property doesn't exist. + * + * @return mixed + */ + public function getMetadataProperty($field, $default = null) + { + return $this->getChildProperty('metadata', $field, $default); + } + + /** + * The ID of the application this access token is for. + * + * @return string|null + */ + public function getAppId() + { + return $this->getField('app_id'); + } + + /** + * Name of the application this access token is for. + * + * @return string|null + */ + public function getApplication() + { + return $this->getField('application'); + } + + /** + * Any error that a request to the graph api + * would return due to the access token. + * + * @return bool|null + */ + public function isError() + { + return $this->getField('error') !== null; + } + + /** + * The error code for the error. + * + * @return int|null + */ + public function getErrorCode() + { + return $this->getErrorProperty('code'); + } + + /** + * The error message for the error. + * + * @return string|null + */ + public function getErrorMessage() + { + return $this->getErrorProperty('message'); + } + + /** + * The error subcode for the error. + * + * @return int|null + */ + public function getErrorSubcode() + { + return $this->getErrorProperty('subcode'); + } + + /** + * DateTime when this access token expires. + * + * @return \DateTime|null + */ + public function getExpiresAt() + { + return $this->getField('expires_at'); + } + + /** + * Whether the access token is still valid or not. + * + * @return boolean|null + */ + public function getIsValid() + { + return $this->getField('is_valid'); + } + + /** + * DateTime when this access token was issued. + * + * Note that the issued_at field is not returned + * for short-lived access tokens. + * + * @see https://developers.facebook.com/docs/facebook-login/access-tokens#debug + * + * @return \DateTime|null + */ + public function getIssuedAt() + { + return $this->getField('issued_at'); + } + + /** + * General metadata associated with the access token. + * Can contain data like 'sso', 'auth_type', 'auth_nonce'. + * + * @return array|null + */ + public function getMetadata() + { + return $this->getField('metadata'); + } + + /** + * The 'sso' child property from the 'metadata' parent property. + * + * @return string|null + */ + public function getSso() + { + return $this->getMetadataProperty('sso'); + } + + /** + * The 'auth_type' child property from the 'metadata' parent property. + * + * @return string|null + */ + public function getAuthType() + { + return $this->getMetadataProperty('auth_type'); + } + + /** + * The 'auth_nonce' child property from the 'metadata' parent property. + * + * @return string|null + */ + public function getAuthNonce() + { + return $this->getMetadataProperty('auth_nonce'); + } + + /** + * For impersonated access tokens, the ID of + * the page this token contains. + * + * @return string|null + */ + public function getProfileId() + { + return $this->getField('profile_id'); + } + + /** + * List of permissions that the user has granted for + * the app in this access token. + * + * @return array + */ + public function getScopes() + { + return $this->getField('scopes'); + } + + /** + * The ID of the user this access token is for. + * + * @return string|null + */ + public function getUserId() + { + return $this->getField('user_id'); + } + + /** + * Ensures the app ID from the access token + * metadata is what we expect. + * + * @param string $appId + * + * @throws FacebookSDKException + */ + public function validateAppId($appId) + { + if ($this->getAppId() !== $appId) { + throw new FacebookSDKException('Access token metadata contains unexpected app ID.', 401); + } + } + + /** + * Ensures the user ID from the access token + * metadata is what we expect. + * + * @param string $userId + * + * @throws FacebookSDKException + */ + public function validateUserId($userId) + { + if ($this->getUserId() !== $userId) { + throw new FacebookSDKException('Access token metadata contains unexpected user ID.', 401); + } + } + + /** + * Ensures the access token has not expired yet. + * + * @throws FacebookSDKException + */ + public function validateExpiration() + { + if (!$this->getExpiresAt() instanceof \DateTime) { + return; + } + + if ($this->getExpiresAt()->getTimestamp() < time()) { + throw new FacebookSDKException('Inspection of access token metadata shows that the access token has expired.', 401); + } + } + + /** + * Converts a unix timestamp into a DateTime entity. + * + * @param int $timestamp + * + * @return \DateTime + */ + private function convertTimestampToDateTime($timestamp) + { + $dt = new \DateTime(); + $dt->setTimestamp($timestamp); + + return $dt; + } + + /** + * Casts the unix timestamps as DateTime entities. + */ + private function castTimestampsToDateTime() + { + foreach (static::$dateProperties as $key) { + if (isset($this->metadata[$key])) { + $this->metadata[$key] = $this->convertTimestampToDateTime($this->metadata[$key]); + } + } + } +} diff --git a/modules/oauth/src/facebook/Authentication/OAuth2Client.php b/modules/oauth/src/facebook/Authentication/OAuth2Client.php new file mode 100644 index 0000000..8e364ec --- /dev/null +++ b/modules/oauth/src/facebook/Authentication/OAuth2Client.php @@ -0,0 +1,292 @@ +app = $app; + $this->client = $client; + $this->graphVersion = $graphVersion ?: Facebook::DEFAULT_GRAPH_VERSION; + } + + /** + * Returns the last FacebookRequest that was sent. + * Useful for debugging and testing. + * + * @return FacebookRequest|null + */ + public function getLastRequest() + { + return $this->lastRequest; + } + + /** + * Get the metadata associated with the access token. + * + * @param AccessToken|string $accessToken The access token to debug. + * + * @return AccessTokenMetadata + */ + public function debugToken($accessToken) + { + $accessToken = $accessToken instanceof AccessToken ? $accessToken->getValue() : $accessToken; + $params = ['input_token' => $accessToken]; + + $this->lastRequest = new FacebookRequest( + $this->app, + $this->app->getAccessToken(), + 'GET', + '/debug_token', + $params, + null, + $this->graphVersion + ); + $response = $this->client->sendRequest($this->lastRequest); + $metadata = $response->getDecodedBody(); + + return new AccessTokenMetadata($metadata); + } + + /** + * Generates an authorization URL to begin the process of authenticating a user. + * + * @param string $redirectUrl The callback URL to redirect to. + * @param array $scope An array of permissions to request. + * @param string $state The CSPRNG-generated CSRF value. + * @param array $params An array of parameters to generate URL. + * @param string $separator The separator to use in http_build_query(). + * + * @return string + */ + public function getAuthorizationUrl($redirectUrl, $state, array $scope = [], array $params = [], $separator = '&') + { + $params += [ + 'client_id' => $this->app->getId(), + 'state' => $state, + 'response_type' => 'code', + 'sdk' => 'php-sdk-' . Facebook::VERSION, + 'redirect_uri' => $redirectUrl, + 'scope' => implode(',', $scope) + ]; + + return static::BASE_AUTHORIZATION_URL . '/' . $this->graphVersion . '/dialog/oauth?' . http_build_query($params, null, $separator); + } + + /** + * Get a valid access token from a code. + * + * @param string $code + * @param string $redirectUri + * + * @return AccessToken + * + * @throws FacebookSDKException + */ + public function getAccessTokenFromCode($code, $redirectUri = '') + { + $params = [ + 'code' => $code, + 'redirect_uri' => $redirectUri, + ]; + + return $this->requestAnAccessToken($params); + } + + /** + * Exchanges a short-lived access token with a long-lived access token. + * + * @param AccessToken|string $accessToken + * + * @return AccessToken + * + * @throws FacebookSDKException + */ + public function getLongLivedAccessToken($accessToken) + { + $accessToken = $accessToken instanceof AccessToken ? $accessToken->getValue() : $accessToken; + $params = [ + 'grant_type' => 'fb_exchange_token', + 'fb_exchange_token' => $accessToken, + ]; + + return $this->requestAnAccessToken($params); + } + + /** + * Get a valid code from an access token. + * + * @param AccessToken|string $accessToken + * @param string $redirectUri + * + * @return AccessToken + * + * @throws FacebookSDKException + */ + public function getCodeFromLongLivedAccessToken($accessToken, $redirectUri = '') + { + $params = [ + 'redirect_uri' => $redirectUri, + ]; + + $response = $this->sendRequestWithClientParams('/oauth/client_code', $params, $accessToken); + $data = $response->getDecodedBody(); + + if (!isset($data['code'])) { + throw new FacebookSDKException('Code was not returned from Graph.', 401); + } + + return $data['code']; + } + + /** + * Send a request to the OAuth endpoint. + * + * @param array $params + * + * @return AccessToken + * + * @throws FacebookSDKException + */ + protected function requestAnAccessToken(array $params) + { + $response = $this->sendRequestWithClientParams('/oauth/access_token', $params); + $data = $response->getDecodedBody(); + + if (!isset($data['access_token'])) { + throw new FacebookSDKException('Access token was not returned from Graph.', 401); + } + + // Graph returns two different key names for expiration time + // on the same endpoint. Doh! :/ + $expiresAt = 0; + if (isset($data['expires'])) { + // For exchanging a short lived token with a long lived token. + // The expiration time in seconds will be returned as "expires". + $expiresAt = time() + $data['expires']; + } elseif (isset($data['expires_in'])) { + // For exchanging a code for a short lived access token. + // The expiration time in seconds will be returned as "expires_in". + // See: https://developers.facebook.com/docs/facebook-login/access-tokens#long-via-code + $expiresAt = time() + $data['expires_in']; + } + + return new AccessToken($data['access_token'], $expiresAt); + } + + /** + * Send a request to Graph with an app access token. + * + * @param string $endpoint + * @param array $params + * @param string|null $accessToken + * + * @return FacebookResponse + * + * @throws FacebookResponseException + */ + protected function sendRequestWithClientParams($endpoint, array $params, $accessToken = null) + { + $params += $this->getClientParams(); + + $accessToken = $accessToken ?: $this->app->getAccessToken(); + + $this->lastRequest = new FacebookRequest( + $this->app, + $accessToken, + 'GET', + $endpoint, + $params, + null, + $this->graphVersion + ); + + return $this->client->sendRequest($this->lastRequest); + } + + /** + * Returns the client_* params for OAuth requests. + * + * @return array + */ + protected function getClientParams() + { + return [ + 'client_id' => $this->app->getId(), + 'client_secret' => $this->app->getSecret(), + ]; + } +} diff --git a/modules/oauth/src/facebook/Exceptions/FacebookAuthenticationException.php b/modules/oauth/src/facebook/Exceptions/FacebookAuthenticationException.php new file mode 100644 index 0000000..449cf93 --- /dev/null +++ b/modules/oauth/src/facebook/Exceptions/FacebookAuthenticationException.php @@ -0,0 +1,33 @@ +response = $response; + $this->responseData = $response->getDecodedBody(); + + $errorMessage = $this->get('message', 'Unknown error from Graph.'); + $errorCode = $this->get('code', -1); + + parent::__construct($errorMessage, $errorCode, $previousException); + } + + /** + * A factory for creating the appropriate exception based on the response from Graph. + * + * @param FacebookResponse $response The response that threw the exception. + * + * @return FacebookResponseException + */ + public static function create(FacebookResponse $response) + { + $data = $response->getDecodedBody(); + + if (!isset($data['error']['code']) && isset($data['code'])) { + $data = ['error' => $data]; + } + + $code = isset($data['error']['code']) ? $data['error']['code'] : null; + $message = isset($data['error']['message']) ? $data['error']['message'] : 'Unknown error from Graph.'; + + $previousException = null; + + if (isset($data['error']['error_subcode'])) { + switch ($data['error']['error_subcode']) { + // Other authentication issues + case 458: + case 459: + case 460: + case 463: + case 464: + case 467: + return new static($response, new FacebookAuthenticationException($message, $code)); + } + } + + switch ($code) { + // Login status or token expired, revoked, or invalid + case 100: + case 102: + case 190: + return new static($response, new FacebookAuthenticationException($message, $code)); + + // Server issue, possible downtime + case 1: + case 2: + return new static($response, new FacebookServerException($message, $code)); + + // API Throttling + case 4: + case 17: + case 341: + return new static($response, new FacebookThrottleException($message, $code)); + + // Duplicate Post + case 506: + return new static($response, new FacebookClientException($message, $code)); + } + + // Missing Permissions + if ($code == 10 || ($code >= 200 && $code <= 299)) { + return new static($response, new FacebookAuthorizationException($message, $code)); + } + + // OAuth authentication error + if (isset($data['error']['type']) && $data['error']['type'] === 'OAuthException') { + return new static($response, new FacebookAuthenticationException($message, $code)); + } + + // All others + return new static($response, new FacebookOtherException($message, $code)); + } + + /** + * Checks isset and returns that or a default value. + * + * @param string $key + * @param mixed $default + * + * @return mixed + */ + private function get($key, $default = null) + { + if (isset($this->responseData['error'][$key])) { + return $this->responseData['error'][$key]; + } + + return $default; + } + + /** + * Returns the HTTP status code + * + * @return int + */ + public function getHttpStatusCode() + { + return $this->response->getHttpStatusCode(); + } + + /** + * Returns the sub-error code + * + * @return int + */ + public function getSubErrorCode() + { + return $this->get('error_subcode', -1); + } + + /** + * Returns the error type + * + * @return string + */ + public function getErrorType() + { + return $this->get('type', ''); + } + + /** + * Returns the raw response used to create the exception. + * + * @return string + */ + public function getRawResponse() + { + return $this->response->getBody(); + } + + /** + * Returns the decoded response used to create the exception. + * + * @return array + */ + public function getResponseData() + { + return $this->responseData; + } + + /** + * Returns the response entity used to create the exception. + * + * @return FacebookResponse + */ + public function getResponse() + { + return $this->response; + } +} diff --git a/modules/oauth/src/facebook/Exceptions/FacebookSDKException.php b/modules/oauth/src/facebook/Exceptions/FacebookSDKException.php new file mode 100644 index 0000000..03219b0 --- /dev/null +++ b/modules/oauth/src/facebook/Exceptions/FacebookSDKException.php @@ -0,0 +1,33 @@ +app = new FacebookApp($appId, $appSecret); + + $httpClientHandler = null; + if (isset($config['http_client_handler'])) { + if ($config['http_client_handler'] instanceof FacebookHttpClientInterface) { + $httpClientHandler = $config['http_client_handler']; + } elseif ($config['http_client_handler'] === 'curl') { + $httpClientHandler = new FacebookCurlHttpClient(); + } elseif ($config['http_client_handler'] === 'stream') { + $httpClientHandler = new FacebookStreamHttpClient(); + } elseif ($config['http_client_handler'] === 'guzzle') { + $httpClientHandler = new FacebookGuzzleHttpClient(); + } else { + throw new \InvalidArgumentException('The http_client_handler must be set to "curl", "stream", "guzzle", or be an instance of Facebook\HttpClients\FacebookHttpClientInterface'); + } + } + + $enableBeta = isset($config['enable_beta_mode']) && $config['enable_beta_mode'] === true; + $this->client = new FacebookClient($httpClientHandler, $enableBeta); + + if (isset($config['url_detection_handler'])) { + if ($config['url_detection_handler'] instanceof UrlDetectionInterface) { + $this->urlDetectionHandler = $config['url_detection_handler']; + } else { + throw new \InvalidArgumentException('The url_detection_handler must be an instance of Facebook\Url\UrlDetectionInterface'); + } + } + + if (isset($config['pseudo_random_string_generator'])) { + if ($config['pseudo_random_string_generator'] instanceof PseudoRandomStringGeneratorInterface) { + $this->pseudoRandomStringGenerator = $config['pseudo_random_string_generator']; + } elseif ($config['pseudo_random_string_generator'] === 'mcrypt') { + $this->pseudoRandomStringGenerator = new McryptPseudoRandomStringGenerator(); + } elseif ($config['pseudo_random_string_generator'] === 'openssl') { + $this->pseudoRandomStringGenerator = new OpenSslPseudoRandomStringGenerator(); + } elseif ($config['pseudo_random_string_generator'] === 'urandom') { + $this->pseudoRandomStringGenerator = new UrandomPseudoRandomStringGenerator(); + } else { + throw new \InvalidArgumentException('The pseudo_random_string_generator must be set to "mcrypt", "openssl", or "urandom", or be an instance of Facebook\PseudoRandomString\PseudoRandomStringGeneratorInterface'); + } + } + + if (isset($config['persistent_data_handler'])) { + if ($config['persistent_data_handler'] instanceof PersistentDataInterface) { + $this->persistentDataHandler = $config['persistent_data_handler']; + } elseif ($config['persistent_data_handler'] === 'session') { + $this->persistentDataHandler = new FacebookSessionPersistentDataHandler(); + } elseif ($config['persistent_data_handler'] === 'memory') { + $this->persistentDataHandler = new FacebookMemoryPersistentDataHandler(); + } else { + throw new \InvalidArgumentException('The persistent_data_handler must be set to "session", "memory", or be an instance of Facebook\PersistentData\PersistentDataInterface'); + } + } + + if (isset($config['default_access_token'])) { + $this->setDefaultAccessToken($config['default_access_token']); + } + + if (isset($config['default_graph_version'])) { + $this->defaultGraphVersion = $config['default_graph_version']; + } else { + // @todo v6: Throw an InvalidArgumentException if "default_graph_version" is not set + $this->defaultGraphVersion = static::DEFAULT_GRAPH_VERSION; + } + } + + /** + * Returns the FacebookApp entity. + * + * @return FacebookApp + */ + public function getApp() + { + return $this->app; + } + + /** + * Returns the FacebookClient service. + * + * @return FacebookClient + */ + public function getClient() + { + return $this->client; + } + + /** + * Returns the OAuth 2.0 client service. + * + * @return OAuth2Client + */ + public function getOAuth2Client() + { + if (!$this->oAuth2Client instanceof OAuth2Client) { + $app = $this->getApp(); + $client = $this->getClient(); + $this->oAuth2Client = new OAuth2Client($app, $client, $this->defaultGraphVersion); + } + + return $this->oAuth2Client; + } + + /** + * Returns the last response returned from Graph. + * + * @return FacebookResponse|FacebookBatchResponse|null + */ + public function getLastResponse() + { + return $this->lastResponse; + } + + /** + * Returns the URL detection handler. + * + * @return UrlDetectionInterface + */ + public function getUrlDetectionHandler() + { + if (!$this->urlDetectionHandler instanceof UrlDetectionInterface) { + $this->urlDetectionHandler = new FacebookUrlDetectionHandler(); + } + + return $this->urlDetectionHandler; + } + + /** + * Returns the default AccessToken entity. + * + * @return AccessToken|null + */ + public function getDefaultAccessToken() + { + return $this->defaultAccessToken; + } + + /** + * Sets the default access token to use with requests. + * + * @param AccessToken|string $accessToken The access token to save. + * + * @throws \InvalidArgumentException + */ + public function setDefaultAccessToken($accessToken) + { + if (is_string($accessToken)) { + $this->defaultAccessToken = new AccessToken($accessToken); + + return; + } + + if ($accessToken instanceof AccessToken) { + $this->defaultAccessToken = $accessToken; + + return; + } + + throw new \InvalidArgumentException('The default access token must be of type "string" or Facebook\AccessToken'); + } + + /** + * Returns the default Graph version. + * + * @return string + */ + public function getDefaultGraphVersion() + { + return $this->defaultGraphVersion; + } + + /** + * Returns the redirect login helper. + * + * @return FacebookRedirectLoginHelper + */ + public function getRedirectLoginHelper() + { + return new FacebookRedirectLoginHelper( + $this->getOAuth2Client(), + $this->persistentDataHandler, + $this->urlDetectionHandler, + $this->pseudoRandomStringGenerator + ); + } + + /** + * Returns the JavaScript helper. + * + * @return FacebookJavaScriptHelper + */ + public function getJavaScriptHelper() + { + return new FacebookJavaScriptHelper($this->app, $this->client, $this->defaultGraphVersion); + } + + /** + * Returns the canvas helper. + * + * @return FacebookCanvasHelper + */ + public function getCanvasHelper() + { + return new FacebookCanvasHelper($this->app, $this->client, $this->defaultGraphVersion); + } + + /** + * Returns the page tab helper. + * + * @return FacebookPageTabHelper + */ + public function getPageTabHelper() + { + return new FacebookPageTabHelper($this->app, $this->client, $this->defaultGraphVersion); + } + + /** + * Sends a GET request to Graph and returns the result. + * + * @param string $endpoint + * @param AccessToken|string|null $accessToken + * @param string|null $eTag + * @param string|null $graphVersion + * + * @return FacebookResponse + * + * @throws FacebookSDKException + */ + public function get($endpoint, $accessToken = null, $eTag = null, $graphVersion = null) + { + return $this->sendRequest( + 'GET', + $endpoint, + $params = [], + $accessToken, + $eTag, + $graphVersion + ); + } + + /** + * Sends a POST request to Graph and returns the result. + * + * @param string $endpoint + * @param array $params + * @param AccessToken|string|null $accessToken + * @param string|null $eTag + * @param string|null $graphVersion + * + * @return FacebookResponse + * + * @throws FacebookSDKException + */ + public function post($endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null) + { + return $this->sendRequest( + 'POST', + $endpoint, + $params, + $accessToken, + $eTag, + $graphVersion + ); + } + + /** + * Sends a DELETE request to Graph and returns the result. + * + * @param string $endpoint + * @param array $params + * @param AccessToken|string|null $accessToken + * @param string|null $eTag + * @param string|null $graphVersion + * + * @return FacebookResponse + * + * @throws FacebookSDKException + */ + public function delete($endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null) + { + return $this->sendRequest( + 'DELETE', + $endpoint, + $params, + $accessToken, + $eTag, + $graphVersion + ); + } + + /** + * Sends a request to Graph for the next page of results. + * + * @param GraphEdge $graphEdge The GraphEdge to paginate over. + * + * @return GraphEdge|null + * + * @throws FacebookSDKException + */ + public function next(GraphEdge $graphEdge) + { + return $this->getPaginationResults($graphEdge, 'next'); + } + + /** + * Sends a request to Graph for the previous page of results. + * + * @param GraphEdge $graphEdge The GraphEdge to paginate over. + * + * @return GraphEdge|null + * + * @throws FacebookSDKException + */ + public function previous(GraphEdge $graphEdge) + { + return $this->getPaginationResults($graphEdge, 'previous'); + } + + /** + * Sends a request to Graph for the next page of results. + * + * @param GraphEdge $graphEdge The GraphEdge to paginate over. + * @param string $direction The direction of the pagination: next|previous. + * + * @return GraphEdge|null + * + * @throws FacebookSDKException + */ + public function getPaginationResults(GraphEdge $graphEdge, $direction) + { + $paginationRequest = $graphEdge->getPaginationRequest($direction); + if (!$paginationRequest) { + return null; + } + + $this->lastResponse = $this->client->sendRequest($paginationRequest); + + // Keep the same GraphNode subclass + $subClassName = $graphEdge->getSubClassName(); + $graphEdge = $this->lastResponse->getGraphEdge($subClassName, false); + + return count($graphEdge) > 0 ? $graphEdge : null; + } + + /** + * Sends a request to Graph and returns the result. + * + * @param string $method + * @param string $endpoint + * @param array $params + * @param AccessToken|string|null $accessToken + * @param string|null $eTag + * @param string|null $graphVersion + * + * @return FacebookResponse + * + * @throws FacebookSDKException + */ + public function sendRequest($method, $endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null) + { + $accessToken = $accessToken ?: $this->defaultAccessToken; + $graphVersion = $graphVersion ?: $this->defaultGraphVersion; + $request = $this->request($method, $endpoint, $params, $accessToken, $eTag, $graphVersion); + + return $this->lastResponse = $this->client->sendRequest($request); + } + + /** + * Sends a batched request to Graph and returns the result. + * + * @param array $requests + * @param AccessToken|string|null $accessToken + * @param string|null $graphVersion + * + * @return FacebookBatchResponse + * + * @throws FacebookSDKException + */ + public function sendBatchRequest(array $requests, $accessToken = null, $graphVersion = null) + { + $accessToken = $accessToken ?: $this->defaultAccessToken; + $graphVersion = $graphVersion ?: $this->defaultGraphVersion; + $batchRequest = new FacebookBatchRequest( + $this->app, + $requests, + $accessToken, + $graphVersion + ); + + return $this->lastResponse = $this->client->sendBatchRequest($batchRequest); + } + + /** + * Instantiates a new FacebookRequest entity. + * + * @param string $method + * @param string $endpoint + * @param array $params + * @param AccessToken|string|null $accessToken + * @param string|null $eTag + * @param string|null $graphVersion + * + * @return FacebookRequest + * + * @throws FacebookSDKException + */ + public function request($method, $endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null) + { + $accessToken = $accessToken ?: $this->defaultAccessToken; + $graphVersion = $graphVersion ?: $this->defaultGraphVersion; + + return new FacebookRequest( + $this->app, + $accessToken, + $method, + $endpoint, + $params, + $eTag, + $graphVersion + ); + } + + /** + * Factory to create FacebookFile's. + * + * @param string $pathToFile + * + * @return FacebookFile + * + * @throws FacebookSDKException + */ + public function fileToUpload($pathToFile) + { + return new FacebookFile($pathToFile); + } + + /** + * Factory to create FacebookVideo's. + * + * @param string $pathToFile + * + * @return FacebookVideo + * + * @throws FacebookSDKException + */ + public function videoToUpload($pathToFile) + { + return new FacebookVideo($pathToFile); + } +} diff --git a/modules/oauth/src/facebook/FacebookApp.php b/modules/oauth/src/facebook/FacebookApp.php new file mode 100644 index 0000000..84956ce --- /dev/null +++ b/modules/oauth/src/facebook/FacebookApp.php @@ -0,0 +1,101 @@ +id = $id; + $this->secret = $secret; + } + + /** + * Returns the app ID. + * + * @return string + */ + public function getId() + { + return $this->id; + } + + /** + * Returns the app secret. + * + * @return string + */ + public function getSecret() + { + return $this->secret; + } + + /** + * Returns an app access token. + * + * @return AccessToken + */ + public function getAccessToken() + { + return new AccessToken($this->id . '|' . $this->secret); + } + + /** + * Serializes the FacebookApp entity as a string. + * + * @return string + */ + public function serialize() + { + return serialize([$this->id, $this->secret]); + } + + /** + * Unserializes a string as a FacebookApp entity. + * + * @param string $serialized + */ + public function unserialize($serialized) + { + list($id, $secret) = unserialize($serialized); + + $this->__construct($id, $secret); + } +} diff --git a/modules/oauth/src/facebook/FacebookBatchRequest.php b/modules/oauth/src/facebook/FacebookBatchRequest.php new file mode 100644 index 0000000..33c489c --- /dev/null +++ b/modules/oauth/src/facebook/FacebookBatchRequest.php @@ -0,0 +1,303 @@ +add($requests); + } + + /** + * A a new request to the array. + * + * @param FacebookRequest|array $request + * @param string|null $name + * + * @return FacebookBatchRequest + * + * @throws \InvalidArgumentException + */ + public function add($request, $name = null) + { + if (is_array($request)) { + foreach ($request as $key => $req) { + $this->add($req, $key); + } + + return $this; + } + + if (!$request instanceof FacebookRequest) { + throw new \InvalidArgumentException('Argument for add() must be of type array or FacebookRequest.'); + } + + $this->addFallbackDefaults($request); + $requestToAdd = [ + 'name' => $name, + 'request' => $request, + ]; + + // File uploads + $attachedFiles = $this->extractFileAttachments($request); + if ($attachedFiles) { + $requestToAdd['attached_files'] = $attachedFiles; + } + $this->requests[] = $requestToAdd; + + return $this; + } + + /** + * Ensures that the FacebookApp and access token fall back when missing. + * + * @param FacebookRequest $request + * + * @throws FacebookSDKException + */ + public function addFallbackDefaults(FacebookRequest $request) + { + if (!$request->getApp()) { + $app = $this->getApp(); + if (!$app) { + throw new FacebookSDKException('Missing FacebookApp on FacebookRequest and no fallback detected on FacebookBatchRequest.'); + } + $request->setApp($app); + } + + if (!$request->getAccessToken()) { + $accessToken = $this->getAccessToken(); + if (!$accessToken) { + throw new FacebookSDKException('Missing access token on FacebookRequest and no fallback detected on FacebookBatchRequest.'); + } + $request->setAccessToken($accessToken); + } + } + + /** + * Extracts the files from a request. + * + * @param FacebookRequest $request + * + * @return string|null + * + * @throws FacebookSDKException + */ + public function extractFileAttachments(FacebookRequest $request) + { + if (!$request->containsFileUploads()) { + return null; + } + + $files = $request->getFiles(); + $fileNames = []; + foreach ($files as $file) { + $fileName = uniqid(); + $this->addFile($fileName, $file); + $fileNames[] = $fileName; + } + + $request->resetFiles(); + + // @TODO Does Graph support multiple uploads on one endpoint? + return implode(',', $fileNames); + } + + /** + * Return the FacebookRequest entities. + * + * @return array + */ + public function getRequests() + { + return $this->requests; + } + + /** + * Prepares the requests to be sent as a batch request. + * + * @return string + */ + public function prepareRequestsForBatch() + { + $this->validateBatchRequestCount(); + + $params = [ + 'batch' => $this->convertRequestsToJson(), + 'include_headers' => true, + ]; + $this->setParams($params); + } + + /** + * Converts the requests into a JSON(P) string. + * + * @return string + */ + public function convertRequestsToJson() + { + $requests = []; + foreach ($this->requests as $request) { + $attachedFiles = isset($request['attached_files']) ? $request['attached_files'] : null; + $requests[] = $this->requestEntityToBatchArray($request['request'], $request['name'], $attachedFiles); + } + + return json_encode($requests); + } + + /** + * Validate the request count before sending them as a batch. + * + * @throws FacebookSDKException + */ + public function validateBatchRequestCount() + { + $batchCount = count($this->requests); + if ($batchCount === 0) { + throw new FacebookSDKException('There are no batch requests to send.'); + } elseif ($batchCount > 50) { + // Per: https://developers.facebook.com/docs/graph-api/making-multiple-requests#limits + throw new FacebookSDKException('You cannot send more than 50 batch requests at a time.'); + } + } + + /** + * Converts a Request entity into an array that is batch-friendly. + * + * @param FacebookRequest $request The request entity to convert. + * @param string|null $requestName The name of the request. + * @param string|null $attachedFiles Names of files associated with the request. + * + * @return array + */ + public function requestEntityToBatchArray(FacebookRequest $request, $requestName = null, $attachedFiles = null) + { + $compiledHeaders = []; + $headers = $request->getHeaders(); + foreach ($headers as $name => $value) { + $compiledHeaders[] = $name . ': ' . $value; + } + + $batch = [ + 'headers' => $compiledHeaders, + 'method' => $request->getMethod(), + 'relative_url' => $request->getUrl(), + ]; + + // Since file uploads are moved to the root request of a batch request, + // the child requests will always be URL-encoded. + $body = $request->getUrlEncodedBody()->getBody(); + if ($body) { + $batch['body'] = $body; + } + + if (isset($requestName)) { + $batch['name'] = $requestName; + } + + if (isset($attachedFiles)) { + $batch['attached_files'] = $attachedFiles; + } + + // @TODO Add support for "omit_response_on_success" + // @TODO Add support for "depends_on" + // @TODO Add support for JSONP with "callback" + + return $batch; + } + + /** + * Get an iterator for the items. + * + * @return ArrayIterator + */ + public function getIterator() + { + return new ArrayIterator($this->requests); + } + + /** + * @inheritdoc + */ + public function offsetSet($offset, $value) + { + $this->add($value, $offset); + } + + /** + * @inheritdoc + */ + public function offsetExists($offset) + { + return isset($this->requests[$offset]); + } + + /** + * @inheritdoc + */ + public function offsetUnset($offset) + { + unset($this->requests[$offset]); + } + + /** + * @inheritdoc + */ + public function offsetGet($offset) + { + return isset($this->requests[$offset]) ? $this->requests[$offset] : null; + } +} diff --git a/modules/oauth/src/facebook/FacebookBatchResponse.php b/modules/oauth/src/facebook/FacebookBatchResponse.php new file mode 100644 index 0000000..5ea765e --- /dev/null +++ b/modules/oauth/src/facebook/FacebookBatchResponse.php @@ -0,0 +1,154 @@ +batchRequest = $batchRequest; + + $request = $response->getRequest(); + $body = $response->getBody(); + $httpStatusCode = $response->getHttpStatusCode(); + $headers = $response->getHeaders(); + parent::__construct($request, $body, $httpStatusCode, $headers); + + $responses = $response->getDecodedBody(); + $this->setResponses($responses); + } + + /** + * Returns an array of FacebookResponse entities. + * + * @return array + */ + public function getResponses() + { + return $this->responses; + } + + /** + * The main batch response will be an array of requests so + * we need to iterate over all the responses. + * + * @param array $responses + */ + public function setResponses(array $responses) + { + $this->responses = []; + + foreach ($responses as $key => $graphResponse) { + $this->addResponse($key, $graphResponse); + } + } + + /** + * Add a response to the list. + * + * @param int $key + * @param array|null $response + */ + public function addResponse($key, $response) + { + $originalRequestName = isset($this->batchRequest[$key]['name']) ? $this->batchRequest[$key]['name'] : $key; + $originalRequest = isset($this->batchRequest[$key]['request']) ? $this->batchRequest[$key]['request'] : null; + + $httpResponseBody = isset($response['body']) ? $response['body'] : null; + $httpResponseCode = isset($response['code']) ? $response['code'] : null; + $httpResponseHeaders = isset($response['headers']) ? $response['headers'] : []; + + $this->responses[$originalRequestName] = new FacebookResponse( + $originalRequest, + $httpResponseBody, + $httpResponseCode, + $httpResponseHeaders + ); + } + + /** + * @inheritdoc + */ + public function getIterator() + { + return new ArrayIterator($this->responses); + } + + /** + * @inheritdoc + */ + public function offsetSet($offset, $value) + { + $this->addResponse($offset, $value); + } + + /** + * @inheritdoc + */ + public function offsetExists($offset) + { + return isset($this->responses[$offset]); + } + + /** + * @inheritdoc + */ + public function offsetUnset($offset) + { + unset($this->responses[$offset]); + } + + /** + * @inheritdoc + */ + public function offsetGet($offset) + { + return isset($this->responses[$offset]) ? $this->responses[$offset] : null; + } +} diff --git a/modules/oauth/src/facebook/FacebookClient.php b/modules/oauth/src/facebook/FacebookClient.php new file mode 100644 index 0000000..b10762f --- /dev/null +++ b/modules/oauth/src/facebook/FacebookClient.php @@ -0,0 +1,250 @@ +httpClientHandler = $httpClientHandler ?: $this->detectHttpClientHandler(); + $this->enableBetaMode = $enableBeta; + } + + /** + * Sets the HTTP client handler. + * + * @param FacebookHttpClientInterface $httpClientHandler + */ + public function setHttpClientHandler(FacebookHttpClientInterface $httpClientHandler) + { + $this->httpClientHandler = $httpClientHandler; + } + + /** + * Returns the HTTP client handler. + * + * @return FacebookHttpClientInterface + */ + public function getHttpClientHandler() + { + return $this->httpClientHandler; + } + + /** + * Detects which HTTP client handler to use. + * + * @return FacebookHttpClientInterface + */ + public function detectHttpClientHandler() + { + return function_exists('curl_init') ? new FacebookCurlHttpClient() : new FacebookStreamHttpClient(); + } + + /** + * Toggle beta mode. + * + * @param boolean $betaMode + */ + public function enableBetaMode($betaMode = true) + { + $this->enableBetaMode = $betaMode; + } + + /** + * Returns the base Graph URL. + * + * @param boolean $postToVideoUrl Post to the video API if videos are being uploaded. + * + * @return string + */ + public function getBaseGraphUrl($postToVideoUrl = false) + { + if ($postToVideoUrl) { + return $this->enableBetaMode ? static::BASE_GRAPH_VIDEO_URL_BETA : static::BASE_GRAPH_VIDEO_URL; + } + + return $this->enableBetaMode ? static::BASE_GRAPH_URL_BETA : static::BASE_GRAPH_URL; + } + + /** + * Prepares the request for sending to the client handler. + * + * @param FacebookRequest $request + * + * @return array + */ + public function prepareRequestMessage(FacebookRequest $request) + { + $postToVideoUrl = $request->containsVideoUploads(); + $url = $this->getBaseGraphUrl($postToVideoUrl) . $request->getUrl(); + + // If we're sending files they should be sent as multipart/form-data + if ($request->containsFileUploads()) { + $requestBody = $request->getMultipartBody(); + $request->setHeaders([ + 'Content-Type' => 'multipart/form-data; boundary=' . $requestBody->getBoundary(), + ]); + } else { + $requestBody = $request->getUrlEncodedBody(); + $request->setHeaders([ + 'Content-Type' => 'application/x-www-form-urlencoded', + ]); + } + + return [ + $url, + $request->getMethod(), + $request->getHeaders(), + $requestBody->getBody(), + ]; + } + + /** + * Makes the request to Graph and returns the result. + * + * @param FacebookRequest $request + * + * @return FacebookResponse + * + * @throws FacebookSDKException + */ + public function sendRequest(FacebookRequest $request) + { + if (get_class($request) === 'FacebookRequest') { + $request->validateAccessToken(); + } + + list($url, $method, $headers, $body) = $this->prepareRequestMessage($request); + + // Since file uploads can take a while, we need to give more time for uploads + $timeOut = static::DEFAULT_REQUEST_TIMEOUT; + if ($request->containsFileUploads()) { + $timeOut = static::DEFAULT_FILE_UPLOAD_REQUEST_TIMEOUT; + } elseif ($request->containsVideoUploads()) { + $timeOut = static::DEFAULT_VIDEO_UPLOAD_REQUEST_TIMEOUT; + } + + // Should throw `FacebookSDKException` exception on HTTP client error. + // Don't catch to allow it to bubble up. + $rawResponse = $this->httpClientHandler->send($url, $method, $body, $headers, $timeOut); + + static::$requestCount++; + + $returnResponse = new FacebookResponse( + $request, + $rawResponse->getBody(), + $rawResponse->getHttpResponseCode(), + $rawResponse->getHeaders() + ); + + if ($returnResponse->isError()) { + throw $returnResponse->getThrownException(); + } + + return $returnResponse; + } + + /** + * Makes a batched request to Graph and returns the result. + * + * @param FacebookBatchRequest $request + * + * @return FacebookBatchResponse + * + * @throws FacebookSDKException + */ + public function sendBatchRequest(FacebookBatchRequest $request) + { + $request->prepareRequestsForBatch(); + $facebookResponse = $this->sendRequest($request); + + return new FacebookBatchResponse($request, $facebookResponse); + } +} diff --git a/modules/oauth/src/facebook/FacebookRequest.php b/modules/oauth/src/facebook/FacebookRequest.php new file mode 100644 index 0000000..5e4083f --- /dev/null +++ b/modules/oauth/src/facebook/FacebookRequest.php @@ -0,0 +1,536 @@ +setApp($app); + $this->setAccessToken($accessToken); + $this->setMethod($method); + $this->setEndpoint($endpoint); + $this->setParams($params); + $this->setETag($eTag); + $this->graphVersion = $graphVersion ?: Facebook::DEFAULT_GRAPH_VERSION; + } + + /** + * Set the access token for this request. + * + * @param AccessToken|string + * + * @return FacebookRequest + */ + public function setAccessToken($accessToken) + { + $this->accessToken = $accessToken; + if ($accessToken instanceof AccessToken) { + $this->accessToken = $accessToken->getValue(); + } + + return $this; + } + + /** + * Sets the access token with one harvested from a URL or POST params. + * + * @param string $accessToken The access token. + * + * @return FacebookRequest + * + * @throws FacebookSDKException + */ + public function setAccessTokenFromParams($accessToken) + { + $existingAccessToken = $this->getAccessToken(); + if (!$existingAccessToken) { + $this->setAccessToken($accessToken); + } elseif ($accessToken !== $existingAccessToken) { + throw new FacebookSDKException('Access token mismatch. The access token provided in the FacebookRequest and the one provided in the URL or POST params do not match.'); + } + + return $this; + } + + /** + * Return the access token for this request. + * + * @return string|null + */ + public function getAccessToken() + { + return $this->accessToken; + } + + /** + * Return the access token for this request an an AccessToken entity. + * + * @return AccessToken|null + */ + public function getAccessTokenEntity() + { + return $this->accessToken ? new AccessToken($this->accessToken) : null; + } + + /** + * Set the FacebookApp entity used for this request. + * + * @param FacebookApp|null $app + */ + public function setApp(FacebookApp $app = null) + { + $this->app = $app; + } + + /** + * Return the FacebookApp entity used for this request. + * + * @return FacebookApp + */ + public function getApp() + { + return $this->app; + } + + /** + * Generate an app secret proof to sign this request. + * + * @return string|null + */ + public function getAppSecretProof() + { + if (!$accessTokenEntity = $this->getAccessTokenEntity()) { + return null; + } + + return $accessTokenEntity->getAppSecretProof($this->app->getSecret()); + } + + /** + * Validate that an access token exists for this request. + * + * @throws FacebookSDKException + */ + public function validateAccessToken() + { + $accessToken = $this->getAccessToken(); + if (!$accessToken) { + throw new FacebookSDKException('You must provide an access token.'); + } + } + + /** + * Set the HTTP method for this request. + * + * @param string + * + * @return FacebookRequest + */ + public function setMethod($method) + { + $this->method = strtoupper($method); + } + + /** + * Return the HTTP method for this request. + * + * @return string + */ + public function getMethod() + { + return $this->method; + } + + /** + * Validate that the HTTP method is set. + * + * @throws FacebookSDKException + */ + public function validateMethod() + { + if (!$this->method) { + throw new FacebookSDKException('HTTP method not specified.'); + } + + if (!in_array($this->method, ['GET', 'POST', 'DELETE'])) { + throw new FacebookSDKException('Invalid HTTP method specified.'); + } + } + + /** + * Set the endpoint for this request. + * + * @param string + * + * @return FacebookRequest + * + * @throws FacebookSDKException + */ + public function setEndpoint($endpoint) + { + // Harvest the access token from the endpoint to keep things in sync + $params = FacebookUrlManipulator::getParamsAsArray($endpoint); + if (isset($params['access_token'])) { + $this->setAccessTokenFromParams($params['access_token']); + } + + // Clean the token & app secret proof from the endpoint. + $filterParams = ['access_token', 'appsecret_proof']; + $this->endpoint = FacebookUrlManipulator::removeParamsFromUrl($endpoint, $filterParams); + + return $this; + } + + /** + * Return the HTTP method for this request. + * + * @return string + */ + public function getEndpoint() + { + // For batch requests, this will be empty + return $this->endpoint; + } + + /** + * Generate and return the headers for this request. + * + * @return array + */ + public function getHeaders() + { + $headers = static::getDefaultHeaders(); + + if ($this->eTag) { + $headers['If-None-Match'] = $this->eTag; + } + + return array_merge($this->headers, $headers); + } + + /** + * Set the headers for this request. + * + * @param array $headers + */ + public function setHeaders(array $headers) + { + $this->headers = array_merge($this->headers, $headers); + } + + /** + * Sets the eTag value. + * + * @param string $eTag + */ + public function setETag($eTag) + { + $this->eTag = $eTag; + } + + /** + * Set the params for this request. + * + * @param array $params + * + * @return FacebookRequest + * + * @throws FacebookSDKException + */ + public function setParams(array $params = []) + { + if (isset($params['access_token'])) { + $this->setAccessTokenFromParams($params['access_token']); + } + + // Don't let these buggers slip in. + unset($params['access_token'], $params['appsecret_proof']); + + // @TODO Refactor code above with this + //$params = $this->sanitizeAuthenticationParams($params); + $params = $this->sanitizeFileParams($params); + $this->dangerouslySetParams($params); + + return $this; + } + + /** + * Set the params for this request without filtering them first. + * + * @param array $params + * + * @return FacebookRequest + */ + public function dangerouslySetParams(array $params = []) + { + $this->params = array_merge($this->params, $params); + + return $this; + } + + /** + * Iterate over the params and pull out the file uploads. + * + * @param array $params + * + * @return array + */ + public function sanitizeFileParams(array $params) + { + foreach ($params as $key => $value) { + if ($value instanceof FacebookFile) { + $this->addFile($key, $value); + unset($params[$key]); + } + } + + return $params; + } + + /** + * Add a file to be uploaded. + * + * @param string $key + * @param FacebookFile $file + */ + public function addFile($key, FacebookFile $file) + { + $this->files[$key] = $file; + } + + /** + * Removes all the files from the upload queue. + */ + public function resetFiles() + { + $this->files = []; + } + + /** + * Get the list of files to be uploaded. + * + * @return array + */ + public function getFiles() + { + return $this->files; + } + + /** + * Let's us know if there is a file upload with this request. + * + * @return boolean + */ + public function containsFileUploads() + { + return !empty($this->files); + } + + /** + * Let's us know if there is a video upload with this request. + * + * @return boolean + */ + public function containsVideoUploads() + { + foreach ($this->files as $file) { + if ($file instanceof FacebookVideo) { + return true; + } + } + + return false; + } + + /** + * Returns the body of the request as multipart/form-data. + * + * @return RequestBodyMultipart + */ + public function getMultipartBody() + { + $params = $this->getPostParams(); + + return new RequestBodyMultipart($params, $this->files); + } + + /** + * Returns the body of the request as URL-encoded. + * + * @return RequestBodyUrlEncoded + */ + public function getUrlEncodedBody() + { + $params = $this->getPostParams(); + + return new RequestBodyUrlEncoded($params); + } + + /** + * Generate and return the params for this request. + * + * @return array + */ + public function getParams() + { + $params = $this->params; + + $accessToken = $this->getAccessToken(); + if ($accessToken) { + $params['access_token'] = $accessToken; + $params['appsecret_proof'] = $this->getAppSecretProof(); + } + + return $params; + } + + /** + * Only return params on POST requests. + * + * @return array + */ + public function getPostParams() + { + if ($this->getMethod() === 'POST') { + return $this->getParams(); + } + + return []; + } + + /** + * The graph version used for this request. + * + * @return string + */ + public function getGraphVersion() + { + return $this->graphVersion; + } + + /** + * Generate and return the URL for this request. + * + * @return string + */ + public function getUrl() + { + $this->validateMethod(); + + $graphVersion = FacebookUrlManipulator::forceSlashPrefix($this->graphVersion); + $endpoint = FacebookUrlManipulator::forceSlashPrefix($this->getEndpoint()); + + $url = $graphVersion . $endpoint; + + if ($this->getMethod() !== 'POST') { + $params = $this->getParams(); + $url = FacebookUrlManipulator::appendParamsToUrl($url, $params); + } + + return $url; + } + + /** + * Return the default headers that every request should use. + * + * @return array + */ + public static function getDefaultHeaders() + { + return [ + 'User-Agent' => 'fb-php-' . Facebook::VERSION, + 'Accept-Encoding' => '*', + ]; + } +} diff --git a/modules/oauth/src/facebook/FacebookResponse.php b/modules/oauth/src/facebook/FacebookResponse.php new file mode 100644 index 0000000..033c9b8 --- /dev/null +++ b/modules/oauth/src/facebook/FacebookResponse.php @@ -0,0 +1,410 @@ +request = $request; + $this->body = $body; + $this->httpStatusCode = $httpStatusCode; + $this->headers = $headers; + + $this->decodeBody(); + } + + /** + * Return the original request that returned this response. + * + * @return FacebookRequest + */ + public function getRequest() + { + return $this->request; + } + + /** + * Return the FacebookApp entity used for this response. + * + * @return FacebookApp + */ + public function getApp() + { + return $this->request->getApp(); + } + + /** + * Return the access token that was used for this response. + * + * @return string|null + */ + public function getAccessToken() + { + return $this->request->getAccessToken(); + } + + /** + * Return the HTTP status code for this response. + * + * @return int + */ + public function getHttpStatusCode() + { + return $this->httpStatusCode; + } + + /** + * Return the HTTP headers for this response. + * + * @return array + */ + public function getHeaders() + { + return $this->headers; + } + + /** + * Return the raw body response. + * + * @return string + */ + public function getBody() + { + return $this->body; + } + + /** + * Return the decoded body response. + * + * @return array + */ + public function getDecodedBody() + { + return $this->decodedBody; + } + + /** + * Get the app secret proof that was used for this response. + * + * @return string|null + */ + public function getAppSecretProof() + { + return $this->request->getAppSecretProof(); + } + + /** + * Get the ETag associated with the response. + * + * @return string|null + */ + public function getETag() + { + return isset($this->headers['ETag']) ? $this->headers['ETag'] : null; + } + + /** + * Get the version of Graph that returned this response. + * + * @return string|null + */ + public function getGraphVersion() + { + return isset($this->headers['Facebook-API-Version']) ? $this->headers['Facebook-API-Version'] : null; + } + + /** + * Returns true if Graph returned an error message. + * + * @return boolean + */ + public function isError() + { + return isset($this->decodedBody['error']); + } + + /** + * Throws the exception. + * + * @throws FacebookSDKException + */ + public function throwException() + { + throw $this->thrownException; + } + + /** + * Instantiates an exception to be thrown later. + */ + public function makeException() + { + $this->thrownException = FacebookResponseException::create($this); + } + + /** + * Returns the exception that was thrown for this request. + * + * @return FacebookSDKException|null + */ + public function getThrownException() + { + return $this->thrownException; + } + + /** + * Convert the raw response into an array if possible. + * + * Graph will return 2 types of responses: + * - JSON(P) + * Most responses from Graph are JSON(P) + * - application/x-www-form-urlencoded key/value pairs + * Happens on the `/oauth/access_token` endpoint when exchanging + * a short-lived access token for a long-lived access token + * - And sometimes nothing :/ but that'd be a bug. + */ + public function decodeBody() + { + $this->decodedBody = json_decode($this->body, true); + + if ($this->decodedBody === null) { + $this->decodedBody = []; + parse_str($this->body, $this->decodedBody); + } elseif (is_bool($this->decodedBody)) { + // Backwards compatibility for Graph < 2.1. + // Mimics 2.1 responses. + // @TODO Remove this after Graph 2.0 is no longer supported + $this->decodedBody = ['success' => $this->decodedBody]; + } elseif (is_numeric($this->decodedBody)) { + $this->decodedBody = ['id' => $this->decodedBody]; + } + + if (!is_array($this->decodedBody)) { + $this->decodedBody = []; + } + + if ($this->isError()) { + $this->makeException(); + } + } + + /** + * Instantiate a new GraphObject from response. + * + * @param string|null $subclassName The GraphNode sub class to cast to. + * + * @return \Facebook\GraphNodes\GraphObject + * + * @throws FacebookSDKException + * + * @deprecated 5.0.0 getGraphObject() has been renamed to getGraphNode() + * @todo v6: Remove this method + */ + public function getGraphObject($subclassName = null) + { + return $this->getGraphNode($subclassName); + } + + /** + * Instantiate a new GraphNode from response. + * + * @param string|null $subclassName The GraphNode sub class to cast to. + * + * @return \Facebook\GraphNodes\GraphNode + * + * @throws FacebookSDKException + */ + public function getGraphNode($subclassName = null) + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphNode($subclassName); + } + + /** + * Convenience method for creating a GraphAlbum collection. + * + * @return \Facebook\GraphNodes\GraphAlbum + * + * @throws FacebookSDKException + */ + public function getGraphAlbum() + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphAlbum(); + } + + /** + * Convenience method for creating a GraphPage collection. + * + * @return \Facebook\GraphNodes\GraphPage + * + * @throws FacebookSDKException + */ + public function getGraphPage() + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphPage(); + } + + /** + * Convenience method for creating a GraphSessionInfo collection. + * + * @return \Facebook\GraphNodes\GraphSessionInfo + * + * @throws FacebookSDKException + */ + public function getGraphSessionInfo() + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphSessionInfo(); + } + + /** + * Convenience method for creating a GraphUser collection. + * + * @return \Facebook\GraphNodes\GraphUser + * + * @throws FacebookSDKException + */ + public function getGraphUser() + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphUser(); + } + + /** + * Convenience method for creating a GraphEvent collection. + * + * @return \Facebook\GraphNodes\GraphEvent + * + * @throws FacebookSDKException + */ + public function getGraphEvent() + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphEvent(); + } + + /** + * Convenience method for creating a GraphGroup collection. + * + * @return \Facebook\GraphNodes\GraphGroup + * + * @throws FacebookSDKException + */ + public function getGraphGroup() + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphGroup(); + } + + /** + * Instantiate a new GraphList from response. + * + * @param string|null $subclassName The GraphNode sub class to cast list items to. + * @param boolean $auto_prefix Toggle to auto-prefix the subclass name. + * + * @return \Facebook\GraphNodes\GraphList + * + * @throws FacebookSDKException + * + * @deprecated 5.0.0 getGraphList() has been renamed to getGraphEdge() + * @todo v6: Remove this method + */ + public function getGraphList($subclassName = null, $auto_prefix = true) + { + return $this->getGraphEdge($subclassName, $auto_prefix); + } + + /** + * Instantiate a new GraphEdge from response. + * + * @param string|null $subclassName The GraphNode sub class to cast list items to. + * @param boolean $auto_prefix Toggle to auto-prefix the subclass name. + * + * @return \Facebook\GraphNodes\GraphEdge + * + * @throws FacebookSDKException + */ + public function getGraphEdge($subclassName = null, $auto_prefix = true) + { + $factory = new GraphNodeFactory($this); + + return $factory->makeGraphEdge($subclassName, $auto_prefix); + } +} diff --git a/modules/oauth/src/facebook/FileUpload/FacebookFile.php b/modules/oauth/src/facebook/FileUpload/FacebookFile.php new file mode 100644 index 0000000..f8b9905 --- /dev/null +++ b/modules/oauth/src/facebook/FileUpload/FacebookFile.php @@ -0,0 +1,135 @@ +path = $filePath; + $this->open(); + } + + /** + * Closes the stream when destructed. + */ + public function __destruct() + { + $this->close(); + } + + /** + * Opens a stream for the file. + * + * @throws FacebookSDKException + */ + public function open() + { + if (!$this->isRemoteFile($this->path) && !is_readable($this->path)) { + throw new FacebookSDKException('Failed to create FacebookFile entity. Unable to read resource: ' . $this->path . '.'); + } + + $this->stream = fopen($this->path, 'r'); + + if (!$this->stream) { + throw new FacebookSDKException('Failed to create FacebookFile entity. Unable to open resource: ' . $this->path . '.'); + } + } + + /** + * Stops the file stream. + */ + public function close() + { + if (is_resource($this->stream)) { + fclose($this->stream); + } + } + + /** + * Return the contents of the file. + * + * @return string + */ + public function getContents() + { + return stream_get_contents($this->stream); + } + + /** + * Return the name of the file. + * + * @return string + */ + public function getFileName() + { + return basename($this->path); + } + + /** + * Return the mimetype of the file. + * + * @return string + */ + public function getMimetype() + { + return Mimetypes::getInstance()->fromFilename($this->path) ?: 'text/plain'; + } + + /** + * Returns true if the path to the file is remote. + * + * @param string $pathToFile + * + * @return boolean + */ + protected function isRemoteFile($pathToFile) + { + return preg_match('/^(https?|ftp):\/\/.*/', $pathToFile) === 1; + } +} diff --git a/modules/oauth/src/facebook/FileUpload/FacebookVideo.php b/modules/oauth/src/facebook/FileUpload/FacebookVideo.php new file mode 100644 index 0000000..1e8c55a --- /dev/null +++ b/modules/oauth/src/facebook/FileUpload/FacebookVideo.php @@ -0,0 +1,33 @@ + 'text/vnd.in3d.3dml', + '3g2' => 'video/3gpp2', + '3gp' => 'video/3gpp', + '7z' => 'application/x-7z-compressed', + 'aab' => 'application/x-authorware-bin', + 'aac' => 'audio/x-aac', + 'aam' => 'application/x-authorware-map', + 'aas' => 'application/x-authorware-seg', + 'abw' => 'application/x-abiword', + 'ac' => 'application/pkix-attr-cert', + 'acc' => 'application/vnd.americandynamics.acc', + 'ace' => 'application/x-ace-compressed', + 'acu' => 'application/vnd.acucobol', + 'acutc' => 'application/vnd.acucorp', + 'adp' => 'audio/adpcm', + 'aep' => 'application/vnd.audiograph', + 'afm' => 'application/x-font-type1', + 'afp' => 'application/vnd.ibm.modcap', + 'ahead' => 'application/vnd.ahead.space', + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'air' => 'application/vnd.adobe.air-application-installer-package+zip', + 'ait' => 'application/vnd.dvb.ait', + 'ami' => 'application/vnd.amiga.ami', + 'apk' => 'application/vnd.android.package-archive', + 'application' => 'application/x-ms-application', + 'apr' => 'application/vnd.lotus-approach', + 'asa' => 'text/plain', + 'asax' => 'application/octet-stream', + 'asc' => 'application/pgp-signature', + 'ascx' => 'text/plain', + 'asf' => 'video/x-ms-asf', + 'ashx' => 'text/plain', + 'asm' => 'text/x-asm', + 'asmx' => 'text/plain', + 'aso' => 'application/vnd.accpac.simply.aso', + 'asp' => 'text/plain', + 'aspx' => 'text/plain', + 'asx' => 'video/x-ms-asf', + 'atc' => 'application/vnd.acucorp', + 'atom' => 'application/atom+xml', + 'atomcat' => 'application/atomcat+xml', + 'atomsvc' => 'application/atomsvc+xml', + 'atx' => 'application/vnd.antix.game-component', + 'au' => 'audio/basic', + 'avi' => 'video/x-msvideo', + 'aw' => 'application/applixware', + 'axd' => 'text/plain', + 'azf' => 'application/vnd.airzip.filesecure.azf', + 'azs' => 'application/vnd.airzip.filesecure.azs', + 'azw' => 'application/vnd.amazon.ebook', + 'bat' => 'application/x-msdownload', + 'bcpio' => 'application/x-bcpio', + 'bdf' => 'application/x-font-bdf', + 'bdm' => 'application/vnd.syncml.dm+wbxml', + 'bed' => 'application/vnd.realvnc.bed', + 'bh2' => 'application/vnd.fujitsu.oasysprs', + 'bin' => 'application/octet-stream', + 'bmi' => 'application/vnd.bmi', + 'bmp' => 'image/bmp', + 'book' => 'application/vnd.framemaker', + 'box' => 'application/vnd.previewsystems.box', + 'boz' => 'application/x-bzip2', + 'bpk' => 'application/octet-stream', + 'btif' => 'image/prs.btif', + 'bz' => 'application/x-bzip', + 'bz2' => 'application/x-bzip2', + 'c' => 'text/x-c', + 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', + 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', + 'c4d' => 'application/vnd.clonk.c4group', + 'c4f' => 'application/vnd.clonk.c4group', + 'c4g' => 'application/vnd.clonk.c4group', + 'c4p' => 'application/vnd.clonk.c4group', + 'c4u' => 'application/vnd.clonk.c4group', + 'cab' => 'application/vnd.ms-cab-compressed', + 'car' => 'application/vnd.curl.car', + 'cat' => 'application/vnd.ms-pki.seccat', + 'cc' => 'text/x-c', + 'cct' => 'application/x-director', + 'ccxml' => 'application/ccxml+xml', + 'cdbcmsg' => 'application/vnd.contact.cmsg', + 'cdf' => 'application/x-netcdf', + 'cdkey' => 'application/vnd.mediastation.cdkey', + 'cdmia' => 'application/cdmi-capability', + 'cdmic' => 'application/cdmi-container', + 'cdmid' => 'application/cdmi-domain', + 'cdmio' => 'application/cdmi-object', + 'cdmiq' => 'application/cdmi-queue', + 'cdx' => 'chemical/x-cdx', + 'cdxml' => 'application/vnd.chemdraw+xml', + 'cdy' => 'application/vnd.cinderella', + 'cer' => 'application/pkix-cert', + 'cfc' => 'application/x-coldfusion', + 'cfm' => 'application/x-coldfusion', + 'cgm' => 'image/cgm', + 'chat' => 'application/x-chat', + 'chm' => 'application/vnd.ms-htmlhelp', + 'chrt' => 'application/vnd.kde.kchart', + 'cif' => 'chemical/x-cif', + 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', + 'cil' => 'application/vnd.ms-artgalry', + 'cla' => 'application/vnd.claymore', + 'class' => 'application/java-vm', + 'clkk' => 'application/vnd.crick.clicker.keyboard', + 'clkp' => 'application/vnd.crick.clicker.palette', + 'clkt' => 'application/vnd.crick.clicker.template', + 'clkw' => 'application/vnd.crick.clicker.wordbank', + 'clkx' => 'application/vnd.crick.clicker', + 'clp' => 'application/x-msclip', + 'cmc' => 'application/vnd.cosmocaller', + 'cmdf' => 'chemical/x-cmdf', + 'cml' => 'chemical/x-cml', + 'cmp' => 'application/vnd.yellowriver-custom-menu', + 'cmx' => 'image/x-cmx', + 'cod' => 'application/vnd.rim.cod', + 'com' => 'application/x-msdownload', + 'conf' => 'text/plain', + 'cpio' => 'application/x-cpio', + 'cpp' => 'text/x-c', + 'cpt' => 'application/mac-compactpro', + 'crd' => 'application/x-mscardfile', + 'crl' => 'application/pkix-crl', + 'crt' => 'application/x-x509-ca-cert', + 'cryptonote' => 'application/vnd.rig.cryptonote', + 'cs' => 'text/plain', + 'csh' => 'application/x-csh', + 'csml' => 'chemical/x-csml', + 'csp' => 'application/vnd.commonspace', + 'css' => 'text/css', + 'cst' => 'application/x-director', + 'csv' => 'text/csv', + 'cu' => 'application/cu-seeme', + 'curl' => 'text/vnd.curl', + 'cww' => 'application/prs.cww', + 'cxt' => 'application/x-director', + 'cxx' => 'text/x-c', + 'dae' => 'model/vnd.collada+xml', + 'daf' => 'application/vnd.mobius.daf', + 'dataless' => 'application/vnd.fdsn.seed', + 'davmount' => 'application/davmount+xml', + 'dcr' => 'application/x-director', + 'dcurl' => 'text/vnd.curl.dcurl', + 'dd2' => 'application/vnd.oma.dd2+xml', + 'ddd' => 'application/vnd.fujixerox.ddd', + 'deb' => 'application/x-debian-package', + 'def' => 'text/plain', + 'deploy' => 'application/octet-stream', + 'der' => 'application/x-x509-ca-cert', + 'dfac' => 'application/vnd.dreamfactory', + 'dic' => 'text/x-c', + 'dir' => 'application/x-director', + 'dis' => 'application/vnd.mobius.dis', + 'dist' => 'application/octet-stream', + 'distz' => 'application/octet-stream', + 'djv' => 'image/vnd.djvu', + 'djvu' => 'image/vnd.djvu', + 'dll' => 'application/x-msdownload', + 'dmg' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'dna' => 'application/vnd.dna', + 'doc' => 'application/msword', + 'docm' => 'application/vnd.ms-word.document.macroenabled.12', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dot' => 'application/msword', + 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'dp' => 'application/vnd.osgi.dp', + 'dpg' => 'application/vnd.dpgraph', + 'dra' => 'audio/vnd.dra', + 'dsc' => 'text/prs.lines.tag', + 'dssc' => 'application/dssc+der', + 'dtb' => 'application/x-dtbook+xml', + 'dtd' => 'application/xml-dtd', + 'dts' => 'audio/vnd.dts', + 'dtshd' => 'audio/vnd.dts.hd', + 'dump' => 'application/octet-stream', + 'dvi' => 'application/x-dvi', + 'dwf' => 'model/vnd.dwf', + 'dwg' => 'image/vnd.dwg', + 'dxf' => 'image/vnd.dxf', + 'dxp' => 'application/vnd.spotfire.dxp', + 'dxr' => 'application/x-director', + 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', + 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', + 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', + 'ecma' => 'application/ecmascript', + 'edm' => 'application/vnd.novadigm.edm', + 'edx' => 'application/vnd.novadigm.edx', + 'efif' => 'application/vnd.picsel', + 'ei6' => 'application/vnd.pg.osasli', + 'elc' => 'application/octet-stream', + 'eml' => 'message/rfc822', + 'emma' => 'application/emma+xml', + 'eol' => 'audio/vnd.digital-winds', + 'eot' => 'application/vnd.ms-fontobject', + 'eps' => 'application/postscript', + 'epub' => 'application/epub+zip', + 'es3' => 'application/vnd.eszigno3+xml', + 'esf' => 'application/vnd.epson.esf', + 'et3' => 'application/vnd.eszigno3+xml', + 'etx' => 'text/x-setext', + 'exe' => 'application/x-msdownload', + 'exi' => 'application/exi', + 'ext' => 'application/vnd.novadigm.ext', + 'ez' => 'application/andrew-inset', + 'ez2' => 'application/vnd.ezpix-album', + 'ez3' => 'application/vnd.ezpix-package', + 'f' => 'text/x-fortran', + 'f4v' => 'video/x-f4v', + 'f77' => 'text/x-fortran', + 'f90' => 'text/x-fortran', + 'fbs' => 'image/vnd.fastbidsheet', + 'fcs' => 'application/vnd.isac.fcs', + 'fdf' => 'application/vnd.fdf', + 'fe_launch' => 'application/vnd.denovo.fcselayout-link', + 'fg5' => 'application/vnd.fujitsu.oasysgp', + 'fgd' => 'application/x-director', + 'fh' => 'image/x-freehand', + 'fh4' => 'image/x-freehand', + 'fh5' => 'image/x-freehand', + 'fh7' => 'image/x-freehand', + 'fhc' => 'image/x-freehand', + 'fig' => 'application/x-xfig', + 'fli' => 'video/x-fli', + 'flo' => 'application/vnd.micrografx.flo', + 'flv' => 'video/x-flv', + 'flw' => 'application/vnd.kde.kivio', + 'flx' => 'text/vnd.fmi.flexstor', + 'fly' => 'text/vnd.fly', + 'fm' => 'application/vnd.framemaker', + 'fnc' => 'application/vnd.frogans.fnc', + 'for' => 'text/x-fortran', + 'fpx' => 'image/vnd.fpx', + 'frame' => 'application/vnd.framemaker', + 'fsc' => 'application/vnd.fsc.weblaunch', + 'fst' => 'image/vnd.fst', + 'ftc' => 'application/vnd.fluxtime.clip', + 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', + 'fvt' => 'video/vnd.fvt', + 'fxp' => 'application/vnd.adobe.fxp', + 'fxpl' => 'application/vnd.adobe.fxp', + 'fzs' => 'application/vnd.fuzzysheet', + 'g2w' => 'application/vnd.geoplan', + 'g3' => 'image/g3fax', + 'g3w' => 'application/vnd.geospace', + 'gac' => 'application/vnd.groove-account', + 'gdl' => 'model/vnd.gdl', + 'geo' => 'application/vnd.dynageo', + 'gex' => 'application/vnd.geometry-explorer', + 'ggb' => 'application/vnd.geogebra.file', + 'ggt' => 'application/vnd.geogebra.tool', + 'ghf' => 'application/vnd.groove-help', + 'gif' => 'image/gif', + 'gim' => 'application/vnd.groove-identity-message', + 'gmx' => 'application/vnd.gmx', + 'gnumeric' => 'application/x-gnumeric', + 'gph' => 'application/vnd.flographit', + 'gqf' => 'application/vnd.grafeq', + 'gqs' => 'application/vnd.grafeq', + 'gram' => 'application/srgs', + 'gre' => 'application/vnd.geometry-explorer', + 'grv' => 'application/vnd.groove-injector', + 'grxml' => 'application/srgs+xml', + 'gsf' => 'application/x-font-ghostscript', + 'gtar' => 'application/x-gtar', + 'gtm' => 'application/vnd.groove-tool-message', + 'gtw' => 'model/vnd.gtw', + 'gv' => 'text/vnd.graphviz', + 'gxt' => 'application/vnd.geonext', + 'h' => 'text/x-c', + 'h261' => 'video/h261', + 'h263' => 'video/h263', + 'h264' => 'video/h264', + 'hal' => 'application/vnd.hal+xml', + 'hbci' => 'application/vnd.hbci', + 'hdf' => 'application/x-hdf', + 'hh' => 'text/x-c', + 'hlp' => 'application/winhlp', + 'hpgl' => 'application/vnd.hp-hpgl', + 'hpid' => 'application/vnd.hp-hpid', + 'hps' => 'application/vnd.hp-hps', + 'hqx' => 'application/mac-binhex40', + 'hta' => 'application/octet-stream', + 'htc' => 'text/html', + 'htke' => 'application/vnd.kenameaapp', + 'htm' => 'text/html', + 'html' => 'text/html', + 'hvd' => 'application/vnd.yamaha.hv-dic', + 'hvp' => 'application/vnd.yamaha.hv-voice', + 'hvs' => 'application/vnd.yamaha.hv-script', + 'i2g' => 'application/vnd.intergeo', + 'icc' => 'application/vnd.iccprofile', + 'ice' => 'x-conference/x-cooltalk', + 'icm' => 'application/vnd.iccprofile', + 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', + 'ief' => 'image/ief', + 'ifb' => 'text/calendar', + 'ifm' => 'application/vnd.shana.informed.formdata', + 'iges' => 'model/iges', + 'igl' => 'application/vnd.igloader', + 'igm' => 'application/vnd.insors.igm', + 'igs' => 'model/iges', + 'igx' => 'application/vnd.micrografx.igx', + 'iif' => 'application/vnd.shana.informed.interchange', + 'imp' => 'application/vnd.accpac.simply.imp', + 'ims' => 'application/vnd.ms-ims', + 'in' => 'text/plain', + 'ini' => 'text/plain', + 'ipfix' => 'application/ipfix', + 'ipk' => 'application/vnd.shana.informed.package', + 'irm' => 'application/vnd.ibm.rights-management', + 'irp' => 'application/vnd.irepository.package+xml', + 'iso' => 'application/octet-stream', + 'itp' => 'application/vnd.shana.informed.formtemplate', + 'ivp' => 'application/vnd.immervision-ivp', + 'ivu' => 'application/vnd.immervision-ivu', + 'jad' => 'text/vnd.sun.j2me.app-descriptor', + 'jam' => 'application/vnd.jam', + 'jar' => 'application/java-archive', + 'java' => 'text/x-java-source', + 'jisp' => 'application/vnd.jisp', + 'jlt' => 'application/vnd.hp-jlyt', + 'jnlp' => 'application/x-java-jnlp-file', + 'joda' => 'application/vnd.joost.joda-archive', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'jpgm' => 'video/jpm', + 'jpgv' => 'video/jpeg', + 'jpm' => 'video/jpm', + 'js' => 'text/javascript', + 'json' => 'application/json', + 'kar' => 'audio/midi', + 'karbon' => 'application/vnd.kde.karbon', + 'kfo' => 'application/vnd.kde.kformula', + 'kia' => 'application/vnd.kidspiration', + 'kml' => 'application/vnd.google-earth.kml+xml', + 'kmz' => 'application/vnd.google-earth.kmz', + 'kne' => 'application/vnd.kinar', + 'knp' => 'application/vnd.kinar', + 'kon' => 'application/vnd.kde.kontour', + 'kpr' => 'application/vnd.kde.kpresenter', + 'kpt' => 'application/vnd.kde.kpresenter', + 'ksp' => 'application/vnd.kde.kspread', + 'ktr' => 'application/vnd.kahootz', + 'ktx' => 'image/ktx', + 'ktz' => 'application/vnd.kahootz', + 'kwd' => 'application/vnd.kde.kword', + 'kwt' => 'application/vnd.kde.kword', + 'lasxml' => 'application/vnd.las.las+xml', + 'latex' => 'application/x-latex', + 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', + 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', + 'les' => 'application/vnd.hhe.lesson-player', + 'lha' => 'application/octet-stream', + 'link66' => 'application/vnd.route66.link66+xml', + 'list' => 'text/plain', + 'list3820' => 'application/vnd.ibm.modcap', + 'listafp' => 'application/vnd.ibm.modcap', + 'log' => 'text/plain', + 'lostxml' => 'application/lost+xml', + 'lrf' => 'application/octet-stream', + 'lrm' => 'application/vnd.ms-lrm', + 'ltf' => 'application/vnd.frogans.ltf', + 'lvp' => 'audio/vnd.lucent.voice', + 'lwp' => 'application/vnd.lotus-wordpro', + 'lzh' => 'application/octet-stream', + 'm13' => 'application/x-msmediaview', + 'm14' => 'application/x-msmediaview', + 'm1v' => 'video/mpeg', + 'm21' => 'application/mp21', + 'm2a' => 'audio/mpeg', + 'm2v' => 'video/mpeg', + 'm3a' => 'audio/mpeg', + 'm3u' => 'audio/x-mpegurl', + 'm3u8' => 'application/vnd.apple.mpegurl', + 'm4a' => 'audio/mp4', + 'm4u' => 'video/vnd.mpegurl', + 'm4v' => 'video/mp4', + 'ma' => 'application/mathematica', + 'mads' => 'application/mads+xml', + 'mag' => 'application/vnd.ecowin.chart', + 'maker' => 'application/vnd.framemaker', + 'man' => 'text/troff', + 'mathml' => 'application/mathml+xml', + 'mb' => 'application/mathematica', + 'mbk' => 'application/vnd.mobius.mbk', + 'mbox' => 'application/mbox', + 'mc1' => 'application/vnd.medcalcdata', + 'mcd' => 'application/vnd.mcd', + 'mcurl' => 'text/vnd.curl.mcurl', + 'mdb' => 'application/x-msaccess', + 'mdi' => 'image/vnd.ms-modi', + 'me' => 'text/troff', + 'mesh' => 'model/mesh', + 'meta4' => 'application/metalink4+xml', + 'mets' => 'application/mets+xml', + 'mfm' => 'application/vnd.mfmp', + 'mgp' => 'application/vnd.osgeo.mapguide.package', + 'mgz' => 'application/vnd.proteus.magazine', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mif' => 'application/vnd.mif', + 'mime' => 'message/rfc822', + 'mj2' => 'video/mj2', + 'mjp2' => 'video/mj2', + 'mlp' => 'application/vnd.dolby.mlp', + 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', + 'mmf' => 'application/vnd.smaf', + 'mmr' => 'image/vnd.fujixerox.edmics-mmr', + 'mny' => 'application/x-msmoney', + 'mobi' => 'application/x-mobipocket-ebook', + 'mods' => 'application/mods+xml', + 'mov' => 'video/quicktime', + 'movie' => 'video/x-sgi-movie', + 'mp2' => 'audio/mpeg', + 'mp21' => 'application/mp21', + 'mp2a' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mp4a' => 'audio/mp4', + 'mp4s' => 'application/mp4', + 'mp4v' => 'video/mp4', + 'mpc' => 'application/vnd.mophun.certificate', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpg4' => 'video/mp4', + 'mpga' => 'audio/mpeg', + 'mpkg' => 'application/vnd.apple.installer+xml', + 'mpm' => 'application/vnd.blueice.multipass', + 'mpn' => 'application/vnd.mophun.application', + 'mpp' => 'application/vnd.ms-project', + 'mpt' => 'application/vnd.ms-project', + 'mpy' => 'application/vnd.ibm.minipay', + 'mqy' => 'application/vnd.mobius.mqy', + 'mrc' => 'application/marc', + 'mrcx' => 'application/marcxml+xml', + 'ms' => 'text/troff', + 'mscml' => 'application/mediaservercontrol+xml', + 'mseed' => 'application/vnd.fdsn.mseed', + 'mseq' => 'application/vnd.mseq', + 'msf' => 'application/vnd.epson.msf', + 'msh' => 'model/mesh', + 'msi' => 'application/x-msdownload', + 'msl' => 'application/vnd.mobius.msl', + 'msty' => 'application/vnd.muvee.style', + 'mts' => 'model/vnd.mts', + 'mus' => 'application/vnd.musician', + 'musicxml' => 'application/vnd.recordare.musicxml+xml', + 'mvb' => 'application/x-msmediaview', + 'mwf' => 'application/vnd.mfer', + 'mxf' => 'application/mxf', + 'mxl' => 'application/vnd.recordare.musicxml', + 'mxml' => 'application/xv+xml', + 'mxs' => 'application/vnd.triscape.mxs', + 'mxu' => 'video/vnd.mpegurl', + 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', + 'n3' => 'text/n3', + 'nb' => 'application/mathematica', + 'nbp' => 'application/vnd.wolfram.player', + 'nc' => 'application/x-netcdf', + 'ncx' => 'application/x-dtbncx+xml', + 'ngdat' => 'application/vnd.nokia.n-gage.data', + 'nlu' => 'application/vnd.neurolanguage.nlu', + 'nml' => 'application/vnd.enliven', + 'nnd' => 'application/vnd.noblenet-directory', + 'nns' => 'application/vnd.noblenet-sealer', + 'nnw' => 'application/vnd.noblenet-web', + 'npx' => 'image/vnd.net-fpx', + 'nsf' => 'application/vnd.lotus-notes', + 'oa2' => 'application/vnd.fujitsu.oasys2', + 'oa3' => 'application/vnd.fujitsu.oasys3', + 'oas' => 'application/vnd.fujitsu.oasys', + 'obd' => 'application/x-msbinder', + 'oda' => 'application/oda', + 'odb' => 'application/vnd.oasis.opendocument.database', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'odft' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', + 'ogv' => 'video/ogg', + 'ogx' => 'application/ogg', + 'onepkg' => 'application/onenote', + 'onetmp' => 'application/onenote', + 'onetoc' => 'application/onenote', + 'onetoc2' => 'application/onenote', + 'opf' => 'application/oebps-package+xml', + 'oprc' => 'application/vnd.palm', + 'org' => 'application/vnd.lotus-organizer', + 'osf' => 'application/vnd.yamaha.openscoreformat', + 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'otf' => 'application/x-font-otf', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oxt' => 'application/vnd.openofficeorg.extension', + 'p' => 'text/x-pascal', + 'p10' => 'application/pkcs10', + 'p12' => 'application/x-pkcs12', + 'p7b' => 'application/x-pkcs7-certificates', + 'p7c' => 'application/pkcs7-mime', + 'p7m' => 'application/pkcs7-mime', + 'p7r' => 'application/x-pkcs7-certreqresp', + 'p7s' => 'application/pkcs7-signature', + 'p8' => 'application/pkcs8', + 'pas' => 'text/x-pascal', + 'paw' => 'application/vnd.pawaafile', + 'pbd' => 'application/vnd.powerbuilder6', + 'pbm' => 'image/x-portable-bitmap', + 'pcf' => 'application/x-font-pcf', + 'pcl' => 'application/vnd.hp-pcl', + 'pclxl' => 'application/vnd.hp-pclxl', + 'pct' => 'image/x-pict', + 'pcurl' => 'application/vnd.curl.pcurl', + 'pcx' => 'image/x-pcx', + 'pdb' => 'application/vnd.palm', + 'pdf' => 'application/pdf', + 'pfa' => 'application/x-font-type1', + 'pfb' => 'application/x-font-type1', + 'pfm' => 'application/x-font-type1', + 'pfr' => 'application/font-tdpfr', + 'pfx' => 'application/x-pkcs12', + 'pgm' => 'image/x-portable-graymap', + 'pgn' => 'application/x-chess-pgn', + 'pgp' => 'application/pgp-encrypted', + 'php' => 'text/x-php', + 'phps' => 'application/x-httpd-phps', + 'pic' => 'image/x-pict', + 'pkg' => 'application/octet-stream', + 'pki' => 'application/pkixcmp', + 'pkipath' => 'application/pkix-pkipath', + 'plb' => 'application/vnd.3gpp.pic-bw-large', + 'plc' => 'application/vnd.mobius.plc', + 'plf' => 'application/vnd.pocketlearn', + 'pls' => 'application/pls+xml', + 'pml' => 'application/vnd.ctc-posml', + 'png' => 'image/png', + 'pnm' => 'image/x-portable-anymap', + 'portpkg' => 'application/vnd.macports.portpkg', + 'pot' => 'application/vnd.ms-powerpoint', + 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', + 'ppd' => 'application/vnd.cups-ppd', + 'ppm' => 'image/x-portable-pixmap', + 'pps' => 'application/vnd.ms-powerpoint', + 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'pqa' => 'application/vnd.palm', + 'prc' => 'application/x-mobipocket-ebook', + 'pre' => 'application/vnd.lotus-freelance', + 'prf' => 'application/pics-rules', + 'ps' => 'application/postscript', + 'psb' => 'application/vnd.3gpp.pic-bw-small', + 'psd' => 'image/vnd.adobe.photoshop', + 'psf' => 'application/x-font-linux-psf', + 'pskcxml' => 'application/pskc+xml', + 'ptid' => 'application/vnd.pvi.ptid1', + 'pub' => 'application/x-mspublisher', + 'pvb' => 'application/vnd.3gpp.pic-bw-var', + 'pwn' => 'application/vnd.3m.post-it-notes', + 'pya' => 'audio/vnd.ms-playready.media.pya', + 'pyv' => 'video/vnd.ms-playready.media.pyv', + 'qam' => 'application/vnd.epson.quickanime', + 'qbo' => 'application/vnd.intu.qbo', + 'qfx' => 'application/vnd.intu.qfx', + 'qps' => 'application/vnd.publishare-delta-tree', + 'qt' => 'video/quicktime', + 'qwd' => 'application/vnd.quark.quarkxpress', + 'qwt' => 'application/vnd.quark.quarkxpress', + 'qxb' => 'application/vnd.quark.quarkxpress', + 'qxd' => 'application/vnd.quark.quarkxpress', + 'qxl' => 'application/vnd.quark.quarkxpress', + 'qxt' => 'application/vnd.quark.quarkxpress', + 'ra' => 'audio/x-pn-realaudio', + 'ram' => 'audio/x-pn-realaudio', + 'rar' => 'application/x-rar-compressed', + 'ras' => 'image/x-cmu-raster', + 'rb' => 'text/plain', + 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', + 'rdf' => 'application/rdf+xml', + 'rdz' => 'application/vnd.data-vision.rdz', + 'rep' => 'application/vnd.businessobjects', + 'res' => 'application/x-dtbresource+xml', + 'resx' => 'text/xml', + 'rgb' => 'image/x-rgb', + 'rif' => 'application/reginfo+xml', + 'rip' => 'audio/vnd.rip', + 'rl' => 'application/resource-lists+xml', + 'rlc' => 'image/vnd.fujixerox.edmics-rlc', + 'rld' => 'application/resource-lists-diff+xml', + 'rm' => 'application/vnd.rn-realmedia', + 'rmi' => 'audio/midi', + 'rmp' => 'audio/x-pn-realaudio-plugin', + 'rms' => 'application/vnd.jcp.javame.midlet-rms', + 'rnc' => 'application/relax-ng-compact-syntax', + 'roff' => 'text/troff', + 'rp9' => 'application/vnd.cloanto.rp9', + 'rpss' => 'application/vnd.nokia.radio-presets', + 'rpst' => 'application/vnd.nokia.radio-preset', + 'rq' => 'application/sparql-query', + 'rs' => 'application/rls-services+xml', + 'rsd' => 'application/rsd+xml', + 'rss' => 'application/rss+xml', + 'rtf' => 'application/rtf', + 'rtx' => 'text/richtext', + 's' => 'text/x-asm', + 'saf' => 'application/vnd.yamaha.smaf-audio', + 'sbml' => 'application/sbml+xml', + 'sc' => 'application/vnd.ibm.secure-container', + 'scd' => 'application/x-msschedule', + 'scm' => 'application/vnd.lotus-screencam', + 'scq' => 'application/scvp-cv-request', + 'scs' => 'application/scvp-cv-response', + 'scurl' => 'text/vnd.curl.scurl', + 'sda' => 'application/vnd.stardivision.draw', + 'sdc' => 'application/vnd.stardivision.calc', + 'sdd' => 'application/vnd.stardivision.impress', + 'sdkd' => 'application/vnd.solent.sdkm+xml', + 'sdkm' => 'application/vnd.solent.sdkm+xml', + 'sdp' => 'application/sdp', + 'sdw' => 'application/vnd.stardivision.writer', + 'see' => 'application/vnd.seemail', + 'seed' => 'application/vnd.fdsn.seed', + 'sema' => 'application/vnd.sema', + 'semd' => 'application/vnd.semd', + 'semf' => 'application/vnd.semf', + 'ser' => 'application/java-serialized-object', + 'setpay' => 'application/set-payment-initiation', + 'setreg' => 'application/set-registration-initiation', + 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', + 'sfs' => 'application/vnd.spotfire.sfs', + 'sgl' => 'application/vnd.stardivision.writer-global', + 'sgm' => 'text/sgml', + 'sgml' => 'text/sgml', + 'sh' => 'application/x-sh', + 'shar' => 'application/x-shar', + 'shf' => 'application/shf+xml', + 'sig' => 'application/pgp-signature', + 'silo' => 'model/mesh', + 'sis' => 'application/vnd.symbian.install', + 'sisx' => 'application/vnd.symbian.install', + 'sit' => 'application/x-stuffit', + 'sitx' => 'application/x-stuffitx', + 'skd' => 'application/vnd.koan', + 'skm' => 'application/vnd.koan', + 'skp' => 'application/vnd.koan', + 'skt' => 'application/vnd.koan', + 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'slt' => 'application/vnd.epson.salt', + 'sm' => 'application/vnd.stepmania.stepchart', + 'smf' => 'application/vnd.stardivision.math', + 'smi' => 'application/smil+xml', + 'smil' => 'application/smil+xml', + 'snd' => 'audio/basic', + 'snf' => 'application/x-font-snf', + 'so' => 'application/octet-stream', + 'spc' => 'application/x-pkcs7-certificates', + 'spf' => 'application/vnd.yamaha.smaf-phrase', + 'spl' => 'application/x-futuresplash', + 'spot' => 'text/vnd.in3d.spot', + 'spp' => 'application/scvp-vp-response', + 'spq' => 'application/scvp-vp-request', + 'spx' => 'audio/ogg', + 'src' => 'application/x-wais-source', + 'sru' => 'application/sru+xml', + 'srx' => 'application/sparql-results+xml', + 'sse' => 'application/vnd.kodak-descriptor', + 'ssf' => 'application/vnd.epson.ssf', + 'ssml' => 'application/ssml+xml', + 'st' => 'application/vnd.sailingtracker.track', + 'stc' => 'application/vnd.sun.xml.calc.template', + 'std' => 'application/vnd.sun.xml.draw.template', + 'stf' => 'application/vnd.wt.stf', + 'sti' => 'application/vnd.sun.xml.impress.template', + 'stk' => 'application/hyperstudio', + 'stl' => 'application/vnd.ms-pki.stl', + 'str' => 'application/vnd.pg.format', + 'stw' => 'application/vnd.sun.xml.writer.template', + 'sub' => 'image/vnd.dvb.subtitle', + 'sus' => 'application/vnd.sus-calendar', + 'susp' => 'application/vnd.sus-calendar', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 'svc' => 'application/vnd.dvb.service', + 'svd' => 'application/vnd.svd', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + 'swa' => 'application/x-director', + 'swf' => 'application/x-shockwave-flash', + 'swi' => 'application/vnd.aristanetworks.swi', + 'sxc' => 'application/vnd.sun.xml.calc', + 'sxd' => 'application/vnd.sun.xml.draw', + 'sxg' => 'application/vnd.sun.xml.writer.global', + 'sxi' => 'application/vnd.sun.xml.impress', + 'sxm' => 'application/vnd.sun.xml.math', + 'sxw' => 'application/vnd.sun.xml.writer', + 't' => 'text/troff', + 'tao' => 'application/vnd.tao.intent-module-archive', + 'tar' => 'application/x-tar', + 'tcap' => 'application/vnd.3gpp2.tcap', + 'tcl' => 'application/x-tcl', + 'teacher' => 'application/vnd.smart.teacher', + 'tei' => 'application/tei+xml', + 'teicorpus' => 'application/tei+xml', + 'tex' => 'application/x-tex', + 'texi' => 'application/x-texinfo', + 'texinfo' => 'application/x-texinfo', + 'text' => 'text/plain', + 'tfi' => 'application/thraud+xml', + 'tfm' => 'application/x-tex-tfm', + 'thmx' => 'application/vnd.ms-officetheme', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'tmo' => 'application/vnd.tmobile-livetv', + 'torrent' => 'application/x-bittorrent', + 'tpl' => 'application/vnd.groove-tool-template', + 'tpt' => 'application/vnd.trid.tpt', + 'tr' => 'text/troff', + 'tra' => 'application/vnd.trueapp', + 'trm' => 'application/x-msterminal', + 'tsd' => 'application/timestamped-data', + 'tsv' => 'text/tab-separated-values', + 'ttc' => 'application/x-font-ttf', + 'ttf' => 'application/x-font-ttf', + 'ttl' => 'text/turtle', + 'twd' => 'application/vnd.simtech-mindmapper', + 'twds' => 'application/vnd.simtech-mindmapper', + 'txd' => 'application/vnd.genomatix.tuxedo', + 'txf' => 'application/vnd.mobius.txf', + 'txt' => 'text/plain', + 'u32' => 'application/x-authorware-bin', + 'udeb' => 'application/x-debian-package', + 'ufd' => 'application/vnd.ufdl', + 'ufdl' => 'application/vnd.ufdl', + 'umj' => 'application/vnd.umajin', + 'unityweb' => 'application/vnd.unity', + 'uoml' => 'application/vnd.uoml+xml', + 'uri' => 'text/uri-list', + 'uris' => 'text/uri-list', + 'urls' => 'text/uri-list', + 'ustar' => 'application/x-ustar', + 'utz' => 'application/vnd.uiq.theme', + 'uu' => 'text/x-uuencode', + 'uva' => 'audio/vnd.dece.audio', + 'uvd' => 'application/vnd.dece.data', + 'uvf' => 'application/vnd.dece.data', + 'uvg' => 'image/vnd.dece.graphic', + 'uvh' => 'video/vnd.dece.hd', + 'uvi' => 'image/vnd.dece.graphic', + 'uvm' => 'video/vnd.dece.mobile', + 'uvp' => 'video/vnd.dece.pd', + 'uvs' => 'video/vnd.dece.sd', + 'uvt' => 'application/vnd.dece.ttml+xml', + 'uvu' => 'video/vnd.uvvu.mp4', + 'uvv' => 'video/vnd.dece.video', + 'uvva' => 'audio/vnd.dece.audio', + 'uvvd' => 'application/vnd.dece.data', + 'uvvf' => 'application/vnd.dece.data', + 'uvvg' => 'image/vnd.dece.graphic', + 'uvvh' => 'video/vnd.dece.hd', + 'uvvi' => 'image/vnd.dece.graphic', + 'uvvm' => 'video/vnd.dece.mobile', + 'uvvp' => 'video/vnd.dece.pd', + 'uvvs' => 'video/vnd.dece.sd', + 'uvvt' => 'application/vnd.dece.ttml+xml', + 'uvvu' => 'video/vnd.uvvu.mp4', + 'uvvv' => 'video/vnd.dece.video', + 'uvvx' => 'application/vnd.dece.unspecified', + 'uvx' => 'application/vnd.dece.unspecified', + 'vcd' => 'application/x-cdlink', + 'vcf' => 'text/x-vcard', + 'vcg' => 'application/vnd.groove-vcard', + 'vcs' => 'text/x-vcalendar', + 'vcx' => 'application/vnd.vcx', + 'vis' => 'application/vnd.visionary', + 'viv' => 'video/vnd.vivo', + 'vor' => 'application/vnd.stardivision.writer', + 'vox' => 'application/x-authorware-bin', + 'vrml' => 'model/vrml', + 'vsd' => 'application/vnd.visio', + 'vsf' => 'application/vnd.vsf', + 'vss' => 'application/vnd.visio', + 'vst' => 'application/vnd.visio', + 'vsw' => 'application/vnd.visio', + 'vtu' => 'model/vnd.vtu', + 'vxml' => 'application/voicexml+xml', + 'w3d' => 'application/x-director', + 'wad' => 'application/x-doom', + 'wav' => 'audio/x-wav', + 'wax' => 'audio/x-ms-wax', + 'wbmp' => 'image/vnd.wap.wbmp', + 'wbs' => 'application/vnd.criticaltools.wbs+xml', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wcm' => 'application/vnd.ms-works', + 'wdb' => 'application/vnd.ms-works', + 'weba' => 'audio/webm', + 'webm' => 'video/webm', + 'webp' => 'image/webp', + 'wg' => 'application/vnd.pmi.widget', + 'wgt' => 'application/widget', + 'wks' => 'application/vnd.ms-works', + 'wm' => 'video/x-ms-wm', + 'wma' => 'audio/x-ms-wma', + 'wmd' => 'application/x-ms-wmd', + 'wmf' => 'application/x-msmetafile', + 'wml' => 'text/vnd.wap.wml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmls' => 'text/vnd.wap.wmlscript', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'wmv' => 'video/x-ms-wmv', + 'wmx' => 'video/x-ms-wmx', + 'wmz' => 'application/x-ms-wmz', + 'woff' => 'application/x-font-woff', + 'wpd' => 'application/vnd.wordperfect', + 'wpl' => 'application/vnd.ms-wpl', + 'wps' => 'application/vnd.ms-works', + 'wqd' => 'application/vnd.wqd', + 'wri' => 'application/x-mswrite', + 'wrl' => 'model/vrml', + 'wsdl' => 'application/wsdl+xml', + 'wspolicy' => 'application/wspolicy+xml', + 'wtb' => 'application/vnd.webturbo', + 'wvx' => 'video/x-ms-wvx', + 'x32' => 'application/x-authorware-bin', + 'x3d' => 'application/vnd.hzn-3d-crossword', + 'xap' => 'application/x-silverlight-app', + 'xar' => 'application/vnd.xara', + 'xbap' => 'application/x-ms-xbap', + 'xbd' => 'application/vnd.fujixerox.docuworks.binder', + 'xbm' => 'image/x-xbitmap', + 'xdf' => 'application/xcap-diff+xml', + 'xdm' => 'application/vnd.syncml.dm+xml', + 'xdp' => 'application/vnd.adobe.xdp+xml', + 'xdssc' => 'application/dssc+xml', + 'xdw' => 'application/vnd.fujixerox.docuworks', + 'xenc' => 'application/xenc+xml', + 'xer' => 'application/patch-ops-error+xml', + 'xfdf' => 'application/vnd.adobe.xfdf', + 'xfdl' => 'application/vnd.xfdl', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'xhvml' => 'application/xv+xml', + 'xif' => 'image/vnd.xiff', + 'xla' => 'application/vnd.ms-excel', + 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', + 'xlc' => 'application/vnd.ms-excel', + 'xlm' => 'application/vnd.ms-excel', + 'xls' => 'application/vnd.ms-excel', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', + 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xlt' => 'application/vnd.ms-excel', + 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'xlw' => 'application/vnd.ms-excel', + 'xml' => 'application/xml', + 'xo' => 'application/vnd.olpc-sugar', + 'xop' => 'application/xop+xml', + 'xpi' => 'application/x-xpinstall', + 'xpm' => 'image/x-xpixmap', + 'xpr' => 'application/vnd.is-xpr', + 'xps' => 'application/vnd.ms-xpsdocument', + 'xpw' => 'application/vnd.intercon.formnet', + 'xpx' => 'application/vnd.intercon.formnet', + 'xsl' => 'application/xml', + 'xslt' => 'application/xslt+xml', + 'xsm' => 'application/vnd.syncml+xml', + 'xspf' => 'application/xspf+xml', + 'xul' => 'application/vnd.mozilla.xul+xml', + 'xvm' => 'application/xv+xml', + 'xvml' => 'application/xv+xml', + 'xwd' => 'image/x-xwindowdump', + 'xyz' => 'chemical/x-xyz', + 'yaml' => 'text/yaml', + 'yang' => 'application/yang', + 'yin' => 'application/yin+xml', + 'yml' => 'text/yaml', + 'zaz' => 'application/vnd.zzazz.deck+xml', + 'zip' => 'application/zip', + 'zir' => 'application/vnd.zul', + 'zirz' => 'application/vnd.zul', + 'zmm' => 'application/vnd.handheld-entertainment+xml' + ]; + + /** + * Get a singleton instance of the class + * + * @return self + * @codeCoverageIgnore + */ + public static function getInstance() + { + if (!self::$instance) { + self::$instance = new self(); + } + + return self::$instance; + } + + /** + * Get a mimetype value from a file extension + * + * @param string $extension File extension + * + * @return string|null + */ + public function fromExtension($extension) + { + $extension = strtolower($extension); + + return isset($this->mimetypes[$extension]) ? $this->mimetypes[$extension] : null; + } + + /** + * Get a mimetype from a filename + * + * @param string $filename Filename to generate a mimetype from + * + * @return string|null + */ + public function fromFilename($filename) + { + return $this->fromExtension(pathinfo($filename, PATHINFO_EXTENSION)); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/Collection.php b/modules/oauth/src/facebook/GraphNodes/Collection.php new file mode 100644 index 0000000..cac010b --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/Collection.php @@ -0,0 +1,242 @@ +items = $items; + } + + /** + * Gets the value of a field from the Graph node. + * + * @param string $name The field to retrieve. + * @param mixed $default The default to return if the field doesn't exist. + * + * @return mixed + */ + public function getField($name, $default = null) + { + if (isset($this->items[$name])) { + return $this->items[$name]; + } + + return $default ?: null; + } + + /** + * Gets the value of the named property for this graph object. + * + * @param string $name The property to retrieve. + * @param mixed $default The default to return if the property doesn't exist. + * + * @return mixed + * + * @deprecated 5.0.0 getProperty() has been renamed to getField() + * @todo v6: Remove this method + */ + public function getProperty($name, $default = null) + { + return $this->getField($name, $default); + } + + /** + * Returns a list of all fields set on the object. + * + * @return array + */ + public function getFieldNames() + { + return array_keys($this->items); + } + + /** + * Returns a list of all properties set on the object. + * + * @return array + * + * @deprecated 5.0.0 getPropertyNames() has been renamed to getFieldNames() + * @todo v6: Remove this method + */ + public function getPropertyNames() + { + return $this->getFieldNames(); + } + + /** + * Get all of the items in the collection. + * + * @return array + */ + public function all() + { + return $this->items; + } + + /** + * Get the collection of items as a plain array. + * + * @return array + */ + public function asArray() + { + return array_map(function ($value) { + return $value instanceof Collection ? $value->asArray() : $value; + }, $this->items); + } + + /** + * Run a map over each of the items. + * + * @param \Closure $callback + * + * @return static + */ + public function map(\Closure $callback) + { + return new static(array_map($callback, $this->items, array_keys($this->items))); + } + + /** + * Get the collection of items as JSON. + * + * @param int $options + * + * @return string + */ + public function asJson($options = 0) + { + return json_encode($this->asArray(), $options); + } + + /** + * Count the number of items in the collection. + * + * @return int + */ + public function count() + { + return count($this->items); + } + + /** + * Get an iterator for the items. + * + * @return ArrayIterator + */ + public function getIterator() + { + return new ArrayIterator($this->items); + } + + /** + * Determine if an item exists at an offset. + * + * @param mixed $key + * + * @return bool + */ + public function offsetExists($key) + { + return array_key_exists($key, $this->items); + } + + /** + * Get an item at a given offset. + * + * @param mixed $key + * + * @return mixed + */ + public function offsetGet($key) + { + return $this->items[$key]; + } + + /** + * Set the item at a given offset. + * + * @param mixed $key + * @param mixed $value + * + * @return void + */ + public function offsetSet($key, $value) + { + if (is_null($key)) { + $this->items[] = $value; + } else { + $this->items[$key] = $value; + } + } + + /** + * Unset the item at a given offset. + * + * @param string $key + * + * @return void + */ + public function offsetUnset($key) + { + unset($this->items[$key]); + } + + /** + * Convert the collection to its string representation. + * + * @return string + */ + public function __toString() + { + return $this->asJson(); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphAchievement.php b/modules/oauth/src/facebook/GraphNodes/GraphAchievement.php new file mode 100644 index 0000000..3fba815 --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphAchievement.php @@ -0,0 +1,113 @@ + '\Facebook\GraphNodes\GraphUser', + 'application' => '\Facebook\GraphNodes\GraphApplication', + ]; + + /** + * Returns the ID for the achievement. + * + * @return string|null + */ + public function getId() + { + return $this->getField('id'); + } + + /** + * Returns the user who achieved this. + * + * @return GraphUser|null + */ + public function getFrom() + { + return $this->getField('from'); + } + + /** + * Returns the time at which this was achieved. + * + * @return \DateTime|null + */ + public function getPublishTime() + { + return $this->getField('publish_time'); + } + + /** + * Returns the app in which the user achieved this. + * + * @return GraphApplication|null + */ + public function getApplication() + { + return $this->getField('application'); + } + + /** + * Returns information about the achievement type this instance is connected with. + * + * @return array|null + */ + public function getData() + { + return $this->getField('data'); + } + + /** + * Returns the type of achievement. + * + * @see https://developers.facebook.com/docs/graph-api/reference/v2.2/achievement + * + * @return string + */ + public function getType() + { + return 'game.achievement'; + } + + /** + * Indicates whether gaining the achievement published a feed story for the user. + * + * @return boolean|null + */ + public function isNoFeedStory() + { + return $this->getField('no_feed_story'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphAlbum.php b/modules/oauth/src/facebook/GraphNodes/GraphAlbum.php new file mode 100644 index 0000000..50d1f2c --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphAlbum.php @@ -0,0 +1,183 @@ + '\Facebook\GraphNodes\GraphUser', + 'place' => '\Facebook\GraphNodes\GraphPage', + ]; + + /** + * Returns the ID for the album. + * + * @return string|null + */ + public function getId() + { + return $this->getField('id'); + } + + /** + * Returns whether the viewer can upload photos to this album. + * + * @return boolean|null + */ + public function getCanUpload() + { + return $this->getField('can_upload'); + } + + /** + * Returns the number of photos in this album. + * + * @return int|null + */ + public function getCount() + { + return $this->getField('count'); + } + + /** + * Returns the ID of the album's cover photo. + * + * @return string|null + */ + public function getCoverPhoto() + { + return $this->getField('cover_photo'); + } + + /** + * Returns the time the album was initially created. + * + * @return \DateTime|null + */ + public function getCreatedTime() + { + return $this->getField('created_time'); + } + + /** + * Returns the time the album was updated. + * + * @return \DateTime|null + */ + public function getUpdatedTime() + { + return $this->getField('updated_time'); + } + + /** + * Returns the description of the album. + * + * @return string|null + */ + public function getDescription() + { + return $this->getField('description'); + } + + /** + * Returns profile that created the album. + * + * @return GraphUser|null + */ + public function getFrom() + { + return $this->getField('from'); + } + + /** + * Returns profile that created the album. + * + * @return GraphPage|null + */ + public function getPlace() + { + return $this->getField('place'); + } + + /** + * Returns a link to this album on Facebook. + * + * @return string|null + */ + public function getLink() + { + return $this->getField('link'); + } + + /** + * Returns the textual location of the album. + * + * @return string|null + */ + public function getLocation() + { + return $this->getField('location'); + } + + /** + * Returns the title of the album. + * + * @return string|null + */ + public function getName() + { + return $this->getField('name'); + } + + /** + * Returns the privacy settings for the album. + * + * @return string|null + */ + public function getPrivacy() + { + return $this->getField('privacy'); + } + + /** + * Returns the type of the album. + * + * enum{ profile, mobile, wall, normal, album } + * + * @return string|null + */ + public function getType() + { + return $this->getField('type'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphApplication.php b/modules/oauth/src/facebook/GraphNodes/GraphApplication.php new file mode 100644 index 0000000..69b09bb --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphApplication.php @@ -0,0 +1,43 @@ +getField('id'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphCoverPhoto.php b/modules/oauth/src/facebook/GraphNodes/GraphCoverPhoto.php new file mode 100644 index 0000000..ee60750 --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphCoverPhoto.php @@ -0,0 +1,72 @@ +getField('id'); + } + + /** + * Returns the source of cover if it exists + * + * @return string|null + */ + public function getSource() + { + return $this->getField('source'); + } + + /** + * Returns the offset_x of cover if it exists + * + * @return int|null + */ + public function getOffsetX() + { + return $this->getField('offset_x'); + } + + /** + * Returns the offset_y of cover if it exists + * + * @return int|null + */ + public function getOffsetY() + { + return $this->getField('offset_y'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphEdge.php b/modules/oauth/src/facebook/GraphNodes/GraphEdge.php new file mode 100644 index 0000000..95f3284 --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphEdge.php @@ -0,0 +1,260 @@ +request = $request; + $this->metaData = $metaData; + $this->parentEdgeEndpoint = $parentEdgeEndpoint; + $this->subclassName = $subclassName; + + parent::__construct($data); + } + + /** + * Gets the parent Graph edge endpoint that generated the list. + * + * @return string|null + */ + public function getParentGraphEdge() + { + return $this->parentEdgeEndpoint; + } + + /** + * Gets the subclass name that the child GraphNode's are cast as. + * + * @return string|null + */ + public function getSubClassName() + { + return $this->subclassName; + } + + /** + * Returns the raw meta data associated with this GraphEdge. + * + * @return array + */ + public function getMetaData() + { + return $this->metaData; + } + + /** + * Returns the next cursor if it exists. + * + * @return string|null + */ + public function getNextCursor() + { + return $this->getCursor('after'); + } + + /** + * Returns the previous cursor if it exists. + * + * @return string|null + */ + public function getPreviousCursor() + { + return $this->getCursor('before'); + } + + /** + * Returns the cursor for a specific direction if it exists. + * + * @param string $direction The direction of the page: after|before + * + * @return string|null + */ + public function getCursor($direction) + { + if (isset($this->metaData['paging']['cursors'][$direction])) { + return $this->metaData['paging']['cursors'][$direction]; + } + + return null; + } + + /** + * Generates a pagination URL based on a cursor. + * + * @param string $direction The direction of the page: next|previous + * + * @return string|null + * + * @throws FacebookSDKException + */ + public function getPaginationUrl($direction) + { + $this->validateForPagination(); + + // Do we have a paging URL? + if (isset($this->metaData['paging'][$direction])) { + // Graph returns the full URL with all the original params. + // We just want the endpoint though. + $pageUrl = $this->metaData['paging'][$direction]; + + return FacebookUrlManipulator::baseGraphUrlEndpoint($pageUrl); + } + + // Do we have a cursor to work with? + $cursorDirection = $direction === 'next' ? 'after' : 'before'; + $cursor = $this->getCursor($cursorDirection); + if (!$cursor) { + return null; + } + + // If we don't know the ID of the parent node, this ain't gonna work. + if (!$this->parentEdgeEndpoint) { + return null; + } + + // We have the parent node ID, paging cursor & original request. + // These were the ingredients chosen to create the perfect little URL. + $pageUrl = $this->parentEdgeEndpoint . '?' . $cursorDirection . '=' . urlencode($cursor); + + // Pull in the original params + $originalUrl = $this->request->getUrl(); + $pageUrl = FacebookUrlManipulator::mergeUrlParams($originalUrl, $pageUrl); + + return FacebookUrlManipulator::forceSlashPrefix($pageUrl); + } + + /** + * Validates whether or not we can paginate on this request. + * + * @throws FacebookSDKException + */ + public function validateForPagination() + { + if ($this->request->getMethod() !== 'GET') { + throw new FacebookSDKException('You can only paginate on a GET request.', 720); + } + } + + /** + * Gets the request object needed to make a next|previous page request. + * + * @param string $direction The direction of the page: next|previous + * + * @return FacebookRequest|null + * + * @throws FacebookSDKException + */ + public function getPaginationRequest($direction) + { + $pageUrl = $this->getPaginationUrl($direction); + if (!$pageUrl) { + return null; + } + + $newRequest = clone $this->request; + $newRequest->setEndpoint($pageUrl); + + return $newRequest; + } + + /** + * Gets the request object needed to make a "next" page request. + * + * @return FacebookRequest|null + * + * @throws FacebookSDKException + */ + public function getNextPageRequest() + { + return $this->getPaginationRequest('next'); + } + + /** + * Gets the request object needed to make a "previous" page request. + * + * @return FacebookRequest|null + * + * @throws FacebookSDKException + */ + public function getPreviousPageRequest() + { + return $this->getPaginationRequest('previous'); + } + + /** + * The total number of results according to Graph if it exists. + * + * This will be returned if the summary=true modifier is present in the request. + * + * @return int|null + */ + public function getTotalCount() + { + if (isset($this->metaData['summary']['total_count'])) { + return $this->metaData['summary']['total_count']; + } + + return null; + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphEvent.php b/modules/oauth/src/facebook/GraphNodes/GraphEvent.php new file mode 100644 index 0000000..19ff2fb --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphEvent.php @@ -0,0 +1,242 @@ + '\Facebook\GraphNodes\GraphCoverPhoto', + 'place' => '\Facebook\GraphNodes\GraphPage', + 'picture' => '\Facebook\GraphNodes\GraphPicture', + 'parent_group' => '\Facebook\GraphNodes\GraphGroup', + ]; + + /** + * Returns the `id` (The event ID) as string if present. + * + * @return string|null + */ + public function getId() + { + return $this->getField('id'); + } + + /** + * Returns the `cover` (Cover picture) as GraphCoverPhoto if present. + * + * @return GraphCoverPhoto|null + */ + public function getCover() + { + return $this->getField('cover'); + } + + /** + * Returns the `description` (Long-form description) as string if present. + * + * @return string|null + */ + public function getDescription() + { + return $this->getField('description'); + } + + /** + * Returns the `end_time` (End time, if one has been set) as DateTime if present. + * + * @return \DateTime|null + */ + public function getEndTime() + { + return $this->getField('end_time'); + } + + /** + * Returns the `is_date_only` (Whether the event only has a date specified, but no time) as bool if present. + * + * @return bool|null + */ + public function getIsDateOnly() + { + return $this->getField('is_date_only'); + } + + /** + * Returns the `name` (Event name) as string if present. + * + * @return string|null + */ + public function getName() + { + return $this->getField('name'); + } + + /** + * Returns the `owner` (The profile that created the event) as GraphNode if present. + * + * @return GraphNode|null + */ + public function getOwner() + { + return $this->getField('owner'); + } + + /** + * Returns the `parent_group` (The group the event belongs to) as GraphGroup if present. + * + * @return GraphGroup|null + */ + public function getParentGroup() + { + return $this->getField('parent_group'); + } + + /** + * Returns the `place` (Event Place information) as GraphPage if present. + * + * @return GraphPage|null + */ + public function getPlace() + { + return $this->getField('place'); + } + + /** + * Returns the `privacy` (Who can see the event) as string if present. + * + * @return string|null + */ + public function getPrivacy() + { + return $this->getField('privacy'); + } + + /** + * Returns the `start_time` (Start time) as DateTime if present. + * + * @return \DateTime|null + */ + public function getStartTime() + { + return $this->getField('start_time'); + } + + /** + * Returns the `ticket_uri` (The link users can visit to buy a ticket to this event) as string if present. + * + * @return string|null + */ + public function getTicketUri() + { + return $this->getField('ticket_uri'); + } + + /** + * Returns the `timezone` (Timezone) as string if present. + * + * @return string|null + */ + public function getTimezone() + { + return $this->getField('timezone'); + } + + /** + * Returns the `updated_time` (Last update time) as DateTime if present. + * + * @return \DateTime|null + */ + public function getUpdatedTime() + { + return $this->getField('updated_time'); + } + + /** + * Returns the `picture` (Event picture) as GraphPicture if present. + * + * @return GraphPicture|null + */ + public function getPicture() + { + return $this->getField('picture'); + } + + /** + * Returns the `attending_count` (Number of people attending the event) as int if present. + * + * @return int|null + */ + public function getAttendingCount() + { + return $this->getField('attending_count'); + } + + /** + * Returns the `declined_count` (Number of people who declined the event) as int if present. + * + * @return int|null + */ + public function getDeclinedCount() + { + return $this->getField('declined_count'); + } + + /** + * Returns the `maybe_count` (Number of people who maybe going to the event) as int if present. + * + * @return int|null + */ + public function getMaybeCount() + { + return $this->getField('maybe_count'); + } + + /** + * Returns the `noreply_count` (Number of people who did not reply to the event) as int if present. + * + * @return int|null + */ + public function getNoreplyCount() + { + return $this->getField('noreply_count'); + } + + /** + * Returns the `invited_count` (Number of people invited to the event) as int if present. + * + * @return int|null + */ + public function getInvitedCount() + { + return $this->getField('invited_count'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphGroup.php b/modules/oauth/src/facebook/GraphNodes/GraphGroup.php new file mode 100644 index 0000000..07a4dbd --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphGroup.php @@ -0,0 +1,171 @@ + '\Facebook\GraphNodes\GraphCoverPhoto', + 'venue' => '\Facebook\GraphNodes\GraphLocation', + ]; + + /** + * Returns the `id` (The Group ID) as string if present. + * + * @return string|null + */ + public function getId() + { + return $this->getField('id'); + } + + /** + * Returns the `cover` (The cover photo of the Group) as GraphCoverPhoto if present. + * + * @return GraphCoverPhoto|null + */ + public function getCover() + { + return $this->getField('cover'); + } + + /** + * Returns the `description` (A brief description of the Group) as string if present. + * + * @return string|null + */ + public function getDescription() + { + return $this->getField('description'); + } + + /** + * Returns the `email` (The email address to upload content to the Group. Only current members of the Group can use this) as string if present. + * + * @return string|null + */ + public function getEmail() + { + return $this->getField('email'); + } + + /** + * Returns the `icon` (The URL for the Group's icon) as string if present. + * + * @return string|null + */ + public function getIcon() + { + return $this->getField('icon'); + } + + /** + * Returns the `link` (The Group's website) as string if present. + * + * @return string|null + */ + public function getLink() + { + return $this->getField('link'); + } + + /** + * Returns the `name` (The name of the Group) as string if present. + * + * @return string|null + */ + public function getName() + { + return $this->getField('name'); + } + + /** + * Returns the `member_request_count` (Number of people asking to join the group.) as int if present. + * + * @return int|null + */ + public function getMemberRequestCount() + { + return $this->getField('member_request_count'); + } + + /** + * Returns the `owner` (The profile that created this Group) as GraphNode if present. + * + * @return GraphNode|null + */ + public function getOwner() + { + return $this->getField('owner'); + } + + /** + * Returns the `parent` (The parent Group of this Group, if it exists) as GraphNode if present. + * + * @return GraphNode|null + */ + public function getParent() + { + return $this->getField('parent'); + } + + /** + * Returns the `privacy` (The privacy setting of the Group) as string if present. + * + * @return string|null + */ + public function getPrivacy() + { + return $this->getField('privacy'); + } + + /** + * Returns the `updated_time` (The last time the Group was updated (this includes changes in the Group's properties and changes in posts and comments if user can see them)) as \DateTime if present. + * + * @return \DateTime|null + */ + public function getUpdatedTime() + { + return $this->getField('updated_time'); + } + + /** + * Returns the `venue` (The location for the Group) as GraphLocation if present. + * + * @return GraphLocation|null + */ + public function getVenue() + { + return $this->getField('venue'); + } + +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphList.php b/modules/oauth/src/facebook/GraphNodes/GraphList.php new file mode 100644 index 0000000..a60a07a --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphList.php @@ -0,0 +1,36 @@ +getField('street'); + } + + /** + * Returns the city component of the location + * + * @return string|null + */ + public function getCity() + { + return $this->getField('city'); + } + + /** + * Returns the state component of the location + * + * @return string|null + */ + public function getState() + { + return $this->getField('state'); + } + + /** + * Returns the country component of the location + * + * @return string|null + */ + public function getCountry() + { + return $this->getField('country'); + } + + /** + * Returns the zipcode component of the location + * + * @return string|null + */ + public function getZip() + { + return $this->getField('zip'); + } + + /** + * Returns the latitude component of the location + * + * @return float|null + */ + public function getLatitude() + { + return $this->getField('latitude'); + } + + /** + * Returns the street component of the location + * + * @return float|null + */ + public function getLongitude() + { + return $this->getField('longitude'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphNode.php b/modules/oauth/src/facebook/GraphNodes/GraphNode.php new file mode 100644 index 0000000..0d2f504 --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphNode.php @@ -0,0 +1,185 @@ +castItems($data)); + } + + /** + * Iterates over an array and detects the types each node + * should be cast to and returns all the items as an array. + * + * @TODO Add auto-casting to AccessToken entities. + * + * @param array $data The array to iterate over. + * + * @return array + */ + public function castItems(array $data) + { + $items = []; + + foreach ($data as $k => $v) { + if ($this->shouldCastAsDateTime($k) + && (is_numeric($v) + || $k === 'birthday' + || $this->isIso8601DateString($v)) + ) { + $items[$k] = $this->castToDateTime($v); + } else { + $items[$k] = $v; + } + } + + return $items; + } + + /** + * Uncasts any auto-casted datatypes. + * Basically the reverse of castItems(). + * + * @return array + */ + public function uncastItems() + { + $items = $this->asArray(); + + return array_map(function ($v) { + if ($v instanceof \DateTime) { + return $v->format(\DateTime::ISO8601); + } + + return $v; + }, $items); + } + + /** + * Get the collection of items as JSON. + * + * @param int $options + * + * @return string + */ + public function asJson($options = 0) + { + return json_encode($this->uncastItems(), $options); + } + + /** + * Detects an ISO 8601 formatted string. + * + * @param string $string + * + * @return boolean + * + * @see https://developers.facebook.com/docs/graph-api/using-graph-api/#readmodifiers + * @see http://www.cl.cam.ac.uk/~mgk25/iso-time.html + * @see http://en.wikipedia.org/wiki/ISO_8601 + */ + public function isIso8601DateString($string) + { + // This insane regex was yoinked from here: + // http://www.pelagodesign.com/blog/2009/05/20/iso-8601-date-validation-that-doesnt-suck/ + // ...and I'm all like: + // http://thecodinglove.com/post/95378251969/when-code-works-and-i-dont-know-why + $crazyInsaneRegexThatSomehowDetectsIso8601 = '/^([\+-]?\d{4}(?!\d{2}\b))' + . '((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?' + . '|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d' + . '|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])' + . '((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d' + . '([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/'; + + return preg_match($crazyInsaneRegexThatSomehowDetectsIso8601, $string) === 1; + } + + /** + * Determines if a value from Graph should be cast to DateTime. + * + * @param string $key + * + * @return boolean + */ + public function shouldCastAsDateTime($key) + { + return in_array($key, [ + 'created_time', + 'updated_time', + 'start_time', + 'end_time', + 'backdated_time', + 'issued_at', + 'expires_at', + 'birthday', + 'publish_time' + ], true); + } + + /** + * Casts a date value from Graph to DateTime. + * + * @param int|string $value + * + * @return \DateTime + */ + public function castToDateTime($value) + { + if (is_int($value)) { + $dt = new \DateTime(); + $dt->setTimestamp($value); + } else { + $dt = new \DateTime($value); + } + + return $dt; + } + + /** + * Getter for $graphObjectMap. + * + * @return array + */ + public static function getObjectMap() + { + return static::$graphObjectMap; + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphNodeFactory.php b/modules/oauth/src/facebook/GraphNodes/GraphNodeFactory.php new file mode 100644 index 0000000..0d7bca2 --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphNodeFactory.php @@ -0,0 +1,392 @@ +response = $response; + $this->decodedBody = $response->getDecodedBody(); + } + + /** + * Tries to convert a FacebookResponse entity into a GraphNode. + * + * @param string|null $subclassName The GraphNode sub class to cast to. + * + * @return GraphNode + * + * @throws FacebookSDKException + */ + public function makeGraphNode($subclassName = null) + { + $this->validateResponseAsArray(); + $this->validateResponseCastableAsGraphNode(); + + return $this->castAsGraphNodeOrGraphEdge($this->decodedBody, $subclassName); + } + + /** + * Convenience method for creating a GraphAchievement collection. + * + * @return GraphAchievement + * + * @throws FacebookSDKException + */ + public function makeGraphAchievement() + { + return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphAchievement'); + } + + /** + * Convenience method for creating a GraphAlbum collection. + * + * @return GraphAlbum + * + * @throws FacebookSDKException + */ + public function makeGraphAlbum() + { + return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphAlbum'); + } + + /** + * Convenience method for creating a GraphPage collection. + * + * @return GraphPage + * + * @throws FacebookSDKException + */ + public function makeGraphPage() + { + return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphPage'); + } + + /** + * Convenience method for creating a GraphSessionInfo collection. + * + * @return GraphSessionInfo + * + * @throws FacebookSDKException + */ + public function makeGraphSessionInfo() + { + return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphSessionInfo'); + } + + /** + * Convenience method for creating a GraphUser collection. + * + * @return GraphUser + * + * @throws FacebookSDKException + */ + public function makeGraphUser() + { + return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphUser'); + } + + /** + * Convenience method for creating a GraphEvent collection. + * + * @return GraphEvent + * + * @throws FacebookSDKException + */ + public function makeGraphEvent() + { + return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphEvent'); + } + + /** + * Convenience method for creating a GraphGroup collection. + * + * @return GraphGroup + * + * @throws FacebookSDKException + */ + public function makeGraphGroup() + { + return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphGroup'); + } + + /** + * Tries to convert a FacebookResponse entity into a GraphEdge. + * + * @param string|null $subclassName The GraphNode sub class to cast the list items to. + * @param boolean $auto_prefix Toggle to auto-prefix the subclass name. + * + * @return GraphEdge + * + * @throws FacebookSDKException + */ + public function makeGraphEdge($subclassName = null, $auto_prefix = true) + { + $this->validateResponseAsArray(); + $this->validateResponseCastableAsGraphEdge(); + + if ($subclassName && $auto_prefix) { + $subclassName = static::BASE_GRAPH_OBJECT_PREFIX . $subclassName; + } + + return $this->castAsGraphNodeOrGraphEdge($this->decodedBody, $subclassName); + } + + /** + * Validates the decoded body. + * + * @throws FacebookSDKException + */ + public function validateResponseAsArray() + { + if (!is_array($this->decodedBody)) { + throw new FacebookSDKException('Unable to get response from Graph as array.', 620); + } + } + + /** + * Validates that the return data can be cast as a GraphNode. + * + * @throws FacebookSDKException + */ + public function validateResponseCastableAsGraphNode() + { + if (isset($this->decodedBody['data']) && static::isCastableAsGraphEdge($this->decodedBody['data'])) { + throw new FacebookSDKException( + 'Unable to convert response from Graph to a GraphNode because the response looks like a GraphEdge. Try using GraphNodeFactory::makeGraphEdge() instead.', + 620 + ); + } + } + + /** + * Validates that the return data can be cast as a GraphEdge. + * + * @throws FacebookSDKException + */ + public function validateResponseCastableAsGraphEdge() + { + if (!(isset($this->decodedBody['data']) && static::isCastableAsGraphEdge($this->decodedBody['data']))) { + throw new FacebookSDKException( + 'Unable to convert response from Graph to a GraphEdge because the response does not look like a GraphEdge. Try using GraphNodeFactory::makeGraphNode() instead.', + 620 + ); + } + } + + /** + * Safely instantiates a GraphNode of $subclassName. + * + * @param array $data The array of data to iterate over. + * @param string|null $subclassName The subclass to cast this collection to. + * + * @return GraphNode + * + * @throws FacebookSDKException + */ + public function safelyMakeGraphNode(array $data, $subclassName = null) + { + $subclassName = $subclassName ?: static::BASE_GRAPH_NODE_CLASS; + static::validateSubclass($subclassName); + + // Remember the parent node ID + $parentNodeId = isset($data['id']) ? $data['id'] : null; + + $items = []; + + foreach ($data as $k => $v) { + // Array means could be recurable + if (is_array($v)) { + // Detect any smart-casting from the $graphObjectMap array. + // This is always empty on the GraphNode collection, but subclasses can define + // their own array of smart-casting types. + $graphObjectMap = $subclassName::getObjectMap(); + $objectSubClass = isset($graphObjectMap[$k]) + ? $graphObjectMap[$k] + : null; + + // Could be a GraphEdge or GraphNode + $items[$k] = $this->castAsGraphNodeOrGraphEdge($v, $objectSubClass, $k, $parentNodeId); + } else { + $items[$k] = $v; + } + } + + return new $subclassName($items); + } + + /** + * Takes an array of values and determines how to cast each node. + * + * @param array $data The array of data to iterate over. + * @param string|null $subclassName The subclass to cast this collection to. + * @param string|null $parentKey The key of this data (Graph edge). + * @param string|null $parentNodeId The parent Graph node ID. + * + * @return GraphNode|GraphEdge + * + * @throws FacebookSDKException + */ + public function castAsGraphNodeOrGraphEdge(array $data, $subclassName = null, $parentKey = null, $parentNodeId = null) + { + if (isset($data['data'])) { + // Create GraphEdge + if (static::isCastableAsGraphEdge($data['data'])) { + return $this->safelyMakeGraphEdge($data, $subclassName, $parentKey, $parentNodeId); + } + // Sometimes Graph is a weirdo and returns a GraphNode under the "data" key + $data = $data['data']; + } + + // Create GraphNode + return $this->safelyMakeGraphNode($data, $subclassName); + } + + /** + * Return an array of GraphNode's. + * + * @param array $data The array of data to iterate over. + * @param string|null $subclassName The GraphNode subclass to cast each item in the list to. + * @param string|null $parentKey The key of this data (Graph edge). + * @param string|null $parentNodeId The parent Graph node ID. + * + * @return GraphEdge + * + * @throws FacebookSDKException + */ + public function safelyMakeGraphEdge(array $data, $subclassName = null, $parentKey = null, $parentNodeId = null) + { + if (!isset($data['data'])) { + throw new FacebookSDKException('Cannot cast data to GraphEdge. Expected a "data" key.', 620); + } + + $dataList = []; + foreach ($data['data'] as $graphNode) { + $dataList[] = $this->safelyMakeGraphNode($graphNode, $subclassName); + } + + $metaData = $this->getMetaData($data); + + // We'll need to make an edge endpoint for this in case it's a GraphEdge (for cursor pagination) + $parentGraphEdgeEndpoint = $parentNodeId && $parentKey ? '/' . $parentNodeId . '/' . $parentKey : null; + $className = static::BASE_GRAPH_EDGE_CLASS; + + return new $className($this->response->getRequest(), $dataList, $metaData, $parentGraphEdgeEndpoint, $subclassName); + } + + /** + * Get the meta data from a list in a Graph response. + * + * @param array $data The Graph response. + * + * @return array + */ + public function getMetaData(array $data) + { + unset($data['data']); + + return $data; + } + + /** + * Determines whether or not the data should be cast as a GraphEdge. + * + * @param array $data + * + * @return boolean + */ + public static function isCastableAsGraphEdge(array $data) + { + if ($data === []) { + return true; + } + + // Checks for a sequential numeric array which would be a GraphEdge + return array_keys($data) === range(0, count($data) - 1); + } + + /** + * Ensures that the subclass in question is valid. + * + * @param string $subclassName The GraphNode subclass to validate. + * + * @throws FacebookSDKException + */ + public static function validateSubclass($subclassName) + { + if ($subclassName == static::BASE_GRAPH_NODE_CLASS || is_subclass_of($subclassName, static::BASE_GRAPH_NODE_CLASS)) { + return; + } + + throw new FacebookSDKException('The given subclass "' . $subclassName . '" is not valid. Cannot cast to an object that is not a GraphNode subclass.', 620); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphObject.php b/modules/oauth/src/facebook/GraphNodes/GraphObject.php new file mode 100644 index 0000000..bb8f8e4 --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphObject.php @@ -0,0 +1,36 @@ +makeGraphNode($subclassName); + } + + /** + * Convenience method for creating a GraphEvent collection. + * + * @return GraphEvent + * + * @throws FacebookSDKException + */ + public function makeGraphEvent() + { + return $this->makeGraphObject(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphEvent'); + } + + /** + * Tries to convert a FacebookResponse entity into a GraphEdge. + * + * @param string|null $subclassName The GraphNode sub class to cast the list items to. + * @param boolean $auto_prefix Toggle to auto-prefix the subclass name. + * + * @return GraphEdge + * + * @deprecated 5.0.0 GraphObjectFactory has been renamed to GraphNodeFactory + */ + public function makeGraphList($subclassName = null, $auto_prefix = true) + { + return $this->makeGraphEdge($subclassName, $auto_prefix); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphPage.php b/modules/oauth/src/facebook/GraphNodes/GraphPage.php new file mode 100644 index 0000000..ab8e31a --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphPage.php @@ -0,0 +1,125 @@ + '\Facebook\GraphNodes\GraphPage', + 'global_brand_parent_page' => '\Facebook\GraphNodes\GraphPage', + 'location' => '\Facebook\GraphNodes\GraphLocation', + ]; + + /** + * Returns the ID for the user's page as a string if present. + * + * @return string|null + */ + public function getId() + { + return $this->getField('id'); + } + + /** + * Returns the Category for the user's page as a string if present. + * + * @return string|null + */ + public function getCategory() + { + return $this->getField('category'); + } + + /** + * Returns the Name of the user's page as a string if present. + * + * @return string|null + */ + public function getName() + { + return $this->getField('name'); + } + + /** + * Returns the best available Page on Facebook. + * + * @return GraphPage|null + */ + public function getBestPage() + { + return $this->getField('best_page'); + } + + /** + * Returns the brand's global (parent) Page. + * + * @return GraphPage|null + */ + public function getGlobalBrandParentPage() + { + return $this->getField('global_brand_parent_page'); + } + + /** + * Returns the location of this place. + * + * @return GraphLocation|null + */ + public function getLocation() + { + return $this->getField('location'); + } + + /** + * Returns the page access token for the admin user. + * + * Only available in the `/me/accounts` context. + * + * @return string|null + */ + public function getAccessToken() + { + return $this->getField('access_token'); + } + + /** + * Returns the roles of the page admin user. + * + * Only available in the `/me/accounts` context. + * + * @return array|null + */ + public function getPerms() + { + return $this->getField('perms'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphPicture.php b/modules/oauth/src/facebook/GraphNodes/GraphPicture.php new file mode 100644 index 0000000..bfd37fa --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphPicture.php @@ -0,0 +1,72 @@ +getField('is_silhouette'); + } + + /** + * Returns the url of user picture if it exists + * + * @return string|null + */ + public function getUrl() + { + return $this->getField('url'); + } + + /** + * Returns the width of user picture if it exists + * + * @return int|null + */ + public function getWidth() + { + return $this->getField('width'); + } + + /** + * Returns the height of user picture if it exists + * + * @return int|null + */ + public function getHeight() + { + return $this->getField('height'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphSessionInfo.php b/modules/oauth/src/facebook/GraphNodes/GraphSessionInfo.php new file mode 100644 index 0000000..3c9e2ff --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphSessionInfo.php @@ -0,0 +1,102 @@ +getField('app_id'); + } + + /** + * Returns the application name the token was issued for. + * + * @return string|null + */ + public function getApplication() + { + return $this->getField('application'); + } + + /** + * Returns the date & time that the token expires. + * + * @return \DateTime|null + */ + public function getExpiresAt() + { + return $this->getField('expires_at'); + } + + /** + * Returns whether the token is valid. + * + * @return boolean + */ + public function getIsValid() + { + return $this->getField('is_valid'); + } + + /** + * Returns the date & time the token was issued at. + * + * @return \DateTime|null + */ + public function getIssuedAt() + { + return $this->getField('issued_at'); + } + + /** + * Returns the scope permissions associated with the token. + * + * @return array + */ + public function getScopes() + { + return $this->getField('scopes'); + } + + /** + * Returns the login id of the user associated with the token. + * + * @return string|null + */ + public function getUserId() + { + return $this->getField('user_id'); + } +} diff --git a/modules/oauth/src/facebook/GraphNodes/GraphUser.php b/modules/oauth/src/facebook/GraphNodes/GraphUser.php new file mode 100644 index 0000000..a53005b --- /dev/null +++ b/modules/oauth/src/facebook/GraphNodes/GraphUser.php @@ -0,0 +1,172 @@ + '\Facebook\GraphNodes\GraphPage', + 'location' => '\Facebook\GraphNodes\GraphPage', + 'significant_other' => '\Facebook\GraphNodes\GraphUser', + 'picture' => '\Facebook\GraphNodes\GraphPicture', + ]; + + /** + * Returns the ID for the user as a string if present. + * + * @return string|null + */ + public function getId() + { + return $this->getField('id'); + } + + /** + * Returns the name for the user as a string if present. + * + * @return string|null + */ + public function getName() + { + return $this->getField('name'); + } + + /** + * Returns the first name for the user as a string if present. + * + * @return string|null + */ + public function getFirstName() + { + return $this->getField('first_name'); + } + + /** + * Returns the middle name for the user as a string if present. + * + * @return string|null + */ + public function getMiddleName() + { + return $this->getField('middle_name'); + } + + /** + * Returns the last name for the user as a string if present. + * + * @return string|null + */ + public function getLastName() + { + return $this->getField('last_name'); + } + + /** + * Returns the email for the user as a string if present. + * + * @return string|null + */ + public function getEmail() + { + return $this->getField('email'); + } + + /** + * Returns the gender for the user as a string if present. + * + * @return string|null + */ + public function getGender() + { + return $this->getField('gender'); + } + + /** + * Returns the Facebook URL for the user as a string if available. + * + * @return string|null + */ + public function getLink() + { + return $this->getField('link'); + } + + /** + * Returns the users birthday, if available. + * + * @return \DateTime|null + */ + public function getBirthday() + { + return $this->getField('birthday'); + } + + /** + * Returns the current location of the user as a GraphPage. + * + * @return GraphPage|null + */ + public function getLocation() + { + return $this->getField('location'); + } + + /** + * Returns the current location of the user as a GraphPage. + * + * @return GraphPage|null + */ + public function getHometown() + { + return $this->getField('hometown'); + } + + /** + * Returns the current location of the user as a GraphUser. + * + * @return GraphUser|null + */ + public function getSignificantOther() + { + return $this->getField('significant_other'); + } + + /** + * Returns the picture of the user as a GraphPicture + * + * @return GraphPicture|null + */ + public function getPicture() + { + return $this->getField('picture'); + } +} diff --git a/modules/oauth/src/facebook/Helpers/FacebookCanvasHelper.php b/modules/oauth/src/facebook/Helpers/FacebookCanvasHelper.php new file mode 100644 index 0000000..8068526 --- /dev/null +++ b/modules/oauth/src/facebook/Helpers/FacebookCanvasHelper.php @@ -0,0 +1,52 @@ +signedRequest ? $this->signedRequest->get('app_data') : null; + } + + /** + * Get raw signed request from POST. + * + * @return string|null + */ + public function getRawSignedRequest() + { + return $this->getRawSignedRequestFromPost() ?: null; + } +} diff --git a/modules/oauth/src/facebook/Helpers/FacebookJavaScriptHelper.php b/modules/oauth/src/facebook/Helpers/FacebookJavaScriptHelper.php new file mode 100644 index 0000000..5d406b5 --- /dev/null +++ b/modules/oauth/src/facebook/Helpers/FacebookJavaScriptHelper.php @@ -0,0 +1,42 @@ +getRawSignedRequestFromCookie(); + } +} diff --git a/modules/oauth/src/facebook/Helpers/FacebookPageTabHelper.php b/modules/oauth/src/facebook/Helpers/FacebookPageTabHelper.php new file mode 100644 index 0000000..ee43f5e --- /dev/null +++ b/modules/oauth/src/facebook/Helpers/FacebookPageTabHelper.php @@ -0,0 +1,95 @@ +signedRequest) { + return; + } + + $this->pageData = $this->signedRequest->get('page'); + } + + /** + * Returns a value from the page data. + * + * @param string $key + * @param mixed|null $default + * + * @return mixed|null + */ + public function getPageData($key, $default = null) + { + if (isset($this->pageData[$key])) { + return $this->pageData[$key]; + } + + return $default; + } + + /** + * Returns true if the user is an admin. + * + * @return boolean + */ + public function isAdmin() + { + return $this->getPageData('admin') === true; + } + + /** + * Returns the page id if available. + * + * @return string|null + */ + public function getPageId() + { + return $this->getPageData('id'); + } +} diff --git a/modules/oauth/src/facebook/Helpers/FacebookRedirectLoginHelper.php b/modules/oauth/src/facebook/Helpers/FacebookRedirectLoginHelper.php new file mode 100644 index 0000000..144a5b4 --- /dev/null +++ b/modules/oauth/src/facebook/Helpers/FacebookRedirectLoginHelper.php @@ -0,0 +1,360 @@ +oAuth2Client = $oAuth2Client; + $this->persistentDataHandler = $persistentDataHandler ?: new FacebookSessionPersistentDataHandler(); + $this->urlDetectionHandler = $urlHandler ?: new FacebookUrlDetectionHandler(); + $this->pseudoRandomStringGenerator = $prsg ?: $this->detectPseudoRandomStringGenerator(); + } + + /** + * Returns the persistent data handler. + * + * @return PersistentDataInterface + */ + public function getPersistentDataHandler() + { + return $this->persistentDataHandler; + } + + /** + * Returns the URL detection handler. + * + * @return UrlDetectionInterface + */ + public function getUrlDetectionHandler() + { + return $this->urlDetectionHandler; + } + + /** + * Returns the cryptographically secure pseudo-random string generator. + * + * @return PseudoRandomStringGeneratorInterface + */ + public function getPseudoRandomStringGenerator() + { + return $this->pseudoRandomStringGenerator; + } + + /** + * Detects which pseudo-random string generator to use. + * + * @return PseudoRandomStringGeneratorInterface + * + * @throws FacebookSDKException + */ + public function detectPseudoRandomStringGenerator() + { + // Since openssl_random_pseudo_bytes() can sometimes return non-cryptographically + // secure pseudo-random strings (in rare cases), we check for mcrypt_create_iv() first. + if (function_exists('mcrypt_create_iv')) { + return new McryptPseudoRandomStringGenerator(); + } + + if (function_exists('openssl_random_pseudo_bytes')) { + return new OpenSslPseudoRandomStringGenerator(); + } + + if (!ini_get('open_basedir') && is_readable('/dev/urandom')) { + return new UrandomPseudoRandomStringGenerator(); + } + + throw new FacebookSDKException('Unable to detect a cryptographically secure pseudo-random string generator.'); + } + + /** + * Stores CSRF state and returns a URL to which the user should be sent to in order to continue the login process with Facebook. + * + * @param string $redirectUrl The URL Facebook should redirect users to after login. + * @param array $scope List of permissions to request during login. + * @param array $params An array of parameters to generate URL. + * @param string $separator The separator to use in http_build_query(). + * + * @return string + */ + private function makeUrl($redirectUrl, array $scope, array $params = [], $separator = '&') + { + $state = $this->pseudoRandomStringGenerator->getPseudoRandomString(static::CSRF_LENGTH); + $this->persistentDataHandler->set('state', $state); + + return $this->oAuth2Client->getAuthorizationUrl($redirectUrl, $state, $scope, $params, $separator); + } + + /** + * Returns the URL to send the user in order to login to Facebook. + * + * @param string $redirectUrl The URL Facebook should redirect users to after login. + * @param array $scope List of permissions to request during login. + * @param string $separator The separator to use in http_build_query(). + * + * @return string + */ + public function getLoginUrl($redirectUrl, array $scope = [], $separator = '&') + { + return $this->makeUrl($redirectUrl, $scope, [], $separator); + } + + /** + * Returns the URL to send the user in order to log out of Facebook. + * + * @param AccessToken|string $accessToken The access token that will be logged out. + * @param string $next The url Facebook should redirect the user to after a successful logout. + * @param string $separator The separator to use in http_build_query(). + * + * @return string + * + * @throws FacebookSDKException + */ + public function getLogoutUrl($accessToken, $next, $separator = '&') + { + if (!$accessToken instanceof AccessToken) { + $accessToken = new AccessToken($accessToken); + } + + if ($accessToken->isAppAccessToken()) { + throw new FacebookSDKException('Cannot generate a logout URL with an app access token.', 722); + } + + $params = [ + 'next' => $next, + 'access_token' => $accessToken->getValue(), + ]; + + return 'https://www.facebook.com/logout.php?' . http_build_query($params, null, $separator); + } + + /** + * Returns the URL to send the user in order to login to Facebook with permission(s) to be re-asked. + * + * @param string $redirectUrl The URL Facebook should redirect users to after login. + * @param array $scope List of permissions to request during login. + * @param string $separator The separator to use in http_build_query(). + * + * @return string + */ + public function getReRequestUrl($redirectUrl, array $scope = [], $separator = '&') + { + $params = ['auth_type' => 'rerequest']; + + return $this->makeUrl($redirectUrl, $scope, $params, $separator); + } + + /** + * Returns the URL to send the user in order to login to Facebook with user to be re-authenticated. + * + * @param string $redirectUrl The URL Facebook should redirect users to after login. + * @param array $scope List of permissions to request during login. + * @param string $separator The separator to use in http_build_query(). + * + * @return string + */ + public function getReAuthenticationUrl($redirectUrl, array $scope = [], $separator = '&') + { + $params = ['auth_type' => 'reauthenticate']; + + return $this->makeUrl($redirectUrl, $scope, $params, $separator); + } + + /** + * Takes a valid code from a login redirect, and returns an AccessToken entity. + * + * @param string|null $redirectUrl The redirect URL. + * + * @return AccessToken|null + * + * @throws FacebookSDKException + */ + public function getAccessToken($redirectUrl = null) + { + if (!$code = $this->getCode()) { + return null; + } + + $this->validateCsrf(); + + $redirectUrl = $redirectUrl ?: $this->urlDetectionHandler->getCurrentUrl(); + // At minimum we need to remove the state param + $redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl, ['state']); + + return $this->oAuth2Client->getAccessTokenFromCode($code, $redirectUrl); + } + + /** + * Validate the request against a cross-site request forgery. + * + * @throws FacebookSDKException + */ + protected function validateCsrf() + { + $state = $this->getState(); + $savedState = $this->persistentDataHandler->get('state'); + + if (!$state || !$savedState) { + throw new FacebookSDKException('Cross-site request forgery validation failed. Required param "state" missing.'); + } + + $savedLen = strlen($savedState); + $givenLen = strlen($state); + + if ($savedLen !== $givenLen) { + throw new FacebookSDKException('Cross-site request forgery validation failed. The "state" param from the URL and session do not match.'); + } + + $result = 0; + for ($i = 0; $i < $savedLen; $i++) { + $result |= ord($state[$i]) ^ ord($savedState[$i]); + } + + if ($result !== 0) { + throw new FacebookSDKException('Cross-site request forgery validation failed. The "state" param from the URL and session do not match.'); + } + } + + /** + * Return the code. + * + * @return string|null + */ + protected function getCode() + { + return $this->getInput('code'); + } + + /** + * Return the state. + * + * @return string|null + */ + protected function getState() + { + return $this->getInput('state'); + } + + /** + * Return the error code. + * + * @return string|null + */ + public function getErrorCode() + { + return $this->getInput('error_code'); + } + + /** + * Returns the error. + * + * @return string|null + */ + public function getError() + { + return $this->getInput('error'); + } + + /** + * Returns the error reason. + * + * @return string|null + */ + public function getErrorReason() + { + return $this->getInput('error_reason'); + } + + /** + * Returns the error description. + * + * @return string|null + */ + public function getErrorDescription() + { + return $this->getInput('error_description'); + } + + /** + * Returns a value from a GET param. + * + * @param string $key + * + * @return string|null + */ + private function getInput($key) + { + return isset($_GET[$key]) ? $_GET[$key] : null; + } +} diff --git a/modules/oauth/src/facebook/Helpers/FacebookSignedRequestFromInputHelper.php b/modules/oauth/src/facebook/Helpers/FacebookSignedRequestFromInputHelper.php new file mode 100644 index 0000000..aafa246 --- /dev/null +++ b/modules/oauth/src/facebook/Helpers/FacebookSignedRequestFromInputHelper.php @@ -0,0 +1,166 @@ +app = $app; + $graphVersion = $graphVersion ?: Facebook::DEFAULT_GRAPH_VERSION; + $this->oAuth2Client = new OAuth2Client($this->app, $client, $graphVersion); + + $this->instantiateSignedRequest(); + } + + /** + * Instantiates a new SignedRequest entity. + * + * @param string|null + */ + public function instantiateSignedRequest($rawSignedRequest = null) + { + $rawSignedRequest = $rawSignedRequest ?: $this->getRawSignedRequest(); + + if (!$rawSignedRequest) { + return; + } + + $this->signedRequest = new SignedRequest($this->app, $rawSignedRequest); + } + + /** + * Returns an AccessToken entity from the signed request. + * + * @return AccessToken|null + * + * @throws \Facebook\Exceptions\FacebookSDKException + */ + public function getAccessToken() + { + if ($this->signedRequest && $this->signedRequest->hasOAuthData()) { + $code = $this->signedRequest->get('code'); + $accessToken = $this->signedRequest->get('oauth_token'); + + if ($code && !$accessToken) { + return $this->oAuth2Client->getAccessTokenFromCode($code); + } + + $expiresAt = $this->signedRequest->get('expires', 0); + + return new AccessToken($accessToken, $expiresAt); + } + + return null; + } + + /** + * Returns the SignedRequest entity. + * + * @return SignedRequest|null + */ + public function getSignedRequest() + { + return $this->signedRequest; + } + + /** + * Returns the user_id if available. + * + * @return string|null + */ + public function getUserId() + { + return $this->signedRequest ? $this->signedRequest->getUserId() : null; + } + + /** + * Get raw signed request from input. + * + * @return string|null + */ + abstract public function getRawSignedRequest(); + + /** + * Get raw signed request from POST input. + * + * @return string|null + */ + public function getRawSignedRequestFromPost() + { + if (isset($_POST['signed_request'])) { + return $_POST['signed_request']; + } + + return null; + } + + /** + * Get raw signed request from cookie set from the Javascript SDK. + * + * @return string|null + */ + public function getRawSignedRequestFromCookie() + { + if (isset($_COOKIE['fbsr_' . $this->app->getId()])) { + return $_COOKIE['fbsr_' . $this->app->getId()]; + } + + return null; + } +} diff --git a/modules/oauth/src/facebook/Http/GraphRawResponse.php b/modules/oauth/src/facebook/Http/GraphRawResponse.php new file mode 100644 index 0000000..583d303 --- /dev/null +++ b/modules/oauth/src/facebook/Http/GraphRawResponse.php @@ -0,0 +1,137 @@ +httpResponseCode = (int)$httpStatusCode; + } + + if (is_array($headers)) { + $this->headers = $headers; + } else { + $this->setHeadersFromString($headers); + } + + $this->body = $body; + } + + /** + * Return the response headers. + * + * @return array + */ + public function getHeaders() + { + return $this->headers; + } + + /** + * Return the body of the response. + * + * @return string + */ + public function getBody() + { + return $this->body; + } + + /** + * Return the HTTP response code. + * + * @return int + */ + public function getHttpResponseCode() + { + return $this->httpResponseCode; + } + + /** + * Sets the HTTP response code from a raw header. + * + * @param string $rawResponseHeader + */ + public function setHttpResponseCodeFromHeader($rawResponseHeader) + { + preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|', $rawResponseHeader, $match); + $this->httpResponseCode = (int)$match[1]; + } + + /** + * Parse the raw headers and set as an array. + * + * @param string $rawHeaders The raw headers from the response. + */ + protected function setHeadersFromString($rawHeaders) + { + // Normalize line breaks + $rawHeaders = str_replace("\r\n", "\n", $rawHeaders); + + // There will be multiple headers if a 301 was followed + // or a proxy was followed, etc + $headerCollection = explode("\n\n", trim($rawHeaders)); + // We just want the last response (at the end) + $rawHeader = array_pop($headerCollection); + + $headerComponents = explode("\n", $rawHeader); + foreach ($headerComponents as $line) { + if (strpos($line, ': ') === false) { + $this->setHttpResponseCodeFromHeader($line); + } else { + list($key, $value) = explode(': ', $line); + $this->headers[$key] = $value; + } + } + } +} diff --git a/modules/oauth/src/facebook/Http/RequestBodyInterface.php b/modules/oauth/src/facebook/Http/RequestBodyInterface.php new file mode 100644 index 0000000..97e0a2e --- /dev/null +++ b/modules/oauth/src/facebook/Http/RequestBodyInterface.php @@ -0,0 +1,39 @@ +params = $params; + $this->files = $files; + $this->boundary = $boundary ?: uniqid(); + } + + /** + * @inheritdoc + */ + public function getBody() + { + $body = ''; + + // Compile normal params + $params = $this->getNestedParams($this->params); + foreach ($params as $k => $v) { + $body .= $this->getParamString($k, $v); + } + + // Compile files + foreach ($this->files as $k => $v) { + $body .= $this->getFileString($k, $v); + } + + // Peace out + $body .= "--{$this->boundary}--\r\n"; + + return $body; + } + + /** + * Get the boundary + * + * @return string + */ + public function getBoundary() + { + return $this->boundary; + } + + /** + * Get the string needed to transfer a file. + * + * @param string $name + * @param FacebookFile $file + * + * @return string + */ + private function getFileString($name, FacebookFile $file) + { + return sprintf( + "--%s\r\nContent-Disposition: form-data; name=\"%s\"; filename=\"%s\"%s\r\n\r\n%s\r\n", + $this->boundary, + $name, + $file->getFileName(), + $this->getFileHeaders($file), + $file->getContents() + ); + } + + /** + * Get the string needed to transfer a POST field. + * + * @param string $name + * @param string $value + * + * @return string + */ + private function getParamString($name, $value) + { + return sprintf( + "--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n", + $this->boundary, + $name, + $value + ); + } + + /** + * Returns the params as an array of nested params. + * + * @param array $params + * + * @return array + */ + private function getNestedParams(array $params) + { + $query = http_build_query($params, null, '&'); + $params = explode('&', $query); + $result = []; + + foreach ($params as $param) { + list($key, $value) = explode('=', $param, 2); + $result[urldecode($key)] = urldecode($value); + } + + return $result; + } + + /** + * Get the headers needed before transferring the content of a POST file. + * + * @param FacebookFile $file + * + * @return string + */ + protected function getFileHeaders(FacebookFile $file) + { + return "\r\nContent-Type: {$file->getMimetype()}"; + } +} diff --git a/modules/oauth/src/facebook/Http/RequestBodyUrlEncoded.php b/modules/oauth/src/facebook/Http/RequestBodyUrlEncoded.php new file mode 100644 index 0000000..77c2b64 --- /dev/null +++ b/modules/oauth/src/facebook/Http/RequestBodyUrlEncoded.php @@ -0,0 +1,55 @@ +params = $params; + } + + /** + * @inheritdoc + */ + public function getBody() + { + return http_build_query($this->params, null, '&'); + } +} diff --git a/modules/oauth/src/facebook/HttpClients/FacebookCurl.php b/modules/oauth/src/facebook/HttpClients/FacebookCurl.php new file mode 100644 index 0000000..e5d124a --- /dev/null +++ b/modules/oauth/src/facebook/HttpClients/FacebookCurl.php @@ -0,0 +1,129 @@ +curl = curl_init(); + } + + /** + * Set a curl option + * + * @param $key + * @param $value + */ + public function setopt($key, $value) + { + curl_setopt($this->curl, $key, $value); + } + + /** + * Set an array of options to a curl resource + * + * @param array $options + */ + public function setoptArray(array $options) + { + curl_setopt_array($this->curl, $options); + } + + /** + * Send a curl request + * + * @return mixed + */ + public function exec() + { + return curl_exec($this->curl); + } + + /** + * Return the curl error number + * + * @return int + */ + public function errno() + { + return curl_errno($this->curl); + } + + /** + * Return the curl error message + * + * @return string + */ + public function error() + { + return curl_error($this->curl); + } + + /** + * Get info from a curl reference + * + * @param $type + * + * @return mixed + */ + public function getinfo($type) + { + return curl_getinfo($this->curl, $type); + } + + /** + * Get the currently installed curl version + * + * @return array + */ + public function version() + { + return curl_version(); + } + + /** + * Close the resource connection to curl + */ + public function close() + { + curl_close($this->curl); + } +} diff --git a/modules/oauth/src/facebook/HttpClients/FacebookCurlHttpClient.php b/modules/oauth/src/facebook/HttpClients/FacebookCurlHttpClient.php new file mode 100644 index 0000000..955ac06 --- /dev/null +++ b/modules/oauth/src/facebook/HttpClients/FacebookCurlHttpClient.php @@ -0,0 +1,210 @@ +facebookCurl = $facebookCurl ?: new FacebookCurl(); + } + + /** + * @inheritdoc + */ + public function send($url, $method, $body, array $headers, $timeOut) + { + $this->openConnection($url, $method, $body, $headers, $timeOut); + $this->sendRequest(); + + if ($curlErrorCode = $this->facebookCurl->errno()) { + throw new FacebookSDKException($this->facebookCurl->error(), $curlErrorCode); + } + + // Separate the raw headers from the raw body + list($rawHeaders, $rawBody) = $this->extractResponseHeadersAndBody(); + + $this->closeConnection(); + + return new GraphRawResponse($rawHeaders, $rawBody); + } + + /** + * Opens a new curl connection. + * + * @param string $url The endpoint to send the request to. + * @param string $method The request method. + * @param string $body The body of the request. + * @param array $headers The request headers. + * @param int $timeOut The timeout in seconds for the request. + */ + public function openConnection($url, $method, $body, array $headers, $timeOut) + { + $options = [ + CURLOPT_CUSTOMREQUEST => $method, + CURLOPT_HTTPHEADER => $this->compileRequestHeaders($headers), + CURLOPT_URL => $url, + CURLOPT_CONNECTTIMEOUT => 10, + CURLOPT_TIMEOUT => $timeOut, + CURLOPT_RETURNTRANSFER => true, // Follow 301 redirects + CURLOPT_HEADER => true, // Enable header processing + CURLOPT_SSL_VERIFYHOST => 2, + CURLOPT_SSL_VERIFYPEER => true, + CURLOPT_CAINFO => __DIR__ . '/certs/DigiCertHighAssuranceEVRootCA.pem', + ]; + + if ($method !== "GET") { + $options[CURLOPT_POSTFIELDS] = $body; + } + + $this->facebookCurl->init(); + $this->facebookCurl->setoptArray($options); + } + + /** + * Closes an existing curl connection + */ + public function closeConnection() + { + $this->facebookCurl->close(); + } + + /** + * Send the request and get the raw response from curl + */ + public function sendRequest() + { + $this->rawResponse = $this->facebookCurl->exec(); + } + + /** + * Compiles the request headers into a curl-friendly format. + * + * @param array $headers The request headers. + * + * @return array + */ + public function compileRequestHeaders(array $headers) + { + $return = []; + + foreach ($headers as $key => $value) { + $return[] = $key . ': ' . $value; + } + + return $return; + } + + /** + * Extracts the headers and the body into a two-part array + * + * @return array + */ + public function extractResponseHeadersAndBody() + { + $headerSize = $this->getHeaderSize(); + + $rawHeaders = mb_substr($this->rawResponse, 0, $headerSize); + $rawBody = mb_substr($this->rawResponse, $headerSize); + + return [trim($rawHeaders), trim($rawBody)]; + } + + /** + * Return proper header size + * + * @return integer + */ + private function getHeaderSize() + { + $headerSize = $this->facebookCurl->getinfo(CURLINFO_HEADER_SIZE); + // This corrects a Curl bug where header size does not account + // for additional Proxy headers. + if ($this->needsCurlProxyFix()) { + // Additional way to calculate the request body size. + if (preg_match('/Content-Length: (\d+)/', $this->rawResponse, $m)) { + $headerSize = mb_strlen($this->rawResponse) - $m[1]; + } elseif (stripos($this->rawResponse, self::CONNECTION_ESTABLISHED) !== false) { + $headerSize += mb_strlen(self::CONNECTION_ESTABLISHED); + } + } + + return $headerSize; + } + + /** + * Detect versions of Curl which report incorrect header lengths when + * using Proxies. + * + * @return boolean + */ + private function needsCurlProxyFix() + { + $ver = $this->facebookCurl->version(); + $version = $ver['version_number']; + + return $version < self::CURL_PROXY_QUIRK_VER; + } +} diff --git a/modules/oauth/src/facebook/HttpClients/FacebookGuzzleHttpClient.php b/modules/oauth/src/facebook/HttpClients/FacebookGuzzleHttpClient.php new file mode 100644 index 0000000..6f2a1c6 --- /dev/null +++ b/modules/oauth/src/facebook/HttpClients/FacebookGuzzleHttpClient.php @@ -0,0 +1,97 @@ +guzzleClient = $guzzleClient ?: new Client(); + } + + /** + * @inheritdoc + */ + public function send($url, $method, $body, array $headers, $timeOut) + { + $options = [ + 'headers' => $headers, + 'body' => $body, + 'timeout' => $timeOut, + 'connect_timeout' => 10, + 'verify' => __DIR__ . '/certs/DigiCertHighAssuranceEVRootCA.pem', + ]; + $request = $this->guzzleClient->createRequest($method, $url, $options); + + try { + $rawResponse = $this->guzzleClient->send($request); + } catch (RequestException $e) { + $rawResponse = $e->getResponse(); + + if ($e->getPrevious() instanceof RingException || !$rawResponse instanceof ResponseInterface) { + throw new FacebookSDKException($e->getMessage(), $e->getCode()); + } + } + + $rawHeaders = $this->getHeadersAsString($rawResponse); + $rawBody = $rawResponse->getBody(); + $httpStatusCode = $rawResponse->getStatusCode(); + + return new GraphRawResponse($rawHeaders, $rawBody, $httpStatusCode); + } + + /** + * Returns the Guzzle array of headers as a string. + * + * @param ResponseInterface $response The Guzzle response. + * + * @return string + */ + public function getHeadersAsString(ResponseInterface $response) + { + $headers = $response->getHeaders(); + $rawHeaders = []; + foreach ($headers as $name => $values) { + $rawHeaders[] = $name . ": " . implode(", ", $values); + } + + return implode("\r\n", $rawHeaders); + } +} diff --git a/modules/oauth/src/facebook/HttpClients/FacebookHttpClientInterface.php b/modules/oauth/src/facebook/HttpClients/FacebookHttpClientInterface.php new file mode 100644 index 0000000..0029bc0 --- /dev/null +++ b/modules/oauth/src/facebook/HttpClients/FacebookHttpClientInterface.php @@ -0,0 +1,47 @@ +stream = stream_context_create($options); + } + + /** + * The response headers from the stream wrapper + * + * @return array|null + */ + public function getResponseHeaders() + { + return $this->responseHeaders; + } + + /** + * Send a stream wrapped request + * + * @param string $url + * + * @return mixed + */ + public function fileGetContents($url) + { + $rawResponse = file_get_contents($url, false, $this->stream); + $this->responseHeaders = $http_response_header; + + return $rawResponse; + } +} diff --git a/modules/oauth/src/facebook/HttpClients/FacebookStreamHttpClient.php b/modules/oauth/src/facebook/HttpClients/FacebookStreamHttpClient.php new file mode 100644 index 0000000..b157514 --- /dev/null +++ b/modules/oauth/src/facebook/HttpClients/FacebookStreamHttpClient.php @@ -0,0 +1,94 @@ +facebookStream = $facebookStream ?: new FacebookStream(); + } + + /** + * @inheritdoc + */ + public function send($url, $method, $body, array $headers, $timeOut) + { + $options = [ + 'http' => [ + 'method' => $method, + 'header' => $this->compileHeader($headers), + 'content' => $body, + 'timeout' => $timeOut, + 'ignore_errors' => true + ], + 'ssl' => [ + 'verify_peer' => true, + 'verify_peer_name' => true, + 'allow_self_signed' => true, // All root certificates are self-signed + 'cafile' => __DIR__ . '/certs/DigiCertHighAssuranceEVRootCA.pem', + ], + ]; + + $this->facebookStream->streamContextCreate($options); + $rawBody = $this->facebookStream->fileGetContents($url); + $rawHeaders = $this->facebookStream->getResponseHeaders(); + + if ($rawBody === false || !$rawHeaders) { + throw new FacebookSDKException('Stream returned an empty response', 660); + } + + $rawHeaders = implode("\r\n", $rawHeaders); + + return new GraphRawResponse($rawHeaders, $rawBody); + } + + /** + * Formats the headers for use in the stream wrapper. + * + * @param array $headers The request headers. + * + * @return string + */ + public function compileHeader(array $headers) + { + $header = []; + foreach ($headers as $k => $v) { + $header[] = $k . ': ' . $v; + } + + return implode("\r\n", $header); + } +} diff --git a/modules/oauth/src/facebook/HttpClients/certs/DigiCertHighAssuranceEVRootCA.pem b/modules/oauth/src/facebook/HttpClients/certs/DigiCertHighAssuranceEVRootCA.pem new file mode 100644 index 0000000..9e6810a --- /dev/null +++ b/modules/oauth/src/facebook/HttpClients/certs/DigiCertHighAssuranceEVRootCA.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- diff --git a/modules/oauth/src/facebook/PersistentData/FacebookMemoryPersistentDataHandler.php b/modules/oauth/src/facebook/PersistentData/FacebookMemoryPersistentDataHandler.php new file mode 100644 index 0000000..93a6686 --- /dev/null +++ b/modules/oauth/src/facebook/PersistentData/FacebookMemoryPersistentDataHandler.php @@ -0,0 +1,53 @@ +sessionData[$key]) ? $this->sessionData[$key] : null; + } + + /** + * @inheritdoc + */ + public function set($key, $value) + { + $this->sessionData[$key] = $value; + } +} diff --git a/modules/oauth/src/facebook/PersistentData/FacebookSessionPersistentDataHandler.php b/modules/oauth/src/facebook/PersistentData/FacebookSessionPersistentDataHandler.php new file mode 100644 index 0000000..66b3bb9 --- /dev/null +++ b/modules/oauth/src/facebook/PersistentData/FacebookSessionPersistentDataHandler.php @@ -0,0 +1,76 @@ +sessionPrefix . $key])) { + return $_SESSION[$this->sessionPrefix . $key]; + } + + return null; + } + + /** + * @inheritdoc + */ + public function set($key, $value) + { + $_SESSION[$this->sessionPrefix . $key] = $value; + } +} diff --git a/modules/oauth/src/facebook/PersistentData/PersistentDataInterface.php b/modules/oauth/src/facebook/PersistentData/PersistentDataInterface.php new file mode 100644 index 0000000..bd7e072 --- /dev/null +++ b/modules/oauth/src/facebook/PersistentData/PersistentDataInterface.php @@ -0,0 +1,49 @@ +validateLength($length); + + $binaryString = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM); + + if ($binaryString === false) { + throw new FacebookSDKException( + static::ERROR_MESSAGE . + 'mcrypt_create_iv() returned an error.' + ); + } + + return $this->binToHex($binaryString, $length); + } +} diff --git a/modules/oauth/src/facebook/PseudoRandomString/OpenSslPseudoRandomStringGenerator.php b/modules/oauth/src/facebook/PseudoRandomString/OpenSslPseudoRandomStringGenerator.php new file mode 100644 index 0000000..f4ea6b8 --- /dev/null +++ b/modules/oauth/src/facebook/PseudoRandomString/OpenSslPseudoRandomStringGenerator.php @@ -0,0 +1,67 @@ +validateLength($length); + + $wasCryptographicallyStrong = false; + $binaryString = openssl_random_pseudo_bytes($length, $wasCryptographicallyStrong); + + if ($binaryString === false) { + throw new FacebookSDKException(static::ERROR_MESSAGE . 'openssl_random_pseudo_bytes() returned an unknown error.'); + } + + if ($wasCryptographicallyStrong !== true) { + throw new FacebookSDKException(static::ERROR_MESSAGE . 'openssl_random_pseudo_bytes() returned a pseudo-random string but it was not cryptographically secure and cannot be used.'); + } + + return $this->binToHex($binaryString, $length); + } +} diff --git a/modules/oauth/src/facebook/PseudoRandomString/PseudoRandomStringGeneratorInterface.php b/modules/oauth/src/facebook/PseudoRandomString/PseudoRandomStringGeneratorInterface.php new file mode 100644 index 0000000..970330c --- /dev/null +++ b/modules/oauth/src/facebook/PseudoRandomString/PseudoRandomStringGeneratorInterface.php @@ -0,0 +1,45 @@ +validateLength($length); + + $stream = fopen('/dev/urandom', 'rb'); + if (!is_resource($stream)) { + throw new FacebookSDKException( + static::ERROR_MESSAGE . + 'Unable to open stream to /dev/urandom.' + ); + } + + if (!defined('HHVM_VERSION')) { + stream_set_read_buffer($stream, 0); + } + + $binaryString = fread($stream, $length); + fclose($stream); + + if (!$binaryString) { + throw new FacebookSDKException( + static::ERROR_MESSAGE . + 'Stream to /dev/urandom returned no data.' + ); + } + + return $this->binToHex($binaryString, $length); + } +} diff --git a/modules/oauth/src/facebook/SignedRequest.php b/modules/oauth/src/facebook/SignedRequest.php new file mode 100644 index 0000000..77099a3 --- /dev/null +++ b/modules/oauth/src/facebook/SignedRequest.php @@ -0,0 +1,332 @@ +app = $facebookApp; + + if (!$rawSignedRequest) { + return; + } + + $this->rawSignedRequest = $rawSignedRequest; + + $this->parse(); + } + + /** + * Returns the raw signed request data. + * + * @return string|null + */ + public function getRawSignedRequest() + { + return $this->rawSignedRequest; + } + + /** + * Returns the parsed signed request data. + * + * @return array|null + */ + public function getPayload() + { + return $this->payload; + } + + /** + * Returns a property from the signed request data if available. + * + * @param string $key + * @param mixed|null $default + * + * @return mixed|null + */ + public function get($key, $default = null) + { + if (isset($this->payload[$key])) { + return $this->payload[$key]; + } + + return $default; + } + + /** + * Returns user_id from signed request data if available. + * + * @return string|null + */ + public function getUserId() + { + return $this->get('user_id'); + } + + /** + * Checks for OAuth data in the payload. + * + * @return boolean + */ + public function hasOAuthData() + { + return $this->get('oauth_token') || $this->get('code'); + } + + /** + * Creates a signed request from an array of data. + * + * @param array $payload + * + * @return string + */ + public function make(array $payload) + { + $payload['algorithm'] = isset($payload['algorithm']) ? $payload['algorithm'] : 'HMAC-SHA256'; + $payload['issued_at'] = isset($payload['issued_at']) ? $payload['issued_at'] : time(); + $encodedPayload = $this->base64UrlEncode(json_encode($payload)); + + $hashedSig = $this->hashSignature($encodedPayload); + $encodedSig = $this->base64UrlEncode($hashedSig); + + return $encodedSig . '.' . $encodedPayload; + } + + /** + * Validates and decodes a signed request and saves + * the payload to an array. + */ + protected function parse() + { + list($encodedSig, $encodedPayload) = $this->split(); + + // Signature validation + $sig = $this->decodeSignature($encodedSig); + $hashedSig = $this->hashSignature($encodedPayload); + $this->validateSignature($hashedSig, $sig); + + $this->payload = $this->decodePayload($encodedPayload); + + // Payload validation + $this->validateAlgorithm(); + } + + /** + * Splits a raw signed request into signature and payload. + * + * @returns array + * + * @throws FacebookSDKException + */ + protected function split() + { + if (strpos($this->rawSignedRequest, '.') === false) { + throw new FacebookSDKException('Malformed signed request.', 606); + } + + return explode('.', $this->rawSignedRequest, 2); + } + + /** + * Decodes the raw signature from a signed request. + * + * @param string $encodedSig + * + * @returns string + * + * @throws FacebookSDKException + */ + protected function decodeSignature($encodedSig) + { + $sig = $this->base64UrlDecode($encodedSig); + + if (!$sig) { + throw new FacebookSDKException('Signed request has malformed encoded signature data.', 607); + } + + return $sig; + } + + /** + * Decodes the raw payload from a signed request. + * + * @param string $encodedPayload + * + * @returns array + * + * @throws FacebookSDKException + */ + protected function decodePayload($encodedPayload) + { + $payload = $this->base64UrlDecode($encodedPayload); + + if ($payload) { + $payload = json_decode($payload, true); + } + + if (!is_array($payload)) { + throw new FacebookSDKException('Signed request has malformed encoded payload data.', 607); + } + + return $payload; + } + + /** + * Validates the algorithm used in a signed request. + * + * @throws FacebookSDKException + */ + protected function validateAlgorithm() + { + if ($this->get('algorithm') !== 'HMAC-SHA256') { + throw new FacebookSDKException('Signed request is using the wrong algorithm.', 605); + } + } + + /** + * Hashes the signature used in a signed request. + * + * @param string $encodedData + * + * @return string + * + * @throws FacebookSDKException + */ + protected function hashSignature($encodedData) + { + $hashedSig = hash_hmac( + 'sha256', + $encodedData, + $this->app->getSecret(), + $raw_output = true + ); + + if (!$hashedSig) { + throw new FacebookSDKException('Unable to hash signature from encoded payload data.', 602); + } + + return $hashedSig; + } + + /** + * Validates the signature used in a signed request. + * + * @param string $hashedSig + * @param string $sig + * + * @throws FacebookSDKException + */ + protected function validateSignature($hashedSig, $sig) + { + if (mb_strlen($hashedSig) === mb_strlen($sig)) { + $validate = 0; + for ($i = 0; $i < mb_strlen($sig); $i++) { + $validate |= ord($hashedSig[$i]) ^ ord($sig[$i]); + } + if ($validate === 0) { + return; + } + } + + throw new FacebookSDKException('Signed request has an invalid signature.', 602); + } + + /** + * Base64 decoding which replaces characters: + * + instead of - + * / instead of _ + * + * @link http://en.wikipedia.org/wiki/Base64#URL_applications + * + * @param string $input base64 url encoded input + * + * @return string decoded string + */ + public function base64UrlDecode($input) + { + $urlDecodedBase64 = strtr($input, '-_', '+/'); + $this->validateBase64($urlDecodedBase64); + + return base64_decode($urlDecodedBase64); + } + + /** + * Base64 encoding which replaces characters: + * + instead of - + * / instead of _ + * + * @link http://en.wikipedia.org/wiki/Base64#URL_applications + * + * @param string $input string to encode + * + * @return string base64 url encoded input + */ + public function base64UrlEncode($input) + { + return strtr(base64_encode($input), '+/', '-_'); + } + + /** + * Validates a base64 string. + * + * @param string $input base64 value to validate + * + * @throws FacebookSDKException + */ + protected function validateBase64($input) + { + if (!preg_match('/^[a-zA-Z0-9\/\r\n+]*={0,2}$/', $input)) { + throw new FacebookSDKException('Signed request contains malformed base64 encoding.', 608); + } + } +} diff --git a/modules/oauth/src/facebook/Url/FacebookUrlDetectionHandler.php b/modules/oauth/src/facebook/Url/FacebookUrlDetectionHandler.php new file mode 100644 index 0000000..5fbb9ce --- /dev/null +++ b/modules/oauth/src/facebook/Url/FacebookUrlDetectionHandler.php @@ -0,0 +1,163 @@ +getHttpScheme() . '://' . $this->getHostName() . $this->getServerVar('REQUEST_URI'); + } + + /** + * Get the currently active URL scheme. + * + * @return string + */ + protected function getHttpScheme() + { + return $this->isBehindSsl() ? 'https' : 'http'; + } + + /** + * Tries to detect if the server is running behind an SSL. + * + * @return boolean + */ + protected function isBehindSsl() + { + // Check for proxy first + $protocol = $this->getHeader('X_FORWARDED_PROTO'); + if ($protocol) { + return $this->protocolWithActiveSsl($protocol); + } + + $protocol = $this->getServerVar('HTTPS'); + if ($protocol) { + return $this->protocolWithActiveSsl($protocol); + } + + return (string)$this->getServerVar('SERVER_PORT') === '443'; + } + + /** + * Detects an active SSL protocol value. + * + * @param string $protocol + * + * @return boolean + */ + protected function protocolWithActiveSsl($protocol) + { + $protocol = strtolower((string)$protocol); + + return in_array($protocol, ['on', '1', 'https', 'ssl'], true); + } + + /** + * Tries to detect the host name of the server. + * + * Some elements adapted from + * + * @see https://github.com/symfony/HttpFoundation/blob/master/Request.php + * + * @return string + */ + protected function getHostName() + { + // Check for proxy first + if ($host = $this->getHeader('X_FORWARDED_HOST')) { + $elements = explode(',', $host); + $host = $elements[count($elements) - 1]; + } elseif (!$host = $this->getHeader('HOST')) { + if (!$host = $this->getServerVar('SERVER_NAME')) { + $host = $this->getServerVar('SERVER_ADDR'); + } + } + + // trim and remove port number from host + // host is lowercase as per RFC 952/2181 + $host = strtolower(preg_replace('/:\d+$/', '', trim($host))); + + // Port number + $scheme = $this->getHttpScheme(); + $port = $this->getCurrentPort(); + $appendPort = ':' . $port; + + // Don't append port number if a normal port. + if (($scheme == 'http' && $port == '80') || ($scheme == 'https' && $port == '443')) { + $appendPort = ''; + } + + return $host . $appendPort; + } + + protected function getCurrentPort() + { + // Check for proxy first + $port = $this->getHeader('X_FORWARDED_PORT'); + if ($port) { + return (string)$port; + } + + $protocol = (string)$this->getHeader('X_FORWARDED_PROTO'); + if ($protocol === 'https') { + return '443'; + } + + return (string)$this->getServerVar('SERVER_PORT'); + } + + /** + * Returns the a value from the $_SERVER super global. + * + * @param string $key + * + * @return string + */ + protected function getServerVar($key) + { + return isset($_SERVER[$key]) ? $_SERVER[$key] : ''; + } + + /** + * Gets a value from the HTTP request headers. + * + * @param string $key + * + * @return string + */ + protected function getHeader($key) + { + return $this->getServerVar('HTTP_' . $key); + } +} diff --git a/modules/oauth/src/facebook/Url/FacebookUrlManipulator.php b/modules/oauth/src/facebook/Url/FacebookUrlManipulator.php new file mode 100644 index 0000000..20a0299 --- /dev/null +++ b/modules/oauth/src/facebook/Url/FacebookUrlManipulator.php @@ -0,0 +1,167 @@ + 0) { + $query = '?' . http_build_query($params, null, '&'); + } + } + + $scheme = isset($parts['scheme']) ? $parts['scheme'] . '://' : ''; + $host = isset($parts['host']) ? $parts['host'] : ''; + $port = isset($parts['port']) ? ':' . $parts['port'] : ''; + $path = isset($parts['path']) ? $parts['path'] : ''; + $fragment = isset($parts['fragment']) ? '#' . $parts['fragment'] : ''; + + return $scheme . $host . $port . $path . $query . $fragment; + } + + /** + * Gracefully appends params to the URL. + * + * @param string $url The URL that will receive the params. + * @param array $newParams The params to append to the URL. + * + * @return string + */ + public static function appendParamsToUrl($url, array $newParams = []) + { + if (!$newParams) { + return $url; + } + + if (strpos($url, '?') === false) { + return $url . '?' . http_build_query($newParams, null, '&'); + } + + list($path, $query) = explode('?', $url, 2); + $existingParams = []; + parse_str($query, $existingParams); + + // Favor params from the original URL over $newParams + $newParams = array_merge($newParams, $existingParams); + + // Sort for a predicable order + ksort($newParams); + + return $path . '?' . http_build_query($newParams, null, '&'); + } + + /** + * Returns the params from a URL in the form of an array. + * + * @param string $url The URL to parse the params from. + * + * @return array + */ + public static function getParamsAsArray($url) + { + $query = parse_url($url, PHP_URL_QUERY); + if (!$query) { + return []; + } + $params = []; + parse_str($query, $params); + + return $params; + } + + /** + * Adds the params of the first URL to the second URL. + * + * Any params that already exist in the second URL will go untouched. + * + * @param string $urlToStealFrom The URL harvest the params from. + * @param string $urlToAddTo The URL that will receive the new params. + * + * @return string The $urlToAddTo with any new params from $urlToStealFrom. + */ + public static function mergeUrlParams($urlToStealFrom, $urlToAddTo) + { + $newParams = static::getParamsAsArray($urlToStealFrom); + // Nothing new to add, return as-is + if (!$newParams) { + return $urlToAddTo; + } + + return static::appendParamsToUrl($urlToAddTo, $newParams); + } + + /** + * Check for a "/" prefix and prepend it if not exists. + * + * @param string|null $string + * + * @return string|null + */ + public static function forceSlashPrefix($string) + { + if (!$string) { + return $string; + } + + return strpos($string, '/') === 0 ? $string : '/' . $string; + } + + /** + * Trims off the hostname and Graph version from a URL. + * + * @param string $urlToTrim The URL the needs the surgery. + * + * @return string The $urlToTrim with the hostname and Graph version removed. + */ + public static function baseGraphUrlEndpoint($urlToTrim) + { + return '/' . preg_replace('/^https:\/\/.+\.facebook\.com(\/v.+?)?\//', '', $urlToTrim); + } +} diff --git a/modules/oauth/src/facebook/Url/UrlDetectionInterface.php b/modules/oauth/src/facebook/Url/UrlDetectionInterface.php new file mode 100644 index 0000000..764a606 --- /dev/null +++ b/modules/oauth/src/facebook/Url/UrlDetectionInterface.php @@ -0,0 +1,39 @@ + Facebook Developers"); + } + + require_once $config['src'].'facebook/autoload.php'; + + $fb = new Facebook\Facebook([ + 'app_id' => $config['facebook']['app_id'], + 'app_secret' => $config['facebook']['app_secret'], + 'default_graph_version' => $config['facebook']['default_graph_version'], + ]); + + $helper = $fb->getRedirectLoginHelper(); + + try { + $accessToken = $helper->getAccessToken(); + } catch(Facebook\Exceptions\FacebookResponseException $e) { + exit("

".$e->getMessage()."

"); + } catch(Facebook\Exceptions\FacebookSDKException $e) { + exit("

".$e->getMessage()."

"); + } + + if (isset($accessToken)) { + + $UserData = $fb->get('me?fields=id,name,email,gender,last_name,first_name,picture.height(200).width(200)', (string) $accessToken); + $UserData = $UserData->getGraphNode()->asArray(); + $data = array(); + $data['oauth'] = "facebook"; + $data['uid'] = $UserData['id']; + $data['name'] = $UserData['name']; + $data['email'] = $UserData['email']; + $data['gender'] = $UserData['gender']; + $data['last_name'] = $UserData['last_name']; + $data['first_name'] = $UserData['first_name']; + $data['picture'] = $UserData['picture']['url']; + $loginer->user((object)$data); + $_SESSION['sloginer'] = array("uid" => $data['uid'], "name" => $data['name'], "oauth" => $data['oauth']); + unset($_SESSION['FBRLH_state']); + header("location: ".$config['return_url']); + exit(); + + } else { + $loginUrl = $helper->getLoginUrl($config['login_url']."?oauth=facebook", ['email']); + header("location: ".$loginUrl); + exit(); + } + } +} \ No newline at end of file diff --git a/modules/oauth/src/google/Google_Client.php b/modules/oauth/src/google/Google_Client.php new file mode 100644 index 0000000..e6026a1 --- /dev/null +++ b/modules/oauth/src/google/Google_Client.php @@ -0,0 +1,453 @@ + + * @author Chirag Shah + */ +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/modules/oauth/src/google/auth/Google_AssertionCredentials.php b/modules/oauth/src/google/auth/Google_AssertionCredentials.php new file mode 100644 index 0000000..0d7aeb3 --- /dev/null +++ b/modules/oauth/src/google/auth/Google_AssertionCredentials.php @@ -0,0 +1,95 @@ + + */ +class Google_AssertionCredentials { + const MAX_TOKEN_LIFETIME_SECS = 3600; + + public $serviceAccountName; + public $scopes; + public $privateKey; + public $privateKeyPassword; + public $assertionType; + public $prn; + + /** + * @param $serviceAccountName + * @param $scopes array List of scopes + * @param $privateKey + * @param string $privateKeyPassword + * @param string $assertionType + * @param bool|string $prn The email address of the user for which the + * application is requesting delegated access. + */ + public function __construct( + $serviceAccountName, + $scopes, + $privateKey, + $privateKeyPassword = 'notasecret', + $assertionType = 'http://oauth.net/grant_type/jwt/1.0/bearer', + $prn = false) { + $this->serviceAccountName = $serviceAccountName; + $this->scopes = is_string($scopes) ? $scopes : implode(' ', $scopes); + $this->privateKey = $privateKey; + $this->privateKeyPassword = $privateKeyPassword; + $this->assertionType = $assertionType; + $this->prn = $prn; + } + + public function generateAssertion() { + $now = time(); + + $jwtParams = array( + 'aud' => Google_OAuth2::OAUTH2_TOKEN_URI, + 'scope' => $this->scopes, + 'iat' => $now, + 'exp' => $now + self::MAX_TOKEN_LIFETIME_SECS, + 'iss' => $this->serviceAccountName, + ); + + if ($this->prn !== false) { + $jwtParams['prn'] = $this->prn; + } + + return $this->makeSignedJwt($jwtParams); + } + + /** + * Creates a signed JWT. + * @param array $payload + * @return string The signed JWT. + */ + private function makeSignedJwt($payload) { + $header = array('typ' => 'JWT', 'alg' => 'RS256'); + + $segments = array( + Google_Utils::urlSafeB64Encode(json_encode($header)), + Google_Utils::urlSafeB64Encode(json_encode($payload)) + ); + + $signingInput = implode('.', $segments); + $signer = new Google_P12Signer($this->privateKey, $this->privateKeyPassword); + $signature = $signer->sign($signingInput); + $segments[] = Google_Utils::urlSafeB64Encode($signature); + + return implode(".", $segments); + } +} diff --git a/modules/oauth/src/google/auth/Google_Auth.php b/modules/oauth/src/google/auth/Google_Auth.php new file mode 100644 index 0000000..010782d --- /dev/null +++ b/modules/oauth/src/google/auth/Google_Auth.php @@ -0,0 +1,36 @@ + + * + */ +abstract class Google_Auth { + abstract public function authenticate($service); + abstract public function sign(Google_HttpRequest $request); + abstract public function createAuthUrl($scope); + + abstract public function getAccessToken(); + abstract public function setAccessToken($accessToken); + abstract public function setDeveloperKey($developerKey); + abstract public function refreshToken($refreshToken); + abstract public function revokeToken(); +} diff --git a/modules/oauth/src/google/auth/Google_AuthNone.php b/modules/oauth/src/google/auth/Google_AuthNone.php new file mode 100644 index 0000000..6ca6bc2 --- /dev/null +++ b/modules/oauth/src/google/auth/Google_AuthNone.php @@ -0,0 +1,48 @@ + + * @author Chirag Shah + */ +class Google_AuthNone extends Google_Auth { + public $key = null; + + public function __construct() { + global $apiConfig; + if (!empty($apiConfig['developer_key'])) { + $this->setDeveloperKey($apiConfig['developer_key']); + } + } + + public function setDeveloperKey($key) {$this->key = $key;} + public function authenticate($service) {/*noop*/} + public function setAccessToken($accessToken) {/* noop*/} + public function getAccessToken() {return null;} + public function createAuthUrl($scope) {return null;} + public function refreshToken($refreshToken) {/* noop*/} + public function revokeToken() {/* noop*/} + + public function sign(Google_HttpRequest $request) { + if ($this->key) { + $request->setUrl($request->getUrl() . ((strpos($request->getUrl(), '?') === false) ? '?' : '&') + . 'key='.urlencode($this->key)); + } + return $request; + } +} diff --git a/modules/oauth/src/google/auth/Google_LoginTicket.php b/modules/oauth/src/google/auth/Google_LoginTicket.php new file mode 100644 index 0000000..c0ce614 --- /dev/null +++ b/modules/oauth/src/google/auth/Google_LoginTicket.php @@ -0,0 +1,63 @@ + + */ +class Google_LoginTicket { + const USER_ATTR = "id"; + + // Information from id token envelope. + private $envelope; + + // Information from id token payload. + private $payload; + + /** + * Creates a user based on the supplied token. + * + * @param string $envelope Header from a verified authentication token. + * @param string $payload Information from a verified authentication token. + */ + public function __construct($envelope, $payload) { + $this->envelope = $envelope; + $this->payload = $payload; + } + + /** + * Returns the numeric identifier for the user. + * @throws Google_AuthException + * @return + */ + public function getUserId() { + if (array_key_exists(self::USER_ATTR, $this->payload)) { + return $this->payload[self::USER_ATTR]; + } + throw new Google_AuthException("No user_id in token"); + } + + /** + * Returns attributes from the login ticket. This can contain + * various information about the user session. + * @return array + */ + public function getAttributes() { + return array("envelope" => $this->envelope, "payload" => $this->payload); + } +} diff --git a/modules/oauth/src/google/auth/Google_OAuth2.php b/modules/oauth/src/google/auth/Google_OAuth2.php new file mode 100644 index 0000000..7394316 --- /dev/null +++ b/modules/oauth/src/google/auth/Google_OAuth2.php @@ -0,0 +1,444 @@ + + * @author Chirag Shah + * + */ +class Google_OAuth2 extends Google_Auth { + public $clientId; + public $clientSecret; + public $developerKey; + public $token; + public $redirectUri; + public $state; + public $accessType = 'offline'; + public $approvalPrompt = 'force'; + + /** @var Google_AssertionCredentials $assertionCredentials */ + public $assertionCredentials; + + const OAUTH2_REVOKE_URI = 'https://accounts.google.com/o/oauth2/revoke'; + const OAUTH2_TOKEN_URI = 'https://accounts.google.com/o/oauth2/token'; + const OAUTH2_AUTH_URL = 'https://accounts.google.com/o/oauth2/auth'; + const OAUTH2_FEDERATED_SIGNON_CERTS_URL = 'https://www.googleapis.com/oauth2/v1/certs'; + const CLOCK_SKEW_SECS = 300; // five minutes in seconds + const AUTH_TOKEN_LIFETIME_SECS = 300; // five minutes in seconds + const MAX_TOKEN_LIFETIME_SECS = 86400; // one day in seconds + + /** + * Instantiates the class, but does not initiate the login flow, leaving it + * to the discretion of the caller (which is done by calling authenticate()). + */ + public function __construct() { + global $apiConfig; + + if (! empty($apiConfig['developer_key'])) { + $this->developerKey = $apiConfig['developer_key']; + } + + if (! empty($apiConfig['oauth2_client_id'])) { + $this->clientId = $apiConfig['oauth2_client_id']; + } + + if (! empty($apiConfig['oauth2_client_secret'])) { + $this->clientSecret = $apiConfig['oauth2_client_secret']; + } + + if (! empty($apiConfig['oauth2_redirect_uri'])) { + $this->redirectUri = $apiConfig['oauth2_redirect_uri']; + } + + if (! empty($apiConfig['oauth2_access_type'])) { + $this->accessType = $apiConfig['oauth2_access_type']; + } + + if (! empty($apiConfig['oauth2_approval_prompt'])) { + $this->approvalPrompt = $apiConfig['oauth2_approval_prompt']; + } + } + + /** + * @param $service + * @param string|null $code + * @throws Google_AuthException + * @return string + */ + public function authenticate($service, $code = null) { + if (!$code && isset($_GET['code'])) { + $code = $_GET['code']; + } + + if ($code) { + // We got here from the redirect from a successful authorization grant, fetch the access token + $request = Google_Client::$io->makeRequest(new Google_HttpRequest(self::OAUTH2_TOKEN_URI, 'POST', array(), array( + 'code' => $code, + 'grant_type' => 'authorization_code', + 'redirect_uri' => $this->redirectUri, + 'client_id' => $this->clientId, + 'client_secret' => $this->clientSecret + ))); + + if ($request->getResponseHttpCode() == 200) { + $this->setAccessToken($request->getResponseBody()); + $this->token['created'] = time(); + return $this->getAccessToken(); + } else { + $response = $request->getResponseBody(); + $decodedResponse = json_decode($response, true); + if ($decodedResponse != null && $decodedResponse['error']) { + $response = $decodedResponse['error']; + } + throw new Google_AuthException("Error fetching OAuth2 access token, message: '$response'", $request->getResponseHttpCode()); + } + } + + $authUrl = $this->createAuthUrl($service['scope']); + header('Location: ' . $authUrl); + return true; + } + + /** + * Create a URL to obtain user authorization. + * The authorization endpoint allows the user to first + * authenticate, and then grant/deny the access request. + * @param string $scope The scope is expressed as a list of space-delimited strings. + * @return string + */ + public function createAuthUrl($scope) { + $params = array( + 'response_type=code', + 'redirect_uri=' . urlencode($this->redirectUri), + 'client_id=' . urlencode($this->clientId), + 'scope=' . urlencode($scope), + 'access_type=' . urlencode($this->accessType), + 'approval_prompt=' . urlencode($this->approvalPrompt) + ); + + if (isset($this->state)) { + $params[] = 'state=' . urlencode($this->state); + } + $params = implode('&', $params); + return self::OAUTH2_AUTH_URL . "?$params"; + } + + /** + * @param string $token + * @throws Google_AuthException + */ + public function setAccessToken($token) { + $token = json_decode($token, true); + if ($token == null) { + throw new Google_AuthException('Could not json decode the token'); + } + if (! isset($token['access_token'])) { + throw new Google_AuthException("Invalid token format"); + } + $this->token = $token; + } + + public function getAccessToken() { + return json_encode($this->token); + } + + public function setDeveloperKey($developerKey) { + $this->developerKey = $developerKey; + } + + public function setState($state) { + $this->state = $state; + } + + public function setAccessType($accessType) { + $this->accessType = $accessType; + } + + public function setApprovalPrompt($approvalPrompt) { + $this->approvalPrompt = $approvalPrompt; + } + + public function setAssertionCredentials(Google_AssertionCredentials $creds) { + $this->assertionCredentials = $creds; + } + + /** + * Include an accessToken in a given apiHttpRequest. + * @param Google_HttpRequest $request + * @return Google_HttpRequest + * @throws Google_AuthException + */ + public function sign(Google_HttpRequest $request) { + // add the developer key to the request before signing it + if ($this->developerKey) { + $requestUrl = $request->getUrl(); + $requestUrl .= (strpos($request->getUrl(), '?') === false) ? '?' : '&'; + $requestUrl .= 'key=' . urlencode($this->developerKey); + $request->setUrl($requestUrl); + } + + // Cannot sign the request without an OAuth access token. + if (null == $this->token && null == $this->assertionCredentials) { + return $request; + } + + // Check if the token is set to expire in the next 30 seconds + // (or has already expired). + if ($this->isAccessTokenExpired()) { + if ($this->assertionCredentials) { + $this->refreshTokenWithAssertion(); + } else { + if (! array_key_exists('refresh_token', $this->token)) { + throw new Google_AuthException("The OAuth 2.0 access token has expired, " + . "and a refresh token is not available. Refresh tokens are not " + . "returned for responses that were auto-approved."); + } + $this->refreshToken($this->token['refresh_token']); + } + } + + // Add the OAuth2 header to the request + $request->setRequestHeaders( + array('Authorization' => 'Bearer ' . $this->token['access_token']) + ); + + return $request; + } + + /** + * Fetches a fresh access token with the given refresh token. + * @param string $refreshToken + * @return void + */ + public function refreshToken($refreshToken) { + $this->refreshTokenRequest(array( + 'client_id' => $this->clientId, + 'client_secret' => $this->clientSecret, + 'refresh_token' => $refreshToken, + 'grant_type' => 'refresh_token' + )); + } + + /** + * Fetches a fresh access token with a given assertion token. + * @param Google_AssertionCredentials $assertionCredentials optional. + * @return void + */ + public function refreshTokenWithAssertion($assertionCredentials = null) { + if (!$assertionCredentials) { + $assertionCredentials = $this->assertionCredentials; + } + + $this->refreshTokenRequest(array( + 'grant_type' => 'assertion', + 'assertion_type' => $assertionCredentials->assertionType, + 'assertion' => $assertionCredentials->generateAssertion(), + )); + } + + private function refreshTokenRequest($params) { + $http = new Google_HttpRequest(self::OAUTH2_TOKEN_URI, 'POST', array(), $params); + $request = Google_Client::$io->makeRequest($http); + + $code = $request->getResponseHttpCode(); + $body = $request->getResponseBody(); + if (200 == $code) { + $token = json_decode($body, true); + if ($token == null) { + throw new Google_AuthException("Could not json decode the access token"); + } + + if (! isset($token['access_token']) || ! isset($token['expires_in'])) { + throw new Google_AuthException("Invalid token format"); + } + + $this->token['access_token'] = $token['access_token']; + $this->token['expires_in'] = $token['expires_in']; + $this->token['created'] = time(); + } else { + throw new Google_AuthException("Error refreshing the OAuth2 token, message: '$body'", $code); + } + } + + /** + * 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) { + if (!$token) { + $token = $this->token['access_token']; + } + $request = new Google_HttpRequest(self::OAUTH2_REVOKE_URI, 'POST', array(), "token=$token"); + $response = Google_Client::$io->makeRequest($request); + $code = $response->getResponseHttpCode(); + if ($code == 200) { + $this->token = null; + return true; + } + + return false; + } + + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() { + if (null == $this->token) { + return true; + } + + // If the token is set to expire in the next 30 seconds. + $expired = ($this->token['created'] + + ($this->token['expires_in'] - 30)) < time(); + + return $expired; + } + + // Gets federated sign-on certificates to use for verifying identity tokens. + // Returns certs as array structure, where keys are key ids, and values + // are PEM encoded certificates. + private function getFederatedSignOnCerts() { + // This relies on makeRequest caching certificate responses. + $request = Google_Client::$io->makeRequest(new Google_HttpRequest( + self::OAUTH2_FEDERATED_SIGNON_CERTS_URL)); + if ($request->getResponseHttpCode() == 200) { + $certs = json_decode($request->getResponseBody(), true); + if ($certs) { + return $certs; + } + } + throw new Google_AuthException( + "Failed to retrieve verification certificates: '" . + $request->getResponseBody() . "'.", + $request->getResponseHttpCode()); + } + + /** + * Verifies an id token and returns the authenticated apiLoginTicket. + * Throws an exception if the id token is not valid. + * The audience parameter can be used to control which id tokens are + * accepted. By default, the id token must have been issued to this OAuth2 client. + * + * @param $id_token + * @param $audience + * @return Google_LoginTicket + */ + public function verifyIdToken($id_token = null, $audience = null) { + if (!$id_token) { + $id_token = $this->token['id_token']; + } + + $certs = $this->getFederatedSignonCerts(); + if (!$audience) { + $audience = $this->clientId; + } + return $this->verifySignedJwtWithCerts($id_token, $certs, $audience); + } + + // Verifies the id token, returns the verified token contents. + // Visible for testing. + function verifySignedJwtWithCerts($jwt, $certs, $required_audience) { + $segments = explode(".", $jwt); + if (count($segments) != 3) { + throw new Google_AuthException("Wrong number of segments in token: $jwt"); + } + $signed = $segments[0] . "." . $segments[1]; + $signature = Google_Utils::urlSafeB64Decode($segments[2]); + + // Parse envelope. + $envelope = json_decode(Google_Utils::urlSafeB64Decode($segments[0]), true); + if (!$envelope) { + throw new Google_AuthException("Can't parse token envelope: " . $segments[0]); + } + + // Parse token + $json_body = Google_Utils::urlSafeB64Decode($segments[1]); + $payload = json_decode($json_body, true); + if (!$payload) { + throw new Google_AuthException("Can't parse token payload: " . $segments[1]); + } + + // Check signature + $verified = false; + foreach ($certs as $keyName => $pem) { + $public_key = new Google_PemVerifier($pem); + if ($public_key->verify($signed, $signature)) { + $verified = true; + break; + } + } + + if (!$verified) { + throw new Google_AuthException("Invalid token signature: $jwt"); + } + + // Check issued-at timestamp + $iat = 0; + if (array_key_exists("iat", $payload)) { + $iat = $payload["iat"]; + } + if (!$iat) { + throw new Google_AuthException("No issue time in token: $json_body"); + } + $earliest = $iat - self::CLOCK_SKEW_SECS; + + // Check expiration timestamp + $now = time(); + $exp = 0; + if (array_key_exists("exp", $payload)) { + $exp = $payload["exp"]; + } + if (!$exp) { + throw new Google_AuthException("No expiration time in token: $json_body"); + } + if ($exp >= $now + self::MAX_TOKEN_LIFETIME_SECS) { + throw new Google_AuthException( + "Expiration time too far in future: $json_body"); + } + + $latest = $exp + self::CLOCK_SKEW_SECS; + if ($now < $earliest) { + throw new Google_AuthException( + "Token used too early, $now < $earliest: $json_body"); + } + if ($now > $latest) { + throw new Google_AuthException( + "Token used too late, $now > $latest: $json_body"); + } + + // TODO(beaton): check issuer field? + + // Check audience + $aud = $payload["aud"]; + if ($aud != $required_audience) { + throw new Google_AuthException("Wrong recipient, $aud != $required_audience: $json_body"); + } + + // All good. + return new Google_LoginTicket($envelope, $payload); + } +} diff --git a/modules/oauth/src/google/auth/Google_P12Signer.php b/modules/oauth/src/google/auth/Google_P12Signer.php new file mode 100644 index 0000000..1bed590 --- /dev/null +++ b/modules/oauth/src/google/auth/Google_P12Signer.php @@ -0,0 +1,70 @@ + + */ +class Google_P12Signer extends Google_Signer { + // OpenSSL private key resource + private $privateKey; + + // Creates a new signer from a .p12 file. + function __construct($p12, $password) { + if (!function_exists('openssl_x509_read')) { + throw new Exception( + 'The Google PHP API library needs the openssl PHP extension'); + } + + // This throws on error + $certs = array(); + if (!openssl_pkcs12_read($p12, $certs, $password)) { + throw new Google_AuthException("Unable to parse the p12 file. " . + "Is this a .p12 file? Is the password correct? OpenSSL error: " . + openssl_error_string()); + } + // TODO(beaton): is this part of the contract for the openssl_pkcs12_read + // method? What happens if there are multiple private keys? Do we care? + if (!array_key_exists("pkey", $certs) || !$certs["pkey"]) { + throw new Google_AuthException("No private key found in p12 file."); + } + $this->privateKey = openssl_pkey_get_private($certs["pkey"]); + if (!$this->privateKey) { + throw new Google_AuthException("Unable to load private key in "); + } + } + + function __destruct() { + if ($this->privateKey) { + openssl_pkey_free($this->privateKey); + } + } + + function sign($data) { + if(version_compare(PHP_VERSION, '5.3.0') < 0) { + throw new Google_AuthException( + "PHP 5.3.0 or higher is required to use service accounts."); + } + if (!openssl_sign($data, $signature, $this->privateKey, "sha256")) { + throw new Google_AuthException("Unable to sign data"); + } + return $signature; + } +} diff --git a/modules/oauth/src/google/auth/Google_PemVerifier.php b/modules/oauth/src/google/auth/Google_PemVerifier.php new file mode 100644 index 0000000..6c1c85f --- /dev/null +++ b/modules/oauth/src/google/auth/Google_PemVerifier.php @@ -0,0 +1,66 @@ + + */ +class Google_PemVerifier extends Google_Verifier { + private $publicKey; + + /** + * Constructs a verifier from the supplied PEM-encoded certificate. + * + * $pem: a PEM encoded certificate (not a file). + * @param $pem + * @throws Google_AuthException + * @throws Google_Exception + */ + function __construct($pem) { + if (!function_exists('openssl_x509_read')) { + throw new Google_Exception('Google API PHP client needs the openssl PHP extension'); + } + $this->publicKey = openssl_x509_read($pem); + if (!$this->publicKey) { + throw new Google_AuthException("Unable to parse PEM: $pem"); + } + } + + function __destruct() { + if ($this->publicKey) { + openssl_x509_free($this->publicKey); + } + } + + /** + * Verifies the signature on data. + * + * Returns true if the signature is valid, false otherwise. + * @param $data + * @param $signature + * @throws Google_AuthException + * @return bool + */ + function verify($data, $signature) { + $status = openssl_verify($data, $signature, $this->publicKey, "sha256"); + if ($status === -1) { + throw new Google_AuthException('Signature verification error: ' . openssl_error_string()); + } + return $status === 1; + } +} diff --git a/modules/oauth/src/google/auth/Google_Signer.php b/modules/oauth/src/google/auth/Google_Signer.php new file mode 100644 index 0000000..7892baa --- /dev/null +++ b/modules/oauth/src/google/auth/Google_Signer.php @@ -0,0 +1,30 @@ + + */ +abstract class Google_Signer { + /** + * Signs data, returns the signature as binary data. + */ + abstract public function sign($data); +} diff --git a/modules/oauth/src/google/auth/Google_Verifier.php b/modules/oauth/src/google/auth/Google_Verifier.php new file mode 100644 index 0000000..2839a37 --- /dev/null +++ b/modules/oauth/src/google/auth/Google_Verifier.php @@ -0,0 +1,31 @@ + + */ +abstract class Google_Verifier { + /** + * Checks a signature, returns true if the signature is correct, + * false otherwise. + */ + abstract public function verify($data, $signature); +} diff --git a/modules/oauth/src/google/cache/Google_ApcCache.php b/modules/oauth/src/google/cache/Google_ApcCache.php new file mode 100644 index 0000000..3523c98 --- /dev/null +++ b/modules/oauth/src/google/cache/Google_ApcCache.php @@ -0,0 +1,98 @@ + + */ +class googleApcCache extends Google_Cache { + + public function __construct() { + if (! function_exists('apc_add')) { + throw new Google_CacheException("Apc functions not available"); + } + } + + private function isLocked($key) { + if ((@apc_fetch($key . '.lock')) === false) { + return false; + } + return true; + } + + private function createLock($key) { + // the interesting thing is that this could fail if the lock was created in the meantime.. + // but we'll ignore that out of convenience + @apc_add($key . '.lock', '', 5); + } + + private function removeLock($key) { + // suppress all warnings, if some other process removed it that's ok too + @apc_delete($key . '.lock'); + } + + private function waitForLock($key) { + // 20 x 250 = 5 seconds + $tries = 20; + $cnt = 0; + do { + // 250 ms is a long time to sleep, but it does stop the server from burning all resources on polling locks.. + usleep(250); + $cnt ++; + } while ($cnt <= $tries && $this->isLocked($key)); + if ($this->isLocked($key)) { + // 5 seconds passed, assume the owning process died off and remove it + $this->removeLock($key); + } + } + + /** + * @inheritDoc + */ + public function get($key, $expiration = false) { + + if (($ret = @apc_fetch($key)) === false) { + return false; + } + if (!$expiration || (time() - $ret['time'] > $expiration)) { + $this->delete($key); + return false; + } + return unserialize($ret['data']); + } + + /** + * @inheritDoc + */ + public function set($key, $value) { + if (@apc_store($key, array('time' => time(), 'data' => serialize($value))) == false) { + throw new Google_CacheException("Couldn't store data"); + } + } + + /** + * @inheritDoc + * @param String $key + */ + public function delete($key) { + @apc_delete($key); + } +} diff --git a/modules/oauth/src/google/cache/Google_Cache.php b/modules/oauth/src/google/cache/Google_Cache.php new file mode 100644 index 0000000..809c55e --- /dev/null +++ b/modules/oauth/src/google/cache/Google_Cache.php @@ -0,0 +1,55 @@ + + */ +abstract class Google_Cache { + + /** + * Retrieves the data for the given key, or false if they + * key is unknown or expired + * + * @param String $key The key who's data to retrieve + * @param boolean|int $expiration Expiration time in seconds + * + */ + abstract function get($key, $expiration = false); + + /** + * Store the key => $value set. The $value is serialized + * by this function so can be of any type + * + * @param string $key Key of the data + * @param string $value data + */ + abstract function set($key, $value); + + /** + * Removes the key/data pair for the given $key + * + * @param String $key + */ + abstract function delete($key); +} + + diff --git a/modules/oauth/src/google/cache/Google_FileCache.php b/modules/oauth/src/google/cache/Google_FileCache.php new file mode 100644 index 0000000..fbb1337 --- /dev/null +++ b/modules/oauth/src/google/cache/Google_FileCache.php @@ -0,0 +1,137 @@ + + */ +class Google_FileCache extends Google_Cache { + private $path; + + public function __construct() { + global $apiConfig; + $this->path = $apiConfig['ioFileCache_directory']; + } + + private function isLocked($storageFile) { + // our lock file convention is simple: /the/file/path.lock + return file_exists($storageFile . '.lock'); + } + + private function createLock($storageFile) { + $storageDir = dirname($storageFile); + if (! is_dir($storageDir)) { + // @codeCoverageIgnoreStart + if (! @mkdir($storageDir, 0755, true)) { + // make sure the failure isn't because of a concurrency issue + if (! is_dir($storageDir)) { + throw new Google_CacheException("Could not create storage directory: $storageDir"); + } + } + // @codeCoverageIgnoreEnd + } + @touch($storageFile . '.lock'); + } + + private function removeLock($storageFile) { + // suppress all warnings, if some other process removed it that's ok too + @unlink($storageFile . '.lock'); + } + + private function waitForLock($storageFile) { + // 20 x 250 = 5 seconds + $tries = 20; + $cnt = 0; + do { + // make sure PHP picks up on file changes. This is an expensive action but really can't be avoided + clearstatcache(); + // 250 ms is a long time to sleep, but it does stop the server from burning all resources on polling locks.. + usleep(250); + $cnt ++; + } while ($cnt <= $tries && $this->isLocked($storageFile)); + if ($this->isLocked($storageFile)) { + // 5 seconds passed, assume the owning process died off and remove it + $this->removeLock($storageFile); + } + } + + private function getCacheDir($hash) { + // use the first 2 characters of the hash as a directory prefix + // this should prevent slowdowns due to huge directory listings + // and thus give some basic amount of scalability + return $this->path . '/' . substr($hash, 0, 2); + } + + private function getCacheFile($hash) { + return $this->getCacheDir($hash) . '/' . $hash; + } + + public function get($key, $expiration = false) { + $storageFile = $this->getCacheFile(md5($key)); + // See if this storage file is locked, if so we wait upto 5 seconds for the lock owning process to + // complete it's work. If the lock is not released within that time frame, it's cleaned up. + // This should give us a fair amount of 'Cache Stampeding' protection + if ($this->isLocked($storageFile)) { + $this->waitForLock($storageFile); + } + if (file_exists($storageFile) && is_readable($storageFile)) { + $now = time(); + if (! $expiration || (($mtime = @filemtime($storageFile)) !== false && ($now - $mtime) < $expiration)) { + if (($data = @file_get_contents($storageFile)) !== false) { + $data = unserialize($data); + return $data; + } + } + } + return false; + } + + public function set($key, $value) { + $storageDir = $this->getCacheDir(md5($key)); + $storageFile = $this->getCacheFile(md5($key)); + if ($this->isLocked($storageFile)) { + // some other process is writing to this file too, wait until it's done to prevent hickups + $this->waitForLock($storageFile); + } + if (! is_dir($storageDir)) { + if (! @mkdir($storageDir, 0755, true)) { + throw new Google_CacheException("Could not create storage directory: $storageDir"); + } + } + // we serialize the whole request object, since we don't only want the + // responseContent but also the postBody used, headers, size, etc + $data = serialize($value); + $this->createLock($storageFile); + if (! @file_put_contents($storageFile, $data)) { + $this->removeLock($storageFile); + throw new Google_CacheException("Could not store data in the file"); + } + $this->removeLock($storageFile); + } + + public function delete($key) { + $file = $this->getCacheFile(md5($key)); + if (! @unlink($file)) { + throw new Google_CacheException("Cache file could not be deleted"); + } + } +} diff --git a/modules/oauth/src/google/cache/Google_MemcacheCache.php b/modules/oauth/src/google/cache/Google_MemcacheCache.php new file mode 100644 index 0000000..22493f8 --- /dev/null +++ b/modules/oauth/src/google/cache/Google_MemcacheCache.php @@ -0,0 +1,130 @@ + + */ +class Google_MemcacheCache extends Google_Cache { + private $connection = false; + + public function __construct() { + global $apiConfig; + if (! function_exists('memcache_connect')) { + throw new Google_CacheException("Memcache functions not available"); + } + $this->host = $apiConfig['ioMemCacheCache_host']; + $this->port = $apiConfig['ioMemCacheCache_port']; + if (empty($this->host) || empty($this->port)) { + throw new Google_CacheException("You need to supply a valid memcache host and port"); + } + } + + private function isLocked($key) { + $this->check(); + if ((@memcache_get($this->connection, $key . '.lock')) === false) { + return false; + } + return true; + } + + private function createLock($key) { + $this->check(); + // the interesting thing is that this could fail if the lock was created in the meantime.. + // but we'll ignore that out of convenience + @memcache_add($this->connection, $key . '.lock', '', 0, 5); + } + + private function removeLock($key) { + $this->check(); + // suppress all warnings, if some other process removed it that's ok too + @memcache_delete($this->connection, $key . '.lock'); + } + + private function waitForLock($key) { + $this->check(); + // 20 x 250 = 5 seconds + $tries = 20; + $cnt = 0; + do { + // 250 ms is a long time to sleep, but it does stop the server from burning all resources on polling locks.. + usleep(250); + $cnt ++; + } while ($cnt <= $tries && $this->isLocked($key)); + if ($this->isLocked($key)) { + // 5 seconds passed, assume the owning process died off and remove it + $this->removeLock($key); + } + } + + // I prefer lazy initialization since the cache isn't used every request + // so this potentially saves a lot of overhead + private function connect() { + if (! $this->connection = @memcache_pconnect($this->host, $this->port)) { + throw new Google_CacheException("Couldn't connect to memcache server"); + } + } + + private function check() { + if (! $this->connection) { + $this->connect(); + } + } + + /** + * @inheritDoc + */ + public function get($key, $expiration = false) { + $this->check(); + if (($ret = @memcache_get($this->connection, $key)) === false) { + return false; + } + if (! $expiration || (time() - $ret['time'] > $expiration)) { + $this->delete($key); + return false; + } + return $ret['data']; + } + + /** + * @inheritDoc + * @param string $key + * @param string $value + * @throws Google_CacheException + */ + public function set($key, $value) { + $this->check(); + // we store it with the cache_time default expiration so objects will at least get cleaned eventually. + if (@memcache_set($this->connection, $key, array('time' => time(), + 'data' => $value), false) == false) { + throw new Google_CacheException("Couldn't store data in cache"); + } + } + + /** + * @inheritDoc + * @param String $key + */ + public function delete($key) { + $this->check(); + @memcache_delete($this->connection, $key); + } +} diff --git a/modules/oauth/src/google/config.php b/modules/oauth/src/google/config.php new file mode 100644 index 0000000..00917f4 --- /dev/null +++ b/modules/oauth/src/google/config.php @@ -0,0 +1,81 @@ + 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/modules/oauth/src/google/contrib/Google_AdexchangebuyerService.php b/modules/oauth/src/google/contrib/Google_AdexchangebuyerService.php new file mode 100644 index 0000000..0fae208 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_AdexchangebuyerService.php @@ -0,0 +1,567 @@ + + * $adexchangebuyerService = new Google_AdexchangebuyerService(...); + * $directDeals = $adexchangebuyerService->directDeals; + * + */ + class Google_DirectDealsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the authenticated user's list of direct deals. (directDeals.list) + * + * @param array $optParams Optional parameters. + * @return Google_DirectDealsList + */ + public function listDirectDeals($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_DirectDealsList($data); + } else { + return $data; + } + } + /** + * Gets one direct deal by ID. (directDeals.get) + * + * @param string $id The direct deal id + * @param array $optParams Optional parameters. + * @return Google_DirectDeal + */ + public function get($id, $optParams = array()) { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_DirectDeal($data); + } else { + return $data; + } + } + } + + /** + * The "accounts" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_AdexchangebuyerService(...); + * $accounts = $adexchangebuyerService->accounts; + * + */ + class Google_AccountsServiceResource extends Google_ServiceResource { + + + /** + * Updates an existing account. This method supports patch semantics. (accounts.patch) + * + * @param int $id The account id + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Account + */ + public function patch($id, Google_Account $postBody, $optParams = array()) { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Account($data); + } else { + return $data; + } + } + /** + * Retrieves the authenticated user's list of accounts. (accounts.list) + * + * @param array $optParams Optional parameters. + * @return Google_AccountsList + */ + public function listAccounts($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AccountsList($data); + } else { + return $data; + } + } + /** + * Updates an existing account. (accounts.update) + * + * @param int $id The account id + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Account + */ + public function update($id, Google_Account $postBody, $optParams = array()) { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Account($data); + } else { + return $data; + } + } + /** + * Gets one account by ID. (accounts.get) + * + * @param int $id The account id + * @param array $optParams Optional parameters. + * @return Google_Account + */ + public function get($id, $optParams = array()) { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Account($data); + } else { + return $data; + } + } + } + + /** + * The "creatives" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_AdexchangebuyerService(...); + * $creatives = $adexchangebuyerService->creatives; + * + */ + class Google_CreativesServiceResource extends Google_ServiceResource { + + + /** + * Submit a new creative. (creatives.insert) + * + * @param Google_Creative $postBody + * @param array $optParams Optional parameters. + * @return Google_Creative + */ + public function insert(Google_Creative $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Creative($data); + } else { + return $data; + } + } + /** + * Retrieves a list of the authenticated user's active creatives. (creatives.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. Optional. + * @opt_param string maxResults Maximum number of entries returned on one result page. If not set, the default is 100. Optional. + * @return Google_CreativesList + */ + public function listCreatives($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CreativesList($data); + } else { + return $data; + } + } + /** + * Gets the status for a single creative. (creatives.get) + * + * @param int $accountId The id for the account that will serve this creative. + * @param string $buyerCreativeId The buyer-specific id for this creative. + * @param string $adgroupId The adgroup this creative belongs to. + * @param array $optParams Optional parameters. + * @return Google_Creative + */ + public function get($accountId, $buyerCreativeId, $adgroupId, $optParams = array()) { + $params = array('accountId' => $accountId, 'buyerCreativeId' => $buyerCreativeId, 'adgroupId' => $adgroupId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Creative($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Adexchangebuyer (v1). + * + *

+ * Lets you manage your Ad Exchange Buyer account. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_AdexchangebuyerService extends Google_Service { + public $directDeals; + public $accounts; + public $creatives; + /** + * Constructs the internal representation of the Adexchangebuyer service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'adexchangebuyer/v1/'; + $this->version = 'v1'; + $this->serviceName = 'adexchangebuyer'; + + $client->addService($this->serviceName, $this->version); + $this->directDeals = new Google_DirectDealsServiceResource($this, $this->serviceName, 'directDeals', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "path": "directdeals", "response": {"$ref": "DirectDealsList"}, "id": "adexchangebuyer.directDeals.list", "httpMethod": "GET"}, "get": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "parameters": {"id": {"required": true, "type": "string", "location": "path", "format": "int64"}}, "id": "adexchangebuyer.directDeals.get", "httpMethod": "GET", "path": "directdeals/{id}", "response": {"$ref": "DirectDeal"}}}}', true)); + $this->accounts = new Google_AccountsServiceResource($this, $this->serviceName, 'accounts', json_decode('{"methods": {"patch": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "parameters": {"id": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "Account"}, "response": {"$ref": "Account"}, "httpMethod": "PATCH", "path": "accounts/{id}", "id": "adexchangebuyer.accounts.patch"}, "list": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "path": "accounts", "response": {"$ref": "AccountsList"}, "id": "adexchangebuyer.accounts.list", "httpMethod": "GET"}, "update": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "parameters": {"id": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "Account"}, "response": {"$ref": "Account"}, "httpMethod": "PUT", "path": "accounts/{id}", "id": "adexchangebuyer.accounts.update"}, "get": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "parameters": {"id": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "id": "adexchangebuyer.accounts.get", "httpMethod": "GET", "path": "accounts/{id}", "response": {"$ref": "Account"}}}}', true)); + $this->creatives = new Google_CreativesServiceResource($this, $this->serviceName, 'creatives', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "request": {"$ref": "Creative"}, "response": {"$ref": "Creative"}, "httpMethod": "POST", "path": "creatives", "id": "adexchangebuyer.creatives.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "1", "type": "integer", "maximum": "1000", "format": "uint32"}}, "response": {"$ref": "CreativesList"}, "httpMethod": "GET", "path": "creatives", "id": "adexchangebuyer.creatives.list"}, "get": {"scopes": ["https://www.googleapis.com/auth/adexchange.buyer"], "parameters": {"adgroupId": {"required": true, "type": "string", "location": "query", "format": "int64"}, "buyerCreativeId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "id": "adexchangebuyer.creatives.get", "httpMethod": "GET", "path": "creatives/{accountId}/{buyerCreativeId}", "response": {"$ref": "Creative"}}}}', true)); + + } +} + +class Google_Account extends Google_Model { + public $kind; + public $maximumTotalQps; + protected $__bidderLocationType = 'Google_AccountBidderLocation'; + protected $__bidderLocationDataType = 'array'; + public $bidderLocation; + public $cookieMatchingNid; + public $id; + public $cookieMatchingUrl; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setMaximumTotalQps($maximumTotalQps) { + $this->maximumTotalQps = $maximumTotalQps; + } + public function getMaximumTotalQps() { + return $this->maximumTotalQps; + } + public function setBidderLocation($bidderLocation) { + $this->assertIsArray($bidderLocation, 'Google_AccountBidderLocation', __METHOD__); + $this->bidderLocation = $bidderLocation; + } + public function getBidderLocation() { + return $this->bidderLocation; + } + public function setCookieMatchingNid($cookieMatchingNid) { + $this->cookieMatchingNid = $cookieMatchingNid; + } + public function getCookieMatchingNid() { + return $this->cookieMatchingNid; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setCookieMatchingUrl($cookieMatchingUrl) { + $this->cookieMatchingUrl = $cookieMatchingUrl; + } + public function getCookieMatchingUrl() { + return $this->cookieMatchingUrl; + } +} + +class Google_AccountBidderLocation extends Google_Model { + public $url; + public $maximumQps; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setMaximumQps($maximumQps) { + $this->maximumQps = $maximumQps; + } + public function getMaximumQps() { + return $this->maximumQps; + } +} + +class Google_AccountsList extends Google_Model { + protected $__itemsType = 'Google_Account'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems($items) { + $this->assertIsArray($items, 'Google_Account', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Creative extends Google_Model { + public $productCategories; + public $advertiserName; + public $adgroupId; + public $videoURL; + public $width; + public $attribute; + public $kind; + public $height; + public $advertiserId; + public $HTMLSnippet; + public $status; + public $buyerCreativeId; + public $clickThroughUrl; + public $vendorType; + public $disapprovalReasons; + public $sensitiveCategories; + public $accountId; + public function setProductCategories($productCategories) { + $this->productCategories = $productCategories; + } + public function getProductCategories() { + return $this->productCategories; + } + public function setAdvertiserName($advertiserName) { + $this->advertiserName = $advertiserName; + } + public function getAdvertiserName() { + return $this->advertiserName; + } + public function setAdgroupId($adgroupId) { + $this->adgroupId = $adgroupId; + } + public function getAdgroupId() { + return $this->adgroupId; + } + public function setVideoURL($videoURL) { + $this->videoURL = $videoURL; + } + public function getVideoURL() { + return $this->videoURL; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setAttribute($attribute) { + $this->attribute = $attribute; + } + public function getAttribute() { + return $this->attribute; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } + public function setAdvertiserId($advertiserId) { + $this->advertiserId = $advertiserId; + } + public function getAdvertiserId() { + return $this->advertiserId; + } + public function setHTMLSnippet($HTMLSnippet) { + $this->HTMLSnippet = $HTMLSnippet; + } + public function getHTMLSnippet() { + return $this->HTMLSnippet; + } + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setBuyerCreativeId($buyerCreativeId) { + $this->buyerCreativeId = $buyerCreativeId; + } + public function getBuyerCreativeId() { + return $this->buyerCreativeId; + } + public function setClickThroughUrl($clickThroughUrl) { + $this->clickThroughUrl = $clickThroughUrl; + } + public function getClickThroughUrl() { + return $this->clickThroughUrl; + } + public function setVendorType($vendorType) { + $this->vendorType = $vendorType; + } + public function getVendorType() { + return $this->vendorType; + } + public function setDisapprovalReasons($disapprovalReasons) { + $this->disapprovalReasons = $disapprovalReasons; + } + public function getDisapprovalReasons() { + return $this->disapprovalReasons; + } + public function setSensitiveCategories($sensitiveCategories) { + $this->sensitiveCategories = $sensitiveCategories; + } + public function getSensitiveCategories() { + return $this->sensitiveCategories; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_CreativesList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Creative'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Creative', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_DirectDeal extends Google_Model { + public $advertiser; + public $kind; + public $currencyCode; + public $fixedCpm; + public $startTime; + public $endTime; + public $sellerNetwork; + public $id; + public $accountId; + public function setAdvertiser($advertiser) { + $this->advertiser = $advertiser; + } + public function getAdvertiser() { + return $this->advertiser; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCurrencyCode($currencyCode) { + $this->currencyCode = $currencyCode; + } + public function getCurrencyCode() { + return $this->currencyCode; + } + public function setFixedCpm($fixedCpm) { + $this->fixedCpm = $fixedCpm; + } + public function getFixedCpm() { + return $this->fixedCpm; + } + public function setStartTime($startTime) { + $this->startTime = $startTime; + } + public function getStartTime() { + return $this->startTime; + } + public function setEndTime($endTime) { + $this->endTime = $endTime; + } + public function getEndTime() { + return $this->endTime; + } + public function setSellerNetwork($sellerNetwork) { + $this->sellerNetwork = $sellerNetwork; + } + public function getSellerNetwork() { + return $this->sellerNetwork; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_DirectDealsList extends Google_Model { + public $kind; + protected $__directDealsType = 'Google_DirectDeal'; + protected $__directDealsDataType = 'array'; + public $directDeals; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDirectDeals($directDeals) { + $this->assertIsArray($directDeals, 'Google_DirectDeal', __METHOD__); + $this->directDeals = $directDeals; + } + public function getDirectDeals() { + return $this->directDeals; + } +} diff --git a/modules/oauth/src/google/contrib/Google_AdsenseService.php b/modules/oauth/src/google/contrib/Google_AdsenseService.php new file mode 100644 index 0000000..d887090 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_AdsenseService.php @@ -0,0 +1,1140 @@ + + * $adsenseService = new Google_AdsenseService(...); + * $urlchannels = $adsenseService->urlchannels; + * + */ + class Google_UrlchannelsServiceResource extends Google_ServiceResource { + + + /** + * List all URL channels in the specified ad client for this AdSense account. (urlchannels.list) + * + * @param string $adClientId Ad client for which to list URL channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through URL channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of URL channels to include in the response, used for paging. + * @return Google_UrlChannels + */ + public function listUrlchannels($adClientId, $optParams = array()) { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_UrlChannels($data); + } else { + return $data; + } + } + } + + /** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $adunits = $adsenseService->adunits; + * + */ + class Google_AdunitsServiceResource extends Google_ServiceResource { + + + /** + * List all ad units in the specified ad client for this AdSense account. (adunits.list) + * + * @param string $adClientId Ad client for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive Whether to include inactive ad units. Default: true. + * @opt_param string pageToken A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of ad units to include in the response, used for paging. + * @return Google_AdUnits + */ + public function listAdunits($adClientId, $optParams = array()) { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdUnits($data); + } else { + return $data; + } + } + /** + * Gets the specified ad unit in the specified ad client. (adunits.get) + * + * @param string $adClientId Ad client for which to get the ad unit. + * @param string $adUnitId Ad unit to retrieve. + * @param array $optParams Optional parameters. + * @return Google_AdUnit + */ + public function get($adClientId, $adUnitId, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_AdUnit($data); + } else { + return $data; + } + } + } + + /** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $customchannels = $adsenseService->customchannels; + * + */ + class Google_AdunitsCustomchannelsServiceResource extends Google_ServiceResource { + + + /** + * List all custom channels which the specified ad unit belongs to. (customchannels.list) + * + * @param string $adClientId Ad client which contains the ad unit. + * @param string $adUnitId Ad unit for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of custom channels to include in the response, used for paging. + * @return Google_CustomChannels + */ + public function listAdunitsCustomchannels($adClientId, $adUnitId, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannels($data); + } else { + return $data; + } + } + } + + /** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $adclients = $adsenseService->adclients; + * + */ + class Google_AdclientsServiceResource extends Google_ServiceResource { + + + /** + * List all ad clients in this AdSense account. (adclients.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of ad clients to include in the response, used for paging. + * @return Google_AdClients + */ + public function listAdclients($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdClients($data); + } else { + return $data; + } + } + } + + /** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $reports = $adsenseService->reports; + * + */ + class Google_ReportsServiceResource extends Google_ServiceResource { + + + /** + * Generate an AdSense report based on the report request sent in the query parameters. Returns the + * result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter. + * (reports.generate) + * + * @param string $startDate Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. + * @opt_param string locale Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified. + * @opt_param string metric Numeric columns to include in the report. + * @opt_param int maxResults The maximum number of rows of report data to return. + * @opt_param string filter Filters to be run on the report. + * @opt_param string currency Optional currency to use when reporting on monetary metrics. Defaults to the account's currency if not set. + * @opt_param int startIndex Index of the first row of report data to return. + * @opt_param string dimension Dimensions to base the report on. + * @opt_param string accountId Accounts upon which to report. + * @return Google_AdsenseReportsGenerateResponse + */ + public function generate($startDate, $endDate, $optParams = array()) { + $params = array('startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + $data = $this->__call('generate', array($params)); + if ($this->useObjects()) { + return new Google_AdsenseReportsGenerateResponse($data); + } else { + return $data; + } + } + } + + /** + * The "accounts" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $accounts = $adsenseService->accounts; + * + */ + class Google_AccountsServiceResource extends Google_ServiceResource { + + + /** + * List all accounts available to this AdSense account. (accounts.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through accounts. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of accounts to include in the response, used for paging. + * @return Google_Accounts + */ + public function listAccounts($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Accounts($data); + } else { + return $data; + } + } + /** + * Get information about the selected AdSense account. (accounts.get) + * + * @param string $accountId Account to get information about. + * @param array $optParams Optional parameters. + * + * @opt_param bool tree Whether the tree of sub accounts should be returned. + * @return Google_Account + */ + public function get($accountId, $optParams = array()) { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Account($data); + } else { + return $data; + } + } + } + + /** + * The "urlchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $urlchannels = $adsenseService->urlchannels; + * + */ + class Google_AccountsUrlchannelsServiceResource extends Google_ServiceResource { + + + /** + * List all URL channels in the specified ad client for the specified account. (urlchannels.list) + * + * @param string $accountId Account to which the ad client belongs. + * @param string $adClientId Ad client for which to list URL channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through URL channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of URL channels to include in the response, used for paging. + * @return Google_UrlChannels + */ + public function listAccountsUrlchannels($accountId, $adClientId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_UrlChannels($data); + } else { + return $data; + } + } + } + /** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $adunits = $adsenseService->adunits; + * + */ + class Google_AccountsAdunitsServiceResource extends Google_ServiceResource { + + + /** + * List all ad units in the specified ad client for the specified account. (adunits.list) + * + * @param string $accountId Account to which the ad client belongs. + * @param string $adClientId Ad client for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive Whether to include inactive ad units. Default: true. + * @opt_param string pageToken A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of ad units to include in the response, used for paging. + * @return Google_AdUnits + */ + public function listAccountsAdunits($accountId, $adClientId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdUnits($data); + } else { + return $data; + } + } + /** + * Gets the specified ad unit in the specified ad client for the specified account. (adunits.get) + * + * @param string $accountId Account to which the ad client belongs. + * @param string $adClientId Ad client for which to get the ad unit. + * @param string $adUnitId Ad unit to retrieve. + * @param array $optParams Optional parameters. + * @return Google_AdUnit + */ + public function get($accountId, $adClientId, $adUnitId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_AdUnit($data); + } else { + return $data; + } + } + } + + /** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $customchannels = $adsenseService->customchannels; + * + */ + class Google_AccountsAdunitsCustomchannelsServiceResource extends Google_ServiceResource { + + + /** + * List all custom channels which the specified ad unit belongs to. (customchannels.list) + * + * @param string $accountId Account to which the ad client belongs. + * @param string $adClientId Ad client which contains the ad unit. + * @param string $adUnitId Ad unit for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of custom channels to include in the response, used for paging. + * @return Google_CustomChannels + */ + public function listAccountsAdunitsCustomchannels($accountId, $adClientId, $adUnitId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannels($data); + } else { + return $data; + } + } + } + /** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $adclients = $adsenseService->adclients; + * + */ + class Google_AccountsAdclientsServiceResource extends Google_ServiceResource { + + + /** + * List all ad clients in the specified account. (adclients.list) + * + * @param string $accountId Account for which to list ad clients. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of ad clients to include in the response, used for paging. + * @return Google_AdClients + */ + public function listAccountsAdclients($accountId, $optParams = array()) { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdClients($data); + } else { + return $data; + } + } + } + /** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $reports = $adsenseService->reports; + * + */ + class Google_AccountsReportsServiceResource extends Google_ServiceResource { + + + /** + * Generate an AdSense report based on the report request sent in the query parameters. Returns the + * result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter. + * (reports.generate) + * + * @param string $accountId Account upon which to report. + * @param string $startDate Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. + * @opt_param string locale Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified. + * @opt_param string metric Numeric columns to include in the report. + * @opt_param int maxResults The maximum number of rows of report data to return. + * @opt_param string filter Filters to be run on the report. + * @opt_param string currency Optional currency to use when reporting on monetary metrics. Defaults to the account's currency if not set. + * @opt_param int startIndex Index of the first row of report data to return. + * @opt_param string dimension Dimensions to base the report on. + * @return Google_AdsenseReportsGenerateResponse + */ + public function generate($accountId, $startDate, $endDate, $optParams = array()) { + $params = array('accountId' => $accountId, 'startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + $data = $this->__call('generate', array($params)); + if ($this->useObjects()) { + return new Google_AdsenseReportsGenerateResponse($data); + } else { + return $data; + } + } + } + /** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $customchannels = $adsenseService->customchannels; + * + */ + class Google_AccountsCustomchannelsServiceResource extends Google_ServiceResource { + + + /** + * List all custom channels in the specified ad client for the specified account. + * (customchannels.list) + * + * @param string $accountId Account to which the ad client belongs. + * @param string $adClientId Ad client for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of custom channels to include in the response, used for paging. + * @return Google_CustomChannels + */ + public function listAccountsCustomchannels($accountId, $adClientId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannels($data); + } else { + return $data; + } + } + /** + * Get the specified custom channel from the specified ad client for the specified account. + * (customchannels.get) + * + * @param string $accountId Account to which the ad client belongs. + * @param string $adClientId Ad client which contains the custom channel. + * @param string $customChannelId Custom channel to retrieve. + * @param array $optParams Optional parameters. + * @return Google_CustomChannel + */ + public function get($accountId, $adClientId, $customChannelId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannel($data); + } else { + return $data; + } + } + } + + /** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $adunits = $adsenseService->adunits; + * + */ + class Google_AccountsCustomchannelsAdunitsServiceResource extends Google_ServiceResource { + + + /** + * List all ad units in the specified custom channel. (adunits.list) + * + * @param string $accountId Account to which the ad client belongs. + * @param string $adClientId Ad client which contains the custom channel. + * @param string $customChannelId Custom channel for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive Whether to include inactive ad units. Default: true. + * @opt_param int maxResults The maximum number of ad units to include in the response, used for paging. + * @opt_param string pageToken A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @return Google_AdUnits + */ + public function listAccountsCustomchannelsAdunits($accountId, $adClientId, $customChannelId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdUnits($data); + } else { + return $data; + } + } + } + + /** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $customchannels = $adsenseService->customchannels; + * + */ + class Google_CustomchannelsServiceResource extends Google_ServiceResource { + + + /** + * List all custom channels in the specified ad client for this AdSense account. + * (customchannels.list) + * + * @param string $adClientId Ad client for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of custom channels to include in the response, used for paging. + * @return Google_CustomChannels + */ + public function listCustomchannels($adClientId, $optParams = array()) { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannels($data); + } else { + return $data; + } + } + /** + * Get the specified custom channel from the specified ad client. (customchannels.get) + * + * @param string $adClientId Ad client which contains the custom channel. + * @param string $customChannelId Custom channel to retrieve. + * @param array $optParams Optional parameters. + * @return Google_CustomChannel + */ + public function get($adClientId, $customChannelId, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannel($data); + } else { + return $data; + } + } + } + + /** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_AdsenseService(...); + * $adunits = $adsenseService->adunits; + * + */ + class Google_CustomchannelsAdunitsServiceResource extends Google_ServiceResource { + + + /** + * List all ad units in the specified custom channel. (adunits.list) + * + * @param string $adClientId Ad client which contains the custom channel. + * @param string $customChannelId Custom channel for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive Whether to include inactive ad units. Default: true. + * @opt_param string pageToken A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults The maximum number of ad units to include in the response, used for paging. + * @return Google_AdUnits + */ + public function listCustomchannelsAdunits($adClientId, $customChannelId, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdUnits($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Adsense (v1.1). + * + *

+ * Gives AdSense publishers access to their inventory and the ability to generate reports + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_AdsenseService extends Google_Service { + public $urlchannels; + public $adunits; + public $adunits_customchannels; + public $adclients; + public $reports; + public $accounts; + public $accounts_urlchannels; + public $accounts_adunits; + public $accounts_adunits_customchannels; + public $accounts_adclients; + public $accounts_reports; + public $accounts_customchannels; + public $accounts_customchannels_adunits; + public $customchannels; + public $customchannels_adunits; + /** + * Constructs the internal representation of the Adsense service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'adsense/v1.1/'; + $this->version = 'v1.1'; + $this->serviceName = 'adsense'; + + $client->addService($this->serviceName, $this->version); + $this->urlchannels = new Google_UrlchannelsServiceResource($this, $this->serviceName, 'urlchannels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}}, "id": "adsense.urlchannels.list", "httpMethod": "GET", "path": "adclients/{adClientId}/urlchannels", "response": {"$ref": "UrlChannels"}}}}', true)); + $this->adunits = new Google_AdunitsServiceResource($this, $this->serviceName, 'adunits', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"includeInactive": {"type": "boolean", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}}, "id": "adsense.adunits.list", "httpMethod": "GET", "path": "adclients/{adClientId}/adunits", "response": {"$ref": "AdUnits"}}, "get": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "adUnitId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.adunits.get", "httpMethod": "GET", "path": "adclients/{adClientId}/adunits/{adUnitId}", "response": {"$ref": "AdUnit"}}}}', true)); + $this->adunits_customchannels = new Google_AdunitsCustomchannelsServiceResource($this, $this->serviceName, 'customchannels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}, "adUnitId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.adunits.customchannels.list", "httpMethod": "GET", "path": "adclients/{adClientId}/adunits/{adUnitId}/customchannels", "response": {"$ref": "CustomChannels"}}}}', true)); + $this->adclients = new Google_AdclientsServiceResource($this, $this->serviceName, 'adclients', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}}, "response": {"$ref": "AdClients"}, "httpMethod": "GET", "path": "adclients", "id": "adsense.adclients.list"}}}', true)); + $this->reports = new Google_ReportsServiceResource($this, $this->serviceName, 'reports', json_decode('{"methods": {"generate": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"sort": {"repeated": true, "type": "string", "location": "query"}, "startDate": {"required": true, "type": "string", "location": "query"}, "endDate": {"required": true, "type": "string", "location": "query"}, "locale": {"type": "string", "location": "query"}, "metric": {"repeated": true, "type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "50000", "format": "int32"}, "filter": {"repeated": true, "type": "string", "location": "query"}, "currency": {"type": "string", "location": "query"}, "startIndex": {"location": "query", "minimum": "0", "type": "integer", "maximum": "5000", "format": "int32"}, "dimension": {"repeated": true, "type": "string", "location": "query"}, "accountId": {"repeated": true, "type": "string", "location": "query"}}, "id": "adsense.reports.generate", "httpMethod": "GET", "supportsMediaDownload": true, "path": "reports", "response": {"$ref": "AdsenseReportsGenerateResponse"}}}}', true)); + $this->accounts = new Google_AccountsServiceResource($this, $this->serviceName, 'accounts', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}}, "response": {"$ref": "Accounts"}, "httpMethod": "GET", "path": "accounts", "id": "adsense.accounts.list"}, "get": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"tree": {"type": "boolean", "location": "query"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.get", "httpMethod": "GET", "path": "accounts/{accountId}", "response": {"$ref": "Account"}}}}', true)); + $this->accounts_urlchannels = new Google_AccountsUrlchannelsServiceResource($this, $this->serviceName, 'urlchannels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.urlchannels.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/urlchannels", "response": {"$ref": "UrlChannels"}}}}', true)); + $this->accounts_adunits = new Google_AccountsAdunitsServiceResource($this, $this->serviceName, 'adunits', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"includeInactive": {"type": "boolean", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.adunits.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/adunits", "response": {"$ref": "AdUnits"}}, "get": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "adUnitId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.adunits.get", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}", "response": {"$ref": "AdUnit"}}}}', true)); + $this->accounts_adunits_customchannels = new Google_AccountsAdunitsCustomchannelsServiceResource($this, $this->serviceName, 'customchannels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}, "adUnitId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.adunits.customchannels.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}/customchannels", "response": {"$ref": "CustomChannels"}}}}', true)); + $this->accounts_adclients = new Google_AccountsAdclientsServiceResource($this, $this->serviceName, 'adclients', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.adclients.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients", "response": {"$ref": "AdClients"}}}}', true)); + $this->accounts_reports = new Google_AccountsReportsServiceResource($this, $this->serviceName, 'reports', json_decode('{"methods": {"generate": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"sort": {"repeated": true, "type": "string", "location": "query"}, "startDate": {"required": true, "type": "string", "location": "query"}, "endDate": {"required": true, "type": "string", "location": "query"}, "locale": {"type": "string", "location": "query"}, "metric": {"repeated": true, "type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "50000", "format": "int32"}, "filter": {"repeated": true, "type": "string", "location": "query"}, "currency": {"type": "string", "location": "query"}, "startIndex": {"location": "query", "minimum": "0", "type": "integer", "maximum": "5000", "format": "int32"}, "dimension": {"repeated": true, "type": "string", "location": "query"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.reports.generate", "httpMethod": "GET", "supportsMediaDownload": true, "path": "accounts/{accountId}/reports", "response": {"$ref": "AdsenseReportsGenerateResponse"}}}}', true)); + $this->accounts_customchannels = new Google_AccountsCustomchannelsServiceResource($this, $this->serviceName, 'customchannels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.customchannels.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/customchannels", "response": {"$ref": "CustomChannels"}}, "get": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"customChannelId": {"required": true, "type": "string", "location": "path"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.customchannels.get", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/customchannels/{customChannelId}", "response": {"$ref": "CustomChannel"}}}}', true)); + $this->accounts_customchannels_adunits = new Google_AccountsCustomchannelsAdunitsServiceResource($this, $this->serviceName, 'adunits', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"includeInactive": {"type": "boolean", "location": "query"}, "customChannelId": {"required": true, "type": "string", "location": "path"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}, "pageToken": {"type": "string", "location": "query"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.accounts.customchannels.adunits.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/customchannels/{customChannelId}/adunits", "response": {"$ref": "AdUnits"}}}}', true)); + $this->customchannels = new Google_CustomchannelsServiceResource($this, $this->serviceName, 'customchannels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}}, "id": "adsense.customchannels.list", "httpMethod": "GET", "path": "adclients/{adClientId}/customchannels", "response": {"$ref": "CustomChannels"}}, "get": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"customChannelId": {"required": true, "type": "string", "location": "path"}, "adClientId": {"required": true, "type": "string", "location": "path"}}, "id": "adsense.customchannels.get", "httpMethod": "GET", "path": "adclients/{adClientId}/customchannels/{customChannelId}", "response": {"$ref": "CustomChannel"}}}}', true)); + $this->customchannels_adunits = new Google_CustomchannelsAdunitsServiceResource($this, $this->serviceName, 'adunits', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/adsense.readonly"], "parameters": {"includeInactive": {"type": "boolean", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "customChannelId": {"required": true, "type": "string", "location": "path"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "int32"}}, "id": "adsense.customchannels.adunits.list", "httpMethod": "GET", "path": "adclients/{adClientId}/customchannels/{customChannelId}/adunits", "response": {"$ref": "AdUnits"}}}}', true)); + + } +} + +class Google_Account extends Google_Model { + public $kind; + public $id; + protected $__subAccountsType = 'Google_Account'; + protected $__subAccountsDataType = 'array'; + public $subAccounts; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSubAccounts($subAccounts) { + $this->assertIsArray($subAccounts, 'Google_Account', __METHOD__); + $this->subAccounts = $subAccounts; + } + public function getSubAccounts() { + return $this->subAccounts; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_Accounts extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Account'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Account', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_AdClient extends Google_Model { + public $productCode; + public $kind; + public $id; + public $supportsReporting; + public function setProductCode($productCode) { + $this->productCode = $productCode; + } + public function getProductCode() { + return $this->productCode; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSupportsReporting($supportsReporting) { + $this->supportsReporting = $supportsReporting; + } + public function getSupportsReporting() { + return $this->supportsReporting; + } +} + +class Google_AdClients extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_AdClient'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_AdClient', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_AdUnit extends Google_Model { + public $status; + public $kind; + public $code; + public $id; + public $name; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCode($code) { + $this->code = $code; + } + public function getCode() { + return $this->code; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_AdUnits extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_AdUnit'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_AdUnit', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_AdsenseReportsGenerateResponse extends Google_Model { + public $kind; + public $rows; + public $warnings; + public $totals; + protected $__headersType = 'Google_AdsenseReportsGenerateResponseHeaders'; + protected $__headersDataType = 'array'; + public $headers; + public $totalMatchedRows; + public $averages; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRows($rows) { + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setWarnings($warnings) { + $this->warnings = $warnings; + } + public function getWarnings() { + return $this->warnings; + } + public function setTotals($totals) { + $this->totals = $totals; + } + public function getTotals() { + return $this->totals; + } + public function setHeaders($headers) { + $this->assertIsArray($headers, 'Google_AdsenseReportsGenerateResponseHeaders', __METHOD__); + $this->headers = $headers; + } + public function getHeaders() { + return $this->headers; + } + public function setTotalMatchedRows($totalMatchedRows) { + $this->totalMatchedRows = $totalMatchedRows; + } + public function getTotalMatchedRows() { + return $this->totalMatchedRows; + } + public function setAverages($averages) { + $this->averages = $averages; + } + public function getAverages() { + return $this->averages; + } +} + +class Google_AdsenseReportsGenerateResponseHeaders extends Google_Model { + public $currency; + public $type; + public $name; + public function setCurrency($currency) { + $this->currency = $currency; + } + public function getCurrency() { + return $this->currency; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_CustomChannel extends Google_Model { + public $kind; + public $code; + protected $__targetingInfoType = 'Google_CustomChannelTargetingInfo'; + protected $__targetingInfoDataType = ''; + public $targetingInfo; + public $id; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCode($code) { + $this->code = $code; + } + public function getCode() { + return $this->code; + } + public function setTargetingInfo(Google_CustomChannelTargetingInfo $targetingInfo) { + $this->targetingInfo = $targetingInfo; + } + public function getTargetingInfo() { + return $this->targetingInfo; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_CustomChannelTargetingInfo extends Google_Model { + public $location; + public $adsAppearOn; + public $siteLanguage; + public $description; + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setAdsAppearOn($adsAppearOn) { + $this->adsAppearOn = $adsAppearOn; + } + public function getAdsAppearOn() { + return $this->adsAppearOn; + } + public function setSiteLanguage($siteLanguage) { + $this->siteLanguage = $siteLanguage; + } + public function getSiteLanguage() { + return $this->siteLanguage; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } +} + +class Google_CustomChannels extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_CustomChannel'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_CustomChannel', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_UrlChannel extends Google_Model { + public $kind; + public $id; + public $urlPattern; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setUrlPattern($urlPattern) { + $this->urlPattern = $urlPattern; + } + public function getUrlPattern() { + return $this->urlPattern; + } +} + +class Google_UrlChannels extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_UrlChannel'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_UrlChannel', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} diff --git a/modules/oauth/src/google/contrib/Google_AdsensehostService.php b/modules/oauth/src/google/contrib/Google_AdsensehostService.php new file mode 100644 index 0000000..246d052 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_AdsensehostService.php @@ -0,0 +1,1378 @@ + + * $adsensehostService = new Google_AdsensehostService(...); + * $urlchannels = $adsensehostService->urlchannels; + * + */ + class Google_UrlchannelsServiceResource extends Google_ServiceResource { + + + /** + * Add a new URL channel to the host AdSense account. (urlchannels.insert) + * + * @param string $adClientId Ad client to which the new URL channel will be added. + * @param Google_UrlChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_UrlChannel + */ + public function insert($adClientId, Google_UrlChannel $postBody, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_UrlChannel($data); + } else { + return $data; + } + } + /** + * List all host URL channels in the host AdSense account. (urlchannels.list) + * + * @param string $adClientId Ad client for which to list URL channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through URL channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of URL channels to include in the response, used for paging. + * @return Google_UrlChannels + */ + public function listUrlchannels($adClientId, $optParams = array()) { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_UrlChannels($data); + } else { + return $data; + } + } + /** + * Delete a URL channel from the host AdSense account. (urlchannels.delete) + * + * @param string $adClientId Ad client from which to delete the URL channel. + * @param string $urlChannelId URL channel to delete. + * @param array $optParams Optional parameters. + * @return Google_UrlChannel + */ + public function delete($adClientId, $urlChannelId, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'urlChannelId' => $urlChannelId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_UrlChannel($data); + } else { + return $data; + } + } + } + + /** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $adclients = $adsensehostService->adclients; + * + */ + class Google_AdclientsServiceResource extends Google_ServiceResource { + + + /** + * List all host ad clients in this AdSense account. (adclients.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of ad clients to include in the response, used for paging. + * @return Google_AdClients + */ + public function listAdclients($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdClients($data); + } else { + return $data; + } + } + /** + * Get information about one of the ad clients in the Host AdSense account. (adclients.get) + * + * @param string $adClientId Ad client to get. + * @param array $optParams Optional parameters. + * @return Google_AdClient + */ + public function get($adClientId, $optParams = array()) { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_AdClient($data); + } else { + return $data; + } + } + } + + /** + * The "associationsessions" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $associationsessions = $adsensehostService->associationsessions; + * + */ + class Google_AssociationsessionsServiceResource extends Google_ServiceResource { + + + /** + * Create an association session for initiating an association with an AdSense user. + * (associationsessions.start) + * + * @param string $productCode Products to associate with the user. + * @param string $websiteUrl The URL of the user's hosted website. + * @param array $optParams Optional parameters. + * + * @opt_param string websiteLocale The locale of the user's hosted website. + * @opt_param string userLocale The preferred locale of the user. + * @return Google_AssociationSession + */ + public function start($productCode, $websiteUrl, $optParams = array()) { + $params = array('productCode' => $productCode, 'websiteUrl' => $websiteUrl); + $params = array_merge($params, $optParams); + $data = $this->__call('start', array($params)); + if ($this->useObjects()) { + return new Google_AssociationSession($data); + } else { + return $data; + } + } + /** + * Verify an association session after the association callback returns from AdSense signup. + * (associationsessions.verify) + * + * @param string $token The token returned to the association callback URL. + * @param array $optParams Optional parameters. + * @return Google_AssociationSession + */ + public function verify($token, $optParams = array()) { + $params = array('token' => $token); + $params = array_merge($params, $optParams); + $data = $this->__call('verify', array($params)); + if ($this->useObjects()) { + return new Google_AssociationSession($data); + } else { + return $data; + } + } + } + + /** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $reports = $adsensehostService->reports; + * + */ + class Google_ReportsServiceResource extends Google_ServiceResource { + + + /** + * Generate an AdSense report based on the report request sent in the query parameters. Returns the + * result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter. + * (reports.generate) + * + * @param string $endDate End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $startDate Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. + * @opt_param string locale Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified. + * @opt_param string metric Numeric columns to include in the report. + * @opt_param string maxResults The maximum number of rows of report data to return. + * @opt_param string filter Filters to be run on the report. + * @opt_param string startIndex Index of the first row of report data to return. + * @opt_param string dimension Dimensions to base the report on. + * @return Google_Report + */ + public function generate($endDate, $startDate, $optParams = array()) { + $params = array('endDate' => $endDate, 'startDate' => $startDate); + $params = array_merge($params, $optParams); + $data = $this->__call('generate', array($params)); + if ($this->useObjects()) { + return new Google_Report($data); + } else { + return $data; + } + } + } + + /** + * The "accounts" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $accounts = $adsensehostService->accounts; + * + */ + class Google_AccountsServiceResource extends Google_ServiceResource { + + + /** + * List hosted accounts associated with this AdSense account by ad client id. (accounts.list) + * + * @param string $filterAdClientId Ad clients to list accounts for. + * @param array $optParams Optional parameters. + * @return Google_Accounts + */ + public function listAccounts($filterAdClientId, $optParams = array()) { + $params = array('filterAdClientId' => $filterAdClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Accounts($data); + } else { + return $data; + } + } + /** + * Get information about the selected associated AdSense account. (accounts.get) + * + * @param string $accountId Account to get information about. + * @param array $optParams Optional parameters. + * @return Google_Account + */ + public function get($accountId, $optParams = array()) { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Account($data); + } else { + return $data; + } + } + } + + /** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $adunits = $adsensehostService->adunits; + * + */ + class Google_AccountsAdunitsServiceResource extends Google_ServiceResource { + + + /** + * Insert the supplied ad unit into the specified publisher AdSense account. (adunits.insert) + * + * @param string $accountId Account which will contain the ad unit. + * @param string $adClientId Ad client into which to insert the ad unit. + * @param Google_AdUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_AdUnit + */ + public function insert($accountId, $adClientId, Google_AdUnit $postBody, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_AdUnit($data); + } else { + return $data; + } + } + /** + * Get the specified host ad unit in this AdSense account. (adunits.get) + * + * @param string $accountId Account which contains the ad unit. + * @param string $adClientId Ad client for which to get ad unit. + * @param string $adUnitId Ad unit to get. + * @param array $optParams Optional parameters. + * @return Google_AdUnit + */ + public function get($accountId, $adClientId, $adUnitId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_AdUnit($data); + } else { + return $data; + } + } + /** + * Get ad code for the specified ad unit, attaching the specified host custom channels. + * (adunits.getAdCode) + * + * @param string $accountId Account which contains the ad client. + * @param string $adClientId Ad client with contains the ad unit. + * @param string $adUnitId Ad unit to get the code for. + * @param array $optParams Optional parameters. + * + * @opt_param string hostCustomChannelId Host custom channel to attach to the ad code. + * @return Google_AdCode + */ + public function getAdCode($accountId, $adClientId, $adUnitId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + $data = $this->__call('getAdCode', array($params)); + if ($this->useObjects()) { + return new Google_AdCode($data); + } else { + return $data; + } + } + /** + * List all ad units in the specified publisher's AdSense account. (adunits.list) + * + * @param string $accountId Account which contains the ad client. + * @param string $adClientId Ad client for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive Whether to include inactive ad units. Default: true. + * @opt_param string pageToken A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of ad units to include in the response, used for paging. + * @return Google_AdUnits + */ + public function listAccountsAdunits($accountId, $adClientId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdUnits($data); + } else { + return $data; + } + } + /** + * Update the supplied ad unit in the specified publisher AdSense account. (adunits.update) + * + * @param string $accountId Account which contains the ad client. + * @param string $adClientId Ad client which contains the ad unit. + * @param Google_AdUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_AdUnit + */ + public function update($accountId, $adClientId, Google_AdUnit $postBody, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_AdUnit($data); + } else { + return $data; + } + } + /** + * Update the supplied ad unit in the specified publisher AdSense account. This method supports + * patch semantics. (adunits.patch) + * + * @param string $accountId Account which contains the ad client. + * @param string $adClientId Ad client which contains the ad unit. + * @param string $adUnitId Ad unit to get. + * @param Google_AdUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_AdUnit + */ + public function patch($accountId, $adClientId, $adUnitId, Google_AdUnit $postBody, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_AdUnit($data); + } else { + return $data; + } + } + /** + * Delete the specified ad unit from the specified publisher AdSense account. (adunits.delete) + * + * @param string $accountId Account which contains the ad unit. + * @param string $adClientId Ad client for which to get ad unit. + * @param string $adUnitId Ad unit to delete. + * @param array $optParams Optional parameters. + * @return Google_AdUnit + */ + public function delete($accountId, $adClientId, $adUnitId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_AdUnit($data); + } else { + return $data; + } + } + } + /** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $adclients = $adsensehostService->adclients; + * + */ + class Google_AccountsAdclientsServiceResource extends Google_ServiceResource { + + + /** + * List all hosted ad clients in the specified hosted account. (adclients.list) + * + * @param string $accountId Account for which to list ad clients. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of ad clients to include in the response, used for paging. + * @return Google_AdClients + */ + public function listAccountsAdclients($accountId, $optParams = array()) { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AdClients($data); + } else { + return $data; + } + } + /** + * Get information about one of the ad clients in the specified publisher's AdSense account. + * (adclients.get) + * + * @param string $accountId Account which contains the ad client. + * @param string $adClientId Ad client to get. + * @param array $optParams Optional parameters. + * @return Google_AdClient + */ + public function get($accountId, $adClientId, $optParams = array()) { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_AdClient($data); + } else { + return $data; + } + } + } + /** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $reports = $adsensehostService->reports; + * + */ + class Google_AccountsReportsServiceResource extends Google_ServiceResource { + + + /** + * Generate an AdSense report based on the report request sent in the query parameters. Returns the + * result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter. + * (reports.generate) + * + * @param string $accountId Hosted account upon which to report. + * @param string $startDate Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. + * @opt_param string locale Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified. + * @opt_param string metric Numeric columns to include in the report. + * @opt_param string maxResults The maximum number of rows of report data to return. + * @opt_param string filter Filters to be run on the report. + * @opt_param string startIndex Index of the first row of report data to return. + * @opt_param string dimension Dimensions to base the report on. + * @return Google_Report + */ + public function generate($accountId, $startDate, $endDate, $optParams = array()) { + $params = array('accountId' => $accountId, 'startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + $data = $this->__call('generate', array($params)); + if ($this->useObjects()) { + return new Google_Report($data); + } else { + return $data; + } + } + } + + /** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_AdsensehostService(...); + * $customchannels = $adsensehostService->customchannels; + * + */ + class Google_CustomchannelsServiceResource extends Google_ServiceResource { + + + /** + * Add a new custom channel to the host AdSense account. (customchannels.insert) + * + * @param string $adClientId Ad client to which the new custom channel will be added. + * @param Google_CustomChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_CustomChannel + */ + public function insert($adClientId, Google_CustomChannel $postBody, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannel($data); + } else { + return $data; + } + } + /** + * Get a specific custom channel from the host AdSense account. (customchannels.get) + * + * @param string $adClientId Ad client from which to get the custom channel. + * @param string $customChannelId Custom channel to get. + * @param array $optParams Optional parameters. + * @return Google_CustomChannel + */ + public function get($adClientId, $customChannelId, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannel($data); + } else { + return $data; + } + } + /** + * List all host custom channels in this AdSense account. (customchannels.list) + * + * @param string $adClientId Ad client for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of custom channels to include in the response, used for paging. + * @return Google_CustomChannels + */ + public function listCustomchannels($adClientId, $optParams = array()) { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannels($data); + } else { + return $data; + } + } + /** + * Update a custom channel in the host AdSense account. (customchannels.update) + * + * @param string $adClientId Ad client in which the custom channel will be updated. + * @param Google_CustomChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_CustomChannel + */ + public function update($adClientId, Google_CustomChannel $postBody, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannel($data); + } else { + return $data; + } + } + /** + * Update a custom channel in the host AdSense account. This method supports patch semantics. + * (customchannels.patch) + * + * @param string $adClientId Ad client in which the custom channel will be updated. + * @param string $customChannelId Custom channel to get. + * @param Google_CustomChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_CustomChannel + */ + public function patch($adClientId, $customChannelId, Google_CustomChannel $postBody, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannel($data); + } else { + return $data; + } + } + /** + * Delete a specific custom channel from the host AdSense account. (customchannels.delete) + * + * @param string $adClientId Ad client from which to delete the custom channel. + * @param string $customChannelId Custom channel to delete. + * @param array $optParams Optional parameters. + * @return Google_CustomChannel + */ + public function delete($adClientId, $customChannelId, $optParams = array()) { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_CustomChannel($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Adsensehost (v4.1). + * + *

+ * Gives AdSense Hosts access to report generation, ad code generation, and publisher management capabilities. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_AdsensehostService extends Google_Service { + public $urlchannels; + public $adclients; + public $associationsessions; + public $reports; + public $accounts; + public $accounts_adunits; + public $accounts_adclients; + public $accounts_reports; + public $customchannels; + /** + * Constructs the internal representation of the Adsensehost service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'adsensehost/v4.1/'; + $this->version = 'v4.1'; + $this->serviceName = 'adsensehost'; + + $client->addService($this->serviceName, $this->version); + $this->urlchannels = new Google_UrlchannelsServiceResource($this, $this->serviceName, 'urlchannels', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "UrlChannel"}, "response": {"$ref": "UrlChannel"}, "httpMethod": "POST", "path": "adclients/{adClientId}/urlchannels", "id": "adsensehost.urlchannels.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "uint32"}}, "id": "adsensehost.urlchannels.list", "httpMethod": "GET", "path": "adclients/{adClientId}/urlchannels", "response": {"$ref": "UrlChannels"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "urlChannelId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.urlchannels.delete", "httpMethod": "DELETE", "path": "adclients/{adClientId}/urlchannels/{urlChannelId}", "response": {"$ref": "UrlChannel"}}}}', true)); + $this->adclients = new Google_AdclientsServiceResource($this, $this->serviceName, 'adclients', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "uint32"}}, "response": {"$ref": "AdClients"}, "httpMethod": "GET", "path": "adclients", "id": "adsensehost.adclients.list"}, "get": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.adclients.get", "httpMethod": "GET", "path": "adclients/{adClientId}", "response": {"$ref": "AdClient"}}}}', true)); + $this->associationsessions = new Google_AssociationsessionsServiceResource($this, $this->serviceName, 'associationsessions', json_decode('{"methods": {"start": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"websiteLocale": {"type": "string", "location": "query"}, "productCode": {"repeated": true, "required": true, "type": "string", "location": "query", "enum": ["AFC", "AFF", "AFMC", "AFS"]}, "userLocale": {"type": "string", "location": "query"}, "websiteUrl": {"required": true, "type": "string", "location": "query"}}, "id": "adsensehost.associationsessions.start", "httpMethod": "GET", "path": "associationsessions/start", "response": {"$ref": "AssociationSession"}}, "verify": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"token": {"required": true, "type": "string", "location": "query"}}, "id": "adsensehost.associationsessions.verify", "httpMethod": "GET", "path": "associationsessions/verify", "response": {"$ref": "AssociationSession"}}}}', true)); + $this->reports = new Google_ReportsServiceResource($this, $this->serviceName, 'reports', json_decode('{"methods": {"generate": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"sort": {"repeated": true, "type": "string", "location": "query"}, "startDate": {"required": true, "type": "string", "location": "query"}, "endDate": {"required": true, "type": "string", "location": "query"}, "locale": {"type": "string", "location": "query"}, "metric": {"repeated": true, "type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "50000", "format": "uint32"}, "filter": {"repeated": true, "type": "string", "location": "query"}, "startIndex": {"location": "query", "minimum": "0", "type": "integer", "maximum": "5000", "format": "uint32"}, "dimension": {"repeated": true, "type": "string", "location": "query"}}, "id": "adsensehost.reports.generate", "httpMethod": "GET", "path": "reports", "response": {"$ref": "Report"}}}}', true)); + $this->accounts = new Google_AccountsServiceResource($this, $this->serviceName, 'accounts', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"filterAdClientId": {"repeated": true, "required": true, "type": "string", "location": "query"}}, "id": "adsensehost.accounts.list", "httpMethod": "GET", "path": "accounts", "response": {"$ref": "Accounts"}}, "get": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.get", "httpMethod": "GET", "path": "accounts/{accountId}", "response": {"$ref": "Account"}}}}', true)); + $this->accounts_adunits = new Google_AccountsAdunitsServiceResource($this, $this->serviceName, 'adunits', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "AdUnit"}, "response": {"$ref": "AdUnit"}, "httpMethod": "POST", "path": "accounts/{accountId}/adclients/{adClientId}/adunits", "id": "adsensehost.accounts.adunits.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "adUnitId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.adunits.get", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}", "response": {"$ref": "AdUnit"}}, "getAdCode": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "hostCustomChannelId": {"repeated": true, "type": "string", "location": "query"}, "adUnitId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.adunits.getAdCode", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}/adcode", "response": {"$ref": "AdCode"}}, "list": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"includeInactive": {"type": "boolean", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "uint32"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.adunits.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}/adunits", "response": {"$ref": "AdUnits"}}, "update": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "AdUnit"}, "response": {"$ref": "AdUnit"}, "httpMethod": "PUT", "path": "accounts/{accountId}/adclients/{adClientId}/adunits", "id": "adsensehost.accounts.adunits.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "adUnitId": {"required": true, "type": "string", "location": "query"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "AdUnit"}, "response": {"$ref": "AdUnit"}, "httpMethod": "PATCH", "path": "accounts/{accountId}/adclients/{adClientId}/adunits", "id": "adsensehost.accounts.adunits.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "adUnitId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.adunits.delete", "httpMethod": "DELETE", "path": "accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}", "response": {"$ref": "AdUnit"}}}}', true)); + $this->accounts_adclients = new Google_AccountsAdclientsServiceResource($this, $this->serviceName, 'adclients', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "uint32"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.adclients.list", "httpMethod": "GET", "path": "accounts/{accountId}/adclients", "response": {"$ref": "AdClients"}}, "get": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.adclients.get", "httpMethod": "GET", "path": "accounts/{accountId}/adclients/{adClientId}", "response": {"$ref": "AdClient"}}}}', true)); + $this->accounts_reports = new Google_AccountsReportsServiceResource($this, $this->serviceName, 'reports', json_decode('{"methods": {"generate": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"sort": {"repeated": true, "type": "string", "location": "query"}, "startDate": {"required": true, "type": "string", "location": "query"}, "endDate": {"required": true, "type": "string", "location": "query"}, "locale": {"type": "string", "location": "query"}, "metric": {"repeated": true, "type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "50000", "format": "uint32"}, "filter": {"repeated": true, "type": "string", "location": "query"}, "startIndex": {"location": "query", "minimum": "0", "type": "integer", "maximum": "5000", "format": "uint32"}, "dimension": {"repeated": true, "type": "string", "location": "query"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.accounts.reports.generate", "httpMethod": "GET", "path": "accounts/{accountId}/reports", "response": {"$ref": "Report"}}}}', true)); + $this->customchannels = new Google_CustomchannelsServiceResource($this, $this->serviceName, 'customchannels', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "CustomChannel"}, "response": {"$ref": "CustomChannel"}, "httpMethod": "POST", "path": "adclients/{adClientId}/customchannels", "id": "adsensehost.customchannels.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"customChannelId": {"required": true, "type": "string", "location": "path"}, "adClientId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.customchannels.get", "httpMethod": "GET", "path": "adclients/{adClientId}/customchannels/{customChannelId}", "response": {"$ref": "CustomChannel"}}, "list": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "10000", "format": "uint32"}}, "id": "adsensehost.customchannels.list", "httpMethod": "GET", "path": "adclients/{adClientId}/customchannels", "response": {"$ref": "CustomChannels"}}, "update": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"adClientId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "CustomChannel"}, "response": {"$ref": "CustomChannel"}, "httpMethod": "PUT", "path": "adclients/{adClientId}/customchannels", "id": "adsensehost.customchannels.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"customChannelId": {"required": true, "type": "string", "location": "query"}, "adClientId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "CustomChannel"}, "response": {"$ref": "CustomChannel"}, "httpMethod": "PATCH", "path": "adclients/{adClientId}/customchannels", "id": "adsensehost.customchannels.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/adsensehost"], "parameters": {"customChannelId": {"required": true, "type": "string", "location": "path"}, "adClientId": {"required": true, "type": "string", "location": "path"}}, "id": "adsensehost.customchannels.delete", "httpMethod": "DELETE", "path": "adclients/{adClientId}/customchannels/{customChannelId}", "response": {"$ref": "CustomChannel"}}}}', true)); + + } +} + +class Google_Account extends Google_Model { + public $status; + public $kind; + public $id; + public $name; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_Accounts extends Google_Model { + protected $__itemsType = 'Google_Account'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setItems($items) { + $this->assertIsArray($items, 'Google_Account', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_AdClient extends Google_Model { + public $productCode; + public $kind; + public $id; + public $arcOptIn; + public $supportsReporting; + public function setProductCode($productCode) { + $this->productCode = $productCode; + } + public function getProductCode() { + return $this->productCode; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setArcOptIn($arcOptIn) { + $this->arcOptIn = $arcOptIn; + } + public function getArcOptIn() { + return $this->arcOptIn; + } + public function setSupportsReporting($supportsReporting) { + $this->supportsReporting = $supportsReporting; + } + public function getSupportsReporting() { + return $this->supportsReporting; + } +} + +class Google_AdClients extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_AdClient'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_AdClient', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_AdCode extends Google_Model { + public $adCode; + public $kind; + public function setAdCode($adCode) { + $this->adCode = $adCode; + } + public function getAdCode() { + return $this->adCode; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_AdStyle extends Google_Model { + public $corners; + protected $__colorsType = 'Google_AdStyleColors'; + protected $__colorsDataType = ''; + public $colors; + protected $__fontType = 'Google_AdStyleFont'; + protected $__fontDataType = ''; + public $font; + public $kind; + public function setCorners($corners) { + $this->corners = $corners; + } + public function getCorners() { + return $this->corners; + } + public function setColors(Google_AdStyleColors $colors) { + $this->colors = $colors; + } + public function getColors() { + return $this->colors; + } + public function setFont(Google_AdStyleFont $font) { + $this->font = $font; + } + public function getFont() { + return $this->font; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_AdStyleColors extends Google_Model { + public $url; + public $text; + public $border; + public $background; + public $title; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setText($text) { + $this->text = $text; + } + public function getText() { + return $this->text; + } + public function setBorder($border) { + $this->border = $border; + } + public function getBorder() { + return $this->border; + } + public function setBackground($background) { + $this->background = $background; + } + public function getBackground() { + return $this->background; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } +} + +class Google_AdStyleFont extends Google_Model { + public $family; + public $size; + public function setFamily($family) { + $this->family = $family; + } + public function getFamily() { + return $this->family; + } + public function setSize($size) { + $this->size = $size; + } + public function getSize() { + return $this->size; + } +} + +class Google_AdUnit extends Google_Model { + public $status; + public $kind; + public $code; + public $name; + protected $__contentAdsSettingsType = 'Google_AdUnitContentAdsSettings'; + protected $__contentAdsSettingsDataType = ''; + public $contentAdsSettings; + public $id; + protected $__mobileContentAdsSettingsType = 'Google_AdUnitMobileContentAdsSettings'; + protected $__mobileContentAdsSettingsDataType = ''; + public $mobileContentAdsSettings; + protected $__customStyleType = 'Google_AdStyle'; + protected $__customStyleDataType = ''; + public $customStyle; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCode($code) { + $this->code = $code; + } + public function getCode() { + return $this->code; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setContentAdsSettings(Google_AdUnitContentAdsSettings $contentAdsSettings) { + $this->contentAdsSettings = $contentAdsSettings; + } + public function getContentAdsSettings() { + return $this->contentAdsSettings; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setMobileContentAdsSettings(Google_AdUnitMobileContentAdsSettings $mobileContentAdsSettings) { + $this->mobileContentAdsSettings = $mobileContentAdsSettings; + } + public function getMobileContentAdsSettings() { + return $this->mobileContentAdsSettings; + } + public function setCustomStyle(Google_AdStyle $customStyle) { + $this->customStyle = $customStyle; + } + public function getCustomStyle() { + return $this->customStyle; + } +} + +class Google_AdUnitContentAdsSettings extends Google_Model { + public $type; + protected $__backupOptionType = 'Google_AdUnitContentAdsSettingsBackupOption'; + protected $__backupOptionDataType = ''; + public $backupOption; + public $size; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setBackupOption(Google_AdUnitContentAdsSettingsBackupOption $backupOption) { + $this->backupOption = $backupOption; + } + public function getBackupOption() { + return $this->backupOption; + } + public function setSize($size) { + $this->size = $size; + } + public function getSize() { + return $this->size; + } +} + +class Google_AdUnitContentAdsSettingsBackupOption extends Google_Model { + public $color; + public $url; + public $type; + public function setColor($color) { + $this->color = $color; + } + public function getColor() { + return $this->color; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_AdUnitMobileContentAdsSettings extends Google_Model { + public $scriptingLanguage; + public $type; + public $markupLanguage; + public $size; + public function setScriptingLanguage($scriptingLanguage) { + $this->scriptingLanguage = $scriptingLanguage; + } + public function getScriptingLanguage() { + return $this->scriptingLanguage; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setMarkupLanguage($markupLanguage) { + $this->markupLanguage = $markupLanguage; + } + public function getMarkupLanguage() { + return $this->markupLanguage; + } + public function setSize($size) { + $this->size = $size; + } + public function getSize() { + return $this->size; + } +} + +class Google_AdUnits extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_AdUnit'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_AdUnit', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_AssociationSession extends Google_Model { + public $status; + public $productCodes; + public $kind; + public $userLocale; + public $websiteLocale; + public $redirectUrl; + public $websiteUrl; + public $id; + public $accountId; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setProductCodes($productCodes) { + $this->productCodes = $productCodes; + } + public function getProductCodes() { + return $this->productCodes; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUserLocale($userLocale) { + $this->userLocale = $userLocale; + } + public function getUserLocale() { + return $this->userLocale; + } + public function setWebsiteLocale($websiteLocale) { + $this->websiteLocale = $websiteLocale; + } + public function getWebsiteLocale() { + return $this->websiteLocale; + } + public function setRedirectUrl($redirectUrl) { + $this->redirectUrl = $redirectUrl; + } + public function getRedirectUrl() { + return $this->redirectUrl; + } + public function setWebsiteUrl($websiteUrl) { + $this->websiteUrl = $websiteUrl; + } + public function getWebsiteUrl() { + return $this->websiteUrl; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_CustomChannel extends Google_Model { + public $kind; + public $code; + public $id; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCode($code) { + $this->code = $code; + } + public function getCode() { + return $this->code; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_CustomChannels extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_CustomChannel'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_CustomChannel', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_Report extends Google_Model { + public $kind; + public $rows; + public $warnings; + public $totals; + protected $__headersType = 'Google_ReportHeaders'; + protected $__headersDataType = 'array'; + public $headers; + public $totalMatchedRows; + public $averages; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRows($rows) { + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setWarnings($warnings) { + $this->warnings = $warnings; + } + public function getWarnings() { + return $this->warnings; + } + public function setTotals($totals) { + $this->totals = $totals; + } + public function getTotals() { + return $this->totals; + } + public function setHeaders($headers) { + $this->assertIsArray($headers, 'Google_ReportHeaders', __METHOD__); + $this->headers = $headers; + } + public function getHeaders() { + return $this->headers; + } + public function setTotalMatchedRows($totalMatchedRows) { + $this->totalMatchedRows = $totalMatchedRows; + } + public function getTotalMatchedRows() { + return $this->totalMatchedRows; + } + public function setAverages($averages) { + $this->averages = $averages; + } + public function getAverages() { + return $this->averages; + } +} + +class Google_ReportHeaders extends Google_Model { + public $currency; + public $type; + public $name; + public function setCurrency($currency) { + $this->currency = $currency; + } + public function getCurrency() { + return $this->currency; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_UrlChannel extends Google_Model { + public $kind; + public $id; + public $urlPattern; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setUrlPattern($urlPattern) { + $this->urlPattern = $urlPattern; + } + public function getUrlPattern() { + return $this->urlPattern; + } +} + +class Google_UrlChannels extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_UrlChannel'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_UrlChannel', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} diff --git a/modules/oauth/src/google/contrib/Google_AnalyticsService.php b/modules/oauth/src/google/contrib/Google_AnalyticsService.php new file mode 100644 index 0000000..210a2e7 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_AnalyticsService.php @@ -0,0 +1,1887 @@ + + * $analyticsService = new Google_AnalyticsService(...); + * $management = $analyticsService->management; + * + */ + class Google_ManagementServiceResource extends Google_ServiceResource { + + + } + + /** + * The "webproperties" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $webproperties = $analyticsService->webproperties; + * + */ + class Google_ManagementWebpropertiesServiceResource extends Google_ServiceResource { + + + /** + * Lists web properties to which the user has access. (webproperties.list) + * + * @param string $accountId Account ID to retrieve web properties for. Can either be a specific account ID or '~all', which refers to all the accounts that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of web properties to include in this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter. + * @return Google_Webproperties + */ + public function listManagementWebproperties($accountId, $optParams = array()) { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Webproperties($data); + } else { + return $data; + } + } + } + /** + * The "segments" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $segments = $analyticsService->segments; + * + */ + class Google_ManagementSegmentsServiceResource extends Google_ServiceResource { + + + /** + * Lists advanced segments to which the user has access. (segments.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of advanced segments to include in this response. + * @opt_param int start-index An index of the first advanced segment to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter. + * @return Google_Segments + */ + public function listManagementSegments($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Segments($data); + } else { + return $data; + } + } + } + /** + * The "accounts" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $accounts = $analyticsService->accounts; + * + */ + class Google_ManagementAccountsServiceResource extends Google_ServiceResource { + + + /** + * Lists all accounts to which the user has access. (accounts.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of accounts to include in this response. + * @opt_param int start-index An index of the first account to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter. + * @return Google_Accounts + */ + public function listManagementAccounts($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Accounts($data); + } else { + return $data; + } + } + } + /** + * The "goals" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $goals = $analyticsService->goals; + * + */ + class Google_ManagementGoalsServiceResource extends Google_ServiceResource { + + + /** + * Lists goals to which the user has access. (goals.list) + * + * @param string $accountId Account ID to retrieve goals for. Can either be a specific account ID or '~all', which refers to all the accounts that user has access to. + * @param string $webPropertyId Web property ID to retrieve goals for. Can either be a specific web property ID or '~all', which refers to all the web properties that user has access to. + * @param string $profileId Profile ID to retrieve goals for. Can either be a specific profile ID or '~all', which refers to all the profiles that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of goals to include in this response. + * @opt_param int start-index An index of the first goal to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter. + * @return Google_Goals + */ + public function listManagementGoals($accountId, $webPropertyId, $profileId, $optParams = array()) { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Goals($data); + } else { + return $data; + } + } + } + /** + * The "profiles" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $profiles = $analyticsService->profiles; + * + */ + class Google_ManagementProfilesServiceResource extends Google_ServiceResource { + + + /** + * Lists profiles to which the user has access. (profiles.list) + * + * @param string $accountId Account ID for the profiles to retrieve. Can either be a specific account ID or '~all', which refers to all the accounts to which the user has access. + * @param string $webPropertyId Web property ID for the profiles to retrieve. Can either be a specific web property ID or '~all', which refers to all the web properties to which the user has access. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of profiles to include in this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter. + * @return Google_Profiles + */ + public function listManagementProfiles($accountId, $webPropertyId, $optParams = array()) { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Profiles($data); + } else { + return $data; + } + } + } + + /** + * The "data" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $data = $analyticsService->data; + * + */ + class Google_DataServiceResource extends Google_ServiceResource { + + + } + + /** + * The "mcf" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $mcf = $analyticsService->mcf; + * + */ + class Google_DataMcfServiceResource extends Google_ServiceResource { + + + /** + * Returns Analytics Multi-Channel Funnels data for a profile. (mcf.get) + * + * @param string $ids Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics profile ID. + * @param string $start_date Start date for fetching Analytics data. All requests should specify a start date formatted as YYYY-MM-DD. + * @param string $end_date End date for fetching Analytics data. All requests should specify an end date formatted as YYYY-MM-DD. + * @param string $metrics A comma-separated list of Multi-Channel Funnels metrics. E.g., 'mcf:totalConversions,mcf:totalConversionValue'. At least one metric must be specified. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of entries to include in this feed. + * @opt_param string sort A comma-separated list of dimensions or metrics that determine the sort order for the Analytics data. + * @opt_param string dimensions A comma-separated list of Multi-Channel Funnels dimensions. E.g., 'mcf:source,mcf:medium'. + * @opt_param int start-index An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter. + * @opt_param string filters A comma-separated list of dimension or metric filters to be applied to the Analytics data. + * @return Google_McfData + */ + public function get($ids, $start_date, $end_date, $metrics, $optParams = array()) { + $params = array('ids' => $ids, 'start-date' => $start_date, 'end-date' => $end_date, 'metrics' => $metrics); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_McfData($data); + } else { + return $data; + } + } + } + /** + * The "ga" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_AnalyticsService(...); + * $ga = $analyticsService->ga; + * + */ + class Google_DataGaServiceResource extends Google_ServiceResource { + + + /** + * Returns Analytics data for a profile. (ga.get) + * + * @param string $ids Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics profile ID. + * @param string $start_date Start date for fetching Analytics data. All requests should specify a start date formatted as YYYY-MM-DD. + * @param string $end_date End date for fetching Analytics data. All requests should specify an end date formatted as YYYY-MM-DD. + * @param string $metrics A comma-separated list of Analytics metrics. E.g., 'ga:visits,ga:pageviews'. At least one metric must be specified. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of entries to include in this feed. + * @opt_param string sort A comma-separated list of dimensions or metrics that determine the sort order for Analytics data. + * @opt_param string dimensions A comma-separated list of Analytics dimensions. E.g., 'ga:browser,ga:city'. + * @opt_param int start-index An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter. + * @opt_param string segment An Analytics advanced segment to be applied to data. + * @opt_param string filters A comma-separated list of dimension or metric filters to be applied to Analytics data. + * @return Google_GaData + */ + public function get($ids, $start_date, $end_date, $metrics, $optParams = array()) { + $params = array('ids' => $ids, 'start-date' => $start_date, 'end-date' => $end_date, 'metrics' => $metrics); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_GaData($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Analytics (v3). + * + *

+ * View and manage your Google Analytics data + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_AnalyticsService extends Google_Service { + public $management_webproperties; + public $management_segments; + public $management_accounts; + public $management_goals; + public $management_profiles; + public $data_mcf; + public $data_ga; + /** + * Constructs the internal representation of the Analytics service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'analytics/v3/'; + $this->version = 'v3'; + $this->serviceName = 'analytics'; + + $client->addService($this->serviceName, $this->version); + $this->management_webproperties = new Google_ManagementWebpropertiesServiceResource($this, $this->serviceName, 'webproperties', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/analytics.readonly"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "int32"}, "start-index": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "analytics.management.webproperties.list", "httpMethod": "GET", "path": "management/accounts/{accountId}/webproperties", "response": {"$ref": "Webproperties"}}}}', true)); + $this->management_segments = new Google_ManagementSegmentsServiceResource($this, $this->serviceName, 'segments', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/analytics.readonly"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "int32"}, "start-index": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}}, "response": {"$ref": "Segments"}, "httpMethod": "GET", "path": "management/segments", "id": "analytics.management.segments.list"}}}', true)); + $this->management_accounts = new Google_ManagementAccountsServiceResource($this, $this->serviceName, 'accounts', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/analytics.readonly"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "int32"}, "start-index": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}}, "response": {"$ref": "Accounts"}, "httpMethod": "GET", "path": "management/accounts", "id": "analytics.management.accounts.list"}}}', true)); + $this->management_goals = new Google_ManagementGoalsServiceResource($this, $this->serviceName, 'goals', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/analytics.readonly"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "int32"}, "profileId": {"required": true, "type": "string", "location": "path"}, "start-index": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "webPropertyId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "analytics.management.goals.list", "httpMethod": "GET", "path": "management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals", "response": {"$ref": "Goals"}}}}', true)); + $this->management_profiles = new Google_ManagementProfilesServiceResource($this, $this->serviceName, 'profiles', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/analytics.readonly"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "int32"}, "start-index": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "webPropertyId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "string", "location": "path"}}, "id": "analytics.management.profiles.list", "httpMethod": "GET", "path": "management/accounts/{accountId}/webproperties/{webPropertyId}/profiles", "response": {"$ref": "Profiles"}}}}', true)); + $this->data_mcf = new Google_DataMcfServiceResource($this, $this->serviceName, 'mcf', json_decode('{"methods": {"get": {"scopes": ["https://www.googleapis.com/auth/analytics.readonly"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "int32"}, "sort": {"type": "string", "location": "query"}, "dimensions": {"type": "string", "location": "query"}, "start-date": {"required": true, "type": "string", "location": "query"}, "start-index": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "ids": {"required": true, "type": "string", "location": "query"}, "metrics": {"required": true, "type": "string", "location": "query"}, "filters": {"type": "string", "location": "query"}, "end-date": {"required": true, "type": "string", "location": "query"}}, "id": "analytics.data.mcf.get", "httpMethod": "GET", "path": "data/mcf", "response": {"$ref": "McfData"}}}}', true)); + $this->data_ga = new Google_DataGaServiceResource($this, $this->serviceName, 'ga', json_decode('{"methods": {"get": {"scopes": ["https://www.googleapis.com/auth/analytics.readonly"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "int32"}, "sort": {"type": "string", "location": "query"}, "dimensions": {"type": "string", "location": "query"}, "start-date": {"required": true, "type": "string", "location": "query"}, "start-index": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "segment": {"type": "string", "location": "query"}, "ids": {"required": true, "type": "string", "location": "query"}, "metrics": {"required": true, "type": "string", "location": "query"}, "filters": {"type": "string", "location": "query"}, "end-date": {"required": true, "type": "string", "location": "query"}}, "id": "analytics.data.ga.get", "httpMethod": "GET", "path": "data/ga", "response": {"$ref": "GaData"}}}}', true)); + + } +} + +class Google_Account extends Google_Model { + public $kind; + public $name; + public $created; + public $updated; + protected $__childLinkType = 'Google_AccountChildLink'; + protected $__childLinkDataType = ''; + public $childLink; + public $id; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setChildLink(Google_AccountChildLink $childLink) { + $this->childLink = $childLink; + } + public function getChildLink() { + return $this->childLink; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_AccountChildLink extends Google_Model { + public $href; + public $type; + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_Accounts extends Google_Model { + public $username; + public $kind; + protected $__itemsType = 'Google_Account'; + protected $__itemsDataType = 'array'; + public $items; + public $itemsPerPage; + public $previousLink; + public $startIndex; + public $nextLink; + public $totalResults; + public function setUsername($username) { + $this->username = $username; + } + public function getUsername() { + return $this->username; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_Account) */ $items) { + $this->assertIsArray($items, 'Google_Account', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } +} + +class Google_GaData extends Google_Model { + public $kind; + public $rows; + public $containsSampledData; + public $totalResults; + public $itemsPerPage; + public $totalsForAllResults; + public $nextLink; + public $id; + protected $__queryType = 'Google_GaDataQuery'; + protected $__queryDataType = ''; + public $query; + public $previousLink; + protected $__profileInfoType = 'Google_GaDataProfileInfo'; + protected $__profileInfoDataType = ''; + public $profileInfo; + protected $__columnHeadersType = 'Google_GaDataColumnHeaders'; + protected $__columnHeadersDataType = 'array'; + public $columnHeaders; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRows(/* array(Google_string) */ $rows) { + $this->assertIsArray($rows, 'Google_string', __METHOD__); + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setContainsSampledData($containsSampledData) { + $this->containsSampledData = $containsSampledData; + } + public function getContainsSampledData() { + return $this->containsSampledData; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setTotalsForAllResults($totalsForAllResults) { + $this->totalsForAllResults = $totalsForAllResults; + } + public function getTotalsForAllResults() { + return $this->totalsForAllResults; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setQuery(Google_GaDataQuery $query) { + $this->query = $query; + } + public function getQuery() { + return $this->query; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setProfileInfo(Google_GaDataProfileInfo $profileInfo) { + $this->profileInfo = $profileInfo; + } + public function getProfileInfo() { + return $this->profileInfo; + } + public function setColumnHeaders(/* array(Google_GaDataColumnHeaders) */ $columnHeaders) { + $this->assertIsArray($columnHeaders, 'Google_GaDataColumnHeaders', __METHOD__); + $this->columnHeaders = $columnHeaders; + } + public function getColumnHeaders() { + return $this->columnHeaders; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_GaDataColumnHeaders extends Google_Model { + public $dataType; + public $columnType; + public $name; + public function setDataType($dataType) { + $this->dataType = $dataType; + } + public function getDataType() { + return $this->dataType; + } + public function setColumnType($columnType) { + $this->columnType = $columnType; + } + public function getColumnType() { + return $this->columnType; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_GaDataProfileInfo extends Google_Model { + public $webPropertyId; + public $internalWebPropertyId; + public $tableId; + public $profileId; + public $profileName; + public $accountId; + public function setWebPropertyId($webPropertyId) { + $this->webPropertyId = $webPropertyId; + } + public function getWebPropertyId() { + return $this->webPropertyId; + } + public function setInternalWebPropertyId($internalWebPropertyId) { + $this->internalWebPropertyId = $internalWebPropertyId; + } + public function getInternalWebPropertyId() { + return $this->internalWebPropertyId; + } + public function setTableId($tableId) { + $this->tableId = $tableId; + } + public function getTableId() { + return $this->tableId; + } + public function setProfileId($profileId) { + $this->profileId = $profileId; + } + public function getProfileId() { + return $this->profileId; + } + public function setProfileName($profileName) { + $this->profileName = $profileName; + } + public function getProfileName() { + return $this->profileName; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_GaDataQuery extends Google_Model { + public $max_results; + public $sort; + public $dimensions; + public $start_date; + public $start_index; + public $segment; + public $ids; + public $metrics; + public $filters; + public $end_date; + public function setMax_results($max_results) { + $this->max_results = $max_results; + } + public function getMax_results() { + return $this->max_results; + } + public function setSort(/* array(Google_string) */ $sort) { + $this->assertIsArray($sort, 'Google_string', __METHOD__); + $this->sort = $sort; + } + public function getSort() { + return $this->sort; + } + public function setDimensions($dimensions) { + $this->dimensions = $dimensions; + } + public function getDimensions() { + return $this->dimensions; + } + public function setStart_date($start_date) { + $this->start_date = $start_date; + } + public function getStart_date() { + return $this->start_date; + } + public function setStart_index($start_index) { + $this->start_index = $start_index; + } + public function getStart_index() { + return $this->start_index; + } + public function setSegment($segment) { + $this->segment = $segment; + } + public function getSegment() { + return $this->segment; + } + public function setIds($ids) { + $this->ids = $ids; + } + public function getIds() { + return $this->ids; + } + public function setMetrics(/* array(Google_string) */ $metrics) { + $this->assertIsArray($metrics, 'Google_string', __METHOD__); + $this->metrics = $metrics; + } + public function getMetrics() { + return $this->metrics; + } + public function setFilters($filters) { + $this->filters = $filters; + } + public function getFilters() { + return $this->filters; + } + public function setEnd_date($end_date) { + $this->end_date = $end_date; + } + public function getEnd_date() { + return $this->end_date; + } +} + +class Google_Goal extends Google_Model { + public $kind; + protected $__visitTimeOnSiteDetailsType = 'Google_GoalVisitTimeOnSiteDetails'; + protected $__visitTimeOnSiteDetailsDataType = ''; + public $visitTimeOnSiteDetails; + public $name; + public $created; + protected $__urlDestinationDetailsType = 'Google_GoalUrlDestinationDetails'; + protected $__urlDestinationDetailsDataType = ''; + public $urlDestinationDetails; + public $updated; + public $value; + protected $__visitNumPagesDetailsType = 'Google_GoalVisitNumPagesDetails'; + protected $__visitNumPagesDetailsDataType = ''; + public $visitNumPagesDetails; + public $internalWebPropertyId; + protected $__eventDetailsType = 'Google_GoalEventDetails'; + protected $__eventDetailsDataType = ''; + public $eventDetails; + public $webPropertyId; + public $active; + public $profileId; + protected $__parentLinkType = 'Google_GoalParentLink'; + protected $__parentLinkDataType = ''; + public $parentLink; + public $type; + public $id; + public $selfLink; + public $accountId; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setVisitTimeOnSiteDetails(Google_GoalVisitTimeOnSiteDetails $visitTimeOnSiteDetails) { + $this->visitTimeOnSiteDetails = $visitTimeOnSiteDetails; + } + public function getVisitTimeOnSiteDetails() { + return $this->visitTimeOnSiteDetails; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setUrlDestinationDetails(Google_GoalUrlDestinationDetails $urlDestinationDetails) { + $this->urlDestinationDetails = $urlDestinationDetails; + } + public function getUrlDestinationDetails() { + return $this->urlDestinationDetails; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } + public function setVisitNumPagesDetails(Google_GoalVisitNumPagesDetails $visitNumPagesDetails) { + $this->visitNumPagesDetails = $visitNumPagesDetails; + } + public function getVisitNumPagesDetails() { + return $this->visitNumPagesDetails; + } + public function setInternalWebPropertyId($internalWebPropertyId) { + $this->internalWebPropertyId = $internalWebPropertyId; + } + public function getInternalWebPropertyId() { + return $this->internalWebPropertyId; + } + public function setEventDetails(Google_GoalEventDetails $eventDetails) { + $this->eventDetails = $eventDetails; + } + public function getEventDetails() { + return $this->eventDetails; + } + public function setWebPropertyId($webPropertyId) { + $this->webPropertyId = $webPropertyId; + } + public function getWebPropertyId() { + return $this->webPropertyId; + } + public function setActive($active) { + $this->active = $active; + } + public function getActive() { + return $this->active; + } + public function setProfileId($profileId) { + $this->profileId = $profileId; + } + public function getProfileId() { + return $this->profileId; + } + public function setParentLink(Google_GoalParentLink $parentLink) { + $this->parentLink = $parentLink; + } + public function getParentLink() { + return $this->parentLink; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_GoalEventDetails extends Google_Model { + protected $__eventConditionsType = 'Google_GoalEventDetailsEventConditions'; + protected $__eventConditionsDataType = 'array'; + public $eventConditions; + public $useEventValue; + public function setEventConditions(/* array(Google_GoalEventDetailsEventConditions) */ $eventConditions) { + $this->assertIsArray($eventConditions, 'Google_GoalEventDetailsEventConditions', __METHOD__); + $this->eventConditions = $eventConditions; + } + public function getEventConditions() { + return $this->eventConditions; + } + public function setUseEventValue($useEventValue) { + $this->useEventValue = $useEventValue; + } + public function getUseEventValue() { + return $this->useEventValue; + } +} + +class Google_GoalEventDetailsEventConditions extends Google_Model { + public $type; + public $matchType; + public $expression; + public $comparisonType; + public $comparisonValue; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setMatchType($matchType) { + $this->matchType = $matchType; + } + public function getMatchType() { + return $this->matchType; + } + public function setExpression($expression) { + $this->expression = $expression; + } + public function getExpression() { + return $this->expression; + } + public function setComparisonType($comparisonType) { + $this->comparisonType = $comparisonType; + } + public function getComparisonType() { + return $this->comparisonType; + } + public function setComparisonValue($comparisonValue) { + $this->comparisonValue = $comparisonValue; + } + public function getComparisonValue() { + return $this->comparisonValue; + } +} + +class Google_GoalParentLink extends Google_Model { + public $href; + public $type; + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_GoalUrlDestinationDetails extends Google_Model { + public $url; + public $caseSensitive; + public $matchType; + protected $__stepsType = 'Google_GoalUrlDestinationDetailsSteps'; + protected $__stepsDataType = 'array'; + public $steps; + public $firstStepRequired; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setCaseSensitive($caseSensitive) { + $this->caseSensitive = $caseSensitive; + } + public function getCaseSensitive() { + return $this->caseSensitive; + } + public function setMatchType($matchType) { + $this->matchType = $matchType; + } + public function getMatchType() { + return $this->matchType; + } + public function setSteps(/* array(Google_GoalUrlDestinationDetailsSteps) */ $steps) { + $this->assertIsArray($steps, 'Google_GoalUrlDestinationDetailsSteps', __METHOD__); + $this->steps = $steps; + } + public function getSteps() { + return $this->steps; + } + public function setFirstStepRequired($firstStepRequired) { + $this->firstStepRequired = $firstStepRequired; + } + public function getFirstStepRequired() { + return $this->firstStepRequired; + } +} + +class Google_GoalUrlDestinationDetailsSteps extends Google_Model { + public $url; + public $name; + public $number; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setNumber($number) { + $this->number = $number; + } + public function getNumber() { + return $this->number; + } +} + +class Google_GoalVisitNumPagesDetails extends Google_Model { + public $comparisonType; + public $comparisonValue; + public function setComparisonType($comparisonType) { + $this->comparisonType = $comparisonType; + } + public function getComparisonType() { + return $this->comparisonType; + } + public function setComparisonValue($comparisonValue) { + $this->comparisonValue = $comparisonValue; + } + public function getComparisonValue() { + return $this->comparisonValue; + } +} + +class Google_GoalVisitTimeOnSiteDetails extends Google_Model { + public $comparisonType; + public $comparisonValue; + public function setComparisonType($comparisonType) { + $this->comparisonType = $comparisonType; + } + public function getComparisonType() { + return $this->comparisonType; + } + public function setComparisonValue($comparisonValue) { + $this->comparisonValue = $comparisonValue; + } + public function getComparisonValue() { + return $this->comparisonValue; + } +} + +class Google_Goals extends Google_Model { + public $username; + public $kind; + protected $__itemsType = 'Google_Goal'; + protected $__itemsDataType = 'array'; + public $items; + public $itemsPerPage; + public $previousLink; + public $startIndex; + public $nextLink; + public $totalResults; + public function setUsername($username) { + $this->username = $username; + } + public function getUsername() { + return $this->username; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_Goal) */ $items) { + $this->assertIsArray($items, 'Google_Goal', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } +} + +class Google_McfData extends Google_Model { + public $kind; + protected $__rowsType = 'Google_McfDataRows'; + protected $__rowsDataType = 'array'; + public $rows; + public $containsSampledData; + public $totalResults; + public $itemsPerPage; + public $totalsForAllResults; + public $nextLink; + public $id; + protected $__queryType = 'Google_McfDataQuery'; + protected $__queryDataType = ''; + public $query; + public $previousLink; + protected $__profileInfoType = 'Google_McfDataProfileInfo'; + protected $__profileInfoDataType = ''; + public $profileInfo; + protected $__columnHeadersType = 'Google_McfDataColumnHeaders'; + protected $__columnHeadersDataType = 'array'; + public $columnHeaders; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRows(/* array(Google_McfDataRows) */ $rows) { + $this->assertIsArray($rows, 'Google_McfDataRows', __METHOD__); + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setContainsSampledData($containsSampledData) { + $this->containsSampledData = $containsSampledData; + } + public function getContainsSampledData() { + return $this->containsSampledData; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setTotalsForAllResults($totalsForAllResults) { + $this->totalsForAllResults = $totalsForAllResults; + } + public function getTotalsForAllResults() { + return $this->totalsForAllResults; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setQuery(Google_McfDataQuery $query) { + $this->query = $query; + } + public function getQuery() { + return $this->query; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setProfileInfo(Google_McfDataProfileInfo $profileInfo) { + $this->profileInfo = $profileInfo; + } + public function getProfileInfo() { + return $this->profileInfo; + } + public function setColumnHeaders(/* array(Google_McfDataColumnHeaders) */ $columnHeaders) { + $this->assertIsArray($columnHeaders, 'Google_McfDataColumnHeaders', __METHOD__); + $this->columnHeaders = $columnHeaders; + } + public function getColumnHeaders() { + return $this->columnHeaders; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_McfDataColumnHeaders extends Google_Model { + public $dataType; + public $columnType; + public $name; + public function setDataType($dataType) { + $this->dataType = $dataType; + } + public function getDataType() { + return $this->dataType; + } + public function setColumnType($columnType) { + $this->columnType = $columnType; + } + public function getColumnType() { + return $this->columnType; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_McfDataProfileInfo extends Google_Model { + public $webPropertyId; + public $internalWebPropertyId; + public $tableId; + public $profileId; + public $profileName; + public $accountId; + public function setWebPropertyId($webPropertyId) { + $this->webPropertyId = $webPropertyId; + } + public function getWebPropertyId() { + return $this->webPropertyId; + } + public function setInternalWebPropertyId($internalWebPropertyId) { + $this->internalWebPropertyId = $internalWebPropertyId; + } + public function getInternalWebPropertyId() { + return $this->internalWebPropertyId; + } + public function setTableId($tableId) { + $this->tableId = $tableId; + } + public function getTableId() { + return $this->tableId; + } + public function setProfileId($profileId) { + $this->profileId = $profileId; + } + public function getProfileId() { + return $this->profileId; + } + public function setProfileName($profileName) { + $this->profileName = $profileName; + } + public function getProfileName() { + return $this->profileName; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_McfDataQuery extends Google_Model { + public $max_results; + public $sort; + public $dimensions; + public $start_date; + public $start_index; + public $segment; + public $ids; + public $metrics; + public $filters; + public $end_date; + public function setMax_results($max_results) { + $this->max_results = $max_results; + } + public function getMax_results() { + return $this->max_results; + } + public function setSort(/* array(Google_string) */ $sort) { + $this->assertIsArray($sort, 'Google_string', __METHOD__); + $this->sort = $sort; + } + public function getSort() { + return $this->sort; + } + public function setDimensions($dimensions) { + $this->dimensions = $dimensions; + } + public function getDimensions() { + return $this->dimensions; + } + public function setStart_date($start_date) { + $this->start_date = $start_date; + } + public function getStart_date() { + return $this->start_date; + } + public function setStart_index($start_index) { + $this->start_index = $start_index; + } + public function getStart_index() { + return $this->start_index; + } + public function setSegment($segment) { + $this->segment = $segment; + } + public function getSegment() { + return $this->segment; + } + public function setIds($ids) { + $this->ids = $ids; + } + public function getIds() { + return $this->ids; + } + public function setMetrics(/* array(Google_string) */ $metrics) { + $this->assertIsArray($metrics, 'Google_string', __METHOD__); + $this->metrics = $metrics; + } + public function getMetrics() { + return $this->metrics; + } + public function setFilters($filters) { + $this->filters = $filters; + } + public function getFilters() { + return $this->filters; + } + public function setEnd_date($end_date) { + $this->end_date = $end_date; + } + public function getEnd_date() { + return $this->end_date; + } +} + +class Google_McfDataRows extends Google_Model { + public $primitiveValue; + protected $__conversionPathValueType = 'Google_McfDataRowsConversionPathValue'; + protected $__conversionPathValueDataType = 'array'; + public $conversionPathValue; + public function setPrimitiveValue($primitiveValue) { + $this->primitiveValue = $primitiveValue; + } + public function getPrimitiveValue() { + return $this->primitiveValue; + } + public function setConversionPathValue(/* array(Google_McfDataRowsConversionPathValue) */ $conversionPathValue) { + $this->assertIsArray($conversionPathValue, 'Google_McfDataRowsConversionPathValue', __METHOD__); + $this->conversionPathValue = $conversionPathValue; + } + public function getConversionPathValue() { + return $this->conversionPathValue; + } +} + +class Google_McfDataRowsConversionPathValue extends Google_Model { + public $nodeValue; + public $interactionType; + public function setNodeValue($nodeValue) { + $this->nodeValue = $nodeValue; + } + public function getNodeValue() { + return $this->nodeValue; + } + public function setInteractionType($interactionType) { + $this->interactionType = $interactionType; + } + public function getInteractionType() { + return $this->interactionType; + } +} + +class Google_Profile extends Google_Model { + public $defaultPage; + public $kind; + public $excludeQueryParameters; + public $name; + public $created; + public $webPropertyId; + public $updated; + public $siteSearchQueryParameters; + public $currency; + public $internalWebPropertyId; + protected $__childLinkType = 'Google_ProfileChildLink'; + protected $__childLinkDataType = ''; + public $childLink; + public $timezone; + public $siteSearchCategoryParameters; + protected $__parentLinkType = 'Google_ProfileParentLink'; + protected $__parentLinkDataType = ''; + public $parentLink; + public $id; + public $selfLink; + public $accountId; + public function setDefaultPage($defaultPage) { + $this->defaultPage = $defaultPage; + } + public function getDefaultPage() { + return $this->defaultPage; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setExcludeQueryParameters($excludeQueryParameters) { + $this->excludeQueryParameters = $excludeQueryParameters; + } + public function getExcludeQueryParameters() { + return $this->excludeQueryParameters; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setWebPropertyId($webPropertyId) { + $this->webPropertyId = $webPropertyId; + } + public function getWebPropertyId() { + return $this->webPropertyId; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setSiteSearchQueryParameters($siteSearchQueryParameters) { + $this->siteSearchQueryParameters = $siteSearchQueryParameters; + } + public function getSiteSearchQueryParameters() { + return $this->siteSearchQueryParameters; + } + public function setCurrency($currency) { + $this->currency = $currency; + } + public function getCurrency() { + return $this->currency; + } + public function setInternalWebPropertyId($internalWebPropertyId) { + $this->internalWebPropertyId = $internalWebPropertyId; + } + public function getInternalWebPropertyId() { + return $this->internalWebPropertyId; + } + public function setChildLink(Google_ProfileChildLink $childLink) { + $this->childLink = $childLink; + } + public function getChildLink() { + return $this->childLink; + } + public function setTimezone($timezone) { + $this->timezone = $timezone; + } + public function getTimezone() { + return $this->timezone; + } + public function setSiteSearchCategoryParameters($siteSearchCategoryParameters) { + $this->siteSearchCategoryParameters = $siteSearchCategoryParameters; + } + public function getSiteSearchCategoryParameters() { + return $this->siteSearchCategoryParameters; + } + public function setParentLink(Google_ProfileParentLink $parentLink) { + $this->parentLink = $parentLink; + } + public function getParentLink() { + return $this->parentLink; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_ProfileChildLink extends Google_Model { + public $href; + public $type; + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_ProfileParentLink extends Google_Model { + public $href; + public $type; + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_Profiles extends Google_Model { + public $username; + public $kind; + protected $__itemsType = 'Google_Profile'; + protected $__itemsDataType = 'array'; + public $items; + public $itemsPerPage; + public $previousLink; + public $startIndex; + public $nextLink; + public $totalResults; + public function setUsername($username) { + $this->username = $username; + } + public function getUsername() { + return $this->username; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_Profile) */ $items) { + $this->assertIsArray($items, 'Google_Profile', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } +} + +class Google_Segment extends Google_Model { + public $definition; + public $kind; + public $segmentId; + public $created; + public $updated; + public $id; + public $selfLink; + public $name; + public function setDefinition($definition) { + $this->definition = $definition; + } + public function getDefinition() { + return $this->definition; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setSegmentId($segmentId) { + $this->segmentId = $segmentId; + } + public function getSegmentId() { + return $this->segmentId; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_Segments extends Google_Model { + public $username; + public $kind; + protected $__itemsType = 'Google_Segment'; + protected $__itemsDataType = 'array'; + public $items; + public $itemsPerPage; + public $previousLink; + public $startIndex; + public $nextLink; + public $totalResults; + public function setUsername($username) { + $this->username = $username; + } + public function getUsername() { + return $this->username; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_Segment) */ $items) { + $this->assertIsArray($items, 'Google_Segment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } +} + +class Google_Webproperties extends Google_Model { + public $username; + public $kind; + protected $__itemsType = 'Google_Webproperty'; + protected $__itemsDataType = 'array'; + public $items; + public $itemsPerPage; + public $previousLink; + public $startIndex; + public $nextLink; + public $totalResults; + public function setUsername($username) { + $this->username = $username; + } + public function getUsername() { + return $this->username; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_Webproperty) */ $items) { + $this->assertIsArray($items, 'Google_Webproperty', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } +} + +class Google_Webproperty extends Google_Model { + public $kind; + public $name; + public $created; + public $updated; + public $websiteUrl; + public $internalWebPropertyId; + protected $__childLinkType = 'Google_WebpropertyChildLink'; + protected $__childLinkDataType = ''; + public $childLink; + protected $__parentLinkType = 'Google_WebpropertyParentLink'; + protected $__parentLinkDataType = ''; + public $parentLink; + public $id; + public $selfLink; + public $accountId; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setWebsiteUrl($websiteUrl) { + $this->websiteUrl = $websiteUrl; + } + public function getWebsiteUrl() { + return $this->websiteUrl; + } + public function setInternalWebPropertyId($internalWebPropertyId) { + $this->internalWebPropertyId = $internalWebPropertyId; + } + public function getInternalWebPropertyId() { + return $this->internalWebPropertyId; + } + public function setChildLink(Google_WebpropertyChildLink $childLink) { + $this->childLink = $childLink; + } + public function getChildLink() { + return $this->childLink; + } + public function setParentLink(Google_WebpropertyParentLink $parentLink) { + $this->parentLink = $parentLink; + } + public function getParentLink() { + return $this->parentLink; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_WebpropertyChildLink extends Google_Model { + public $href; + public $type; + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_WebpropertyParentLink extends Google_Model { + public $href; + public $type; + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} diff --git a/modules/oauth/src/google/contrib/Google_BigqueryService.php b/modules/oauth/src/google/contrib/Google_BigqueryService.php new file mode 100644 index 0000000..2568297 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_BigqueryService.php @@ -0,0 +1,1821 @@ + + * $bigqueryService = new Google_BigqueryService(...); + * $tables = $bigqueryService->tables; + * + */ + class Google_TablesServiceResource extends Google_ServiceResource { + + + /** + * Creates a new, empty table in the dataset. (tables.insert) + * + * @param string $projectId Project ID of the new table + * @param string $datasetId Dataset ID of the new table + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Table + */ + public function insert($projectId, $datasetId, Google_Table $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Gets the specified table resource by table ID. This method does not return the data in the table, + * it only returns the table resource, which describes the structure of this table. (tables.get) + * + * @param string $projectId Project ID of the requested table + * @param string $datasetId Dataset ID of the requested table + * @param string $tableId Table ID of the requested table + * @param array $optParams Optional parameters. + * @return Google_Table + */ + public function get($projectId, $datasetId, $tableId, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Lists all tables in the specified dataset. (tables.list) + * + * @param string $projectId Project ID of the tables to list + * @param string $datasetId Dataset ID of the tables to list + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Page token, returned by a previous call, to request the next page of results + * @opt_param string maxResults Maximum number of results to return + * @return Google_TableList + */ + public function listTables($projectId, $datasetId, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TableList($data); + } else { + return $data; + } + } + /** + * Updates information in an existing table, specified by tableId. (tables.update) + * + * @param string $projectId Project ID of the table to update + * @param string $datasetId Dataset ID of the table to update + * @param string $tableId Table ID of the table to update + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Table + */ + public function update($projectId, $datasetId, $tableId, Google_Table $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Updates information in an existing table, specified by tableId. This method supports patch + * semantics. (tables.patch) + * + * @param string $projectId Project ID of the table to update + * @param string $datasetId Dataset ID of the table to update + * @param string $tableId Table ID of the table to update + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Table + */ + public function patch($projectId, $datasetId, $tableId, Google_Table $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Deletes the table specified by tableId from the dataset. If the table contains data, all the data + * will be deleted. (tables.delete) + * + * @param string $projectId Project ID of the table to delete + * @param string $datasetId Dataset ID of the table to delete + * @param string $tableId Table ID of the table to delete + * @param array $optParams Optional parameters. + */ + public function delete($projectId, $datasetId, $tableId, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "datasets" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_BigqueryService(...); + * $datasets = $bigqueryService->datasets; + * + */ + class Google_DatasetsServiceResource extends Google_ServiceResource { + + + /** + * Creates a new empty dataset. (datasets.insert) + * + * @param string $projectId Project ID of the new dataset + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Dataset + */ + public function insert($projectId, Google_Dataset $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Dataset($data); + } else { + return $data; + } + } + /** + * Returns the dataset specified by datasetID. (datasets.get) + * + * @param string $projectId Project ID of the requested dataset + * @param string $datasetId Dataset ID of the requested dataset + * @param array $optParams Optional parameters. + * @return Google_Dataset + */ + public function get($projectId, $datasetId, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Dataset($data); + } else { + return $data; + } + } + /** + * Lists all the datasets in the specified project to which the caller has read access; however, a + * project owner can list (but not necessarily get) all datasets in his project. (datasets.list) + * + * @param string $projectId Project ID of the datasets to be listed + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Page token, returned by a previous call, to request the next page of results + * @opt_param string maxResults The maximum number of results to return + * @return Google_DatasetList + */ + public function listDatasets($projectId, $optParams = array()) { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_DatasetList($data); + } else { + return $data; + } + } + /** + * Updates information in an existing dataset, specified by datasetId. Properties not included in + * the submitted resource will not be changed. If you include the access property without any values + * assigned, the request will fail as you must specify at least one owner for a dataset. + * (datasets.update) + * + * @param string $projectId Project ID of the dataset being updated + * @param string $datasetId Dataset ID of the dataset being updated + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Dataset + */ + public function update($projectId, $datasetId, Google_Dataset $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Dataset($data); + } else { + return $data; + } + } + /** + * Updates information in an existing dataset, specified by datasetId. Properties not included in + * the submitted resource will not be changed. If you include the access property without any values + * assigned, the request will fail as you must specify at least one owner for a dataset. This method + * supports patch semantics. (datasets.patch) + * + * @param string $projectId Project ID of the dataset being updated + * @param string $datasetId Dataset ID of the dataset being updated + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Dataset + */ + public function patch($projectId, $datasetId, Google_Dataset $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Dataset($data); + } else { + return $data; + } + } + /** + * Deletes the dataset specified by datasetId value. Before you can delete a dataset, you must + * delete all its tables, either manually or by specifying deleteContents. Immediately after + * deletion, you can create another dataset with the same name. (datasets.delete) + * + * @param string $projectId Project ID of the dataset being deleted + * @param string $datasetId Dataset ID of dataset being deleted + * @param array $optParams Optional parameters. + * + * @opt_param bool deleteContents If True, delete all the tables in the dataset. If False and the dataset contains tables, the request will fail. Default is False + */ + public function delete($projectId, $datasetId, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "jobs" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_BigqueryService(...); + * $jobs = $bigqueryService->jobs; + * + */ + class Google_JobsServiceResource extends Google_ServiceResource { + + + /** + * Starts a new asynchronous job. (jobs.insert) + * + * @param string $projectId Project ID of the project that will be billed for the job + * @param Google_Job $postBody + * @param array $optParams Optional parameters. + * @return Google_Job + */ + public function insert($projectId, Google_Job $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Job($data); + } else { + return $data; + } + } + /** + * Runs a BigQuery SQL query synchronously and returns query results if the query completes within a + * specified timeout. (jobs.query) + * + * @param string $projectId Project ID of the project billed for the query + * @param Google_QueryRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_QueryResponse + */ + public function query($projectId, Google_QueryRequest $postBody, $optParams = array()) { + $params = array('projectId' => $projectId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('query', array($params)); + if ($this->useObjects()) { + return new Google_QueryResponse($data); + } else { + return $data; + } + } + /** + * Lists all the Jobs in the specified project that were started by the user. (jobs.list) + * + * @param string $projectId Project ID of the jobs to list + * @param array $optParams Optional parameters. + * + * @opt_param string projection Restrict information returned to a set of selected fields + * @opt_param string stateFilter Filter for job state + * @opt_param bool allUsers Whether to display jobs owned by all users in the project. Default false + * @opt_param string maxResults Maximum number of results to return + * @opt_param string pageToken Page token, returned by a previous call, to request the next page of results + * @return Google_JobList + */ + public function listJobs($projectId, $optParams = array()) { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_JobList($data); + } else { + return $data; + } + } + /** + * Retrieves the results of a query job. (jobs.getQueryResults) + * + * @param string $projectId Project ID of the query job + * @param string $jobId Job ID of the query job + * @param array $optParams Optional parameters. + * + * @opt_param string timeoutMs How long to wait for the query to complete, in milliseconds, before returning. Default is to return immediately. If the timeout passes before the job completes, the request will fail with a TIMEOUT error + * @opt_param string startIndex Zero-based index of the starting row + * @opt_param string maxResults Maximum number of results to read + * @return Google_GetQueryResultsResponse + */ + public function getQueryResults($projectId, $jobId, $optParams = array()) { + $params = array('projectId' => $projectId, 'jobId' => $jobId); + $params = array_merge($params, $optParams); + $data = $this->__call('getQueryResults', array($params)); + if ($this->useObjects()) { + return new Google_GetQueryResultsResponse($data); + } else { + return $data; + } + } + /** + * Retrieves the specified job by ID. (jobs.get) + * + * @param string $projectId Project ID of the requested job + * @param string $jobId Job ID of the requested job + * @param array $optParams Optional parameters. + * @return Google_Job + */ + public function get($projectId, $jobId, $optParams = array()) { + $params = array('projectId' => $projectId, 'jobId' => $jobId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Job($data); + } else { + return $data; + } + } + } + + /** + * The "tabledata" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_BigqueryService(...); + * $tabledata = $bigqueryService->tabledata; + * + */ + class Google_TabledataServiceResource extends Google_ServiceResource { + + + /** + * Retrieves table data from a specified set of rows. (tabledata.list) + * + * @param string $projectId Project ID of the table to read + * @param string $datasetId Dataset ID of the table to read + * @param string $tableId Table ID of the table to read + * @param array $optParams Optional parameters. + * + * @opt_param string maxResults Maximum number of results to return + * @opt_param string pageToken Page token, returned by a previous call, identifying the result set + * @opt_param string startIndex Zero-based index of the starting row to read + * @return Google_TableDataList + */ + public function listTabledata($projectId, $datasetId, $tableId, $optParams = array()) { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TableDataList($data); + } else { + return $data; + } + } + } + + /** + * The "projects" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_BigqueryService(...); + * $projects = $bigqueryService->projects; + * + */ + class Google_ProjectsServiceResource extends Google_ServiceResource { + + + /** + * Lists the projects to which you have at least read access. (projects.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Page token, returned by a previous call, to request the next page of results + * @opt_param string maxResults Maximum number of results to return + * @return Google_ProjectList + */ + public function listProjects($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ProjectList($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Bigquery (v2). + * + *

+ * A data platform for customers to create, manage, share and query data. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_BigqueryService extends Google_Service { + public $tables; + public $datasets; + public $jobs; + public $tabledata; + public $projects; + /** + * Constructs the internal representation of the Bigquery service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'bigquery/v2/'; + $this->version = 'v2'; + $this->serviceName = 'bigquery'; + + $client->addService($this->serviceName, $this->version); + $this->tables = new Google_TablesServiceResource($this, $this->serviceName, 'tables', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Table"}, "response": {"$ref": "Table"}, "httpMethod": "POST", "path": "projects/{projectId}/datasets/{datasetId}/tables", "id": "bigquery.tables.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "tableId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "id": "bigquery.tables.get", "httpMethod": "GET", "path": "projects/{projectId}/datasets/{datasetId}/tables/{tableId}", "response": {"$ref": "Table"}}, "list": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "datasetId": {"required": true, "type": "string", "location": "path"}, "projectId": {"required": true, "type": "string", "location": "path"}}, "id": "bigquery.tables.list", "httpMethod": "GET", "path": "projects/{projectId}/datasets/{datasetId}/tables", "response": {"$ref": "TableList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "tableId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Table"}, "response": {"$ref": "Table"}, "httpMethod": "PUT", "path": "projects/{projectId}/datasets/{datasetId}/tables/{tableId}", "id": "bigquery.tables.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "tableId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Table"}, "response": {"$ref": "Table"}, "httpMethod": "PATCH", "path": "projects/{projectId}/datasets/{datasetId}/tables/{tableId}", "id": "bigquery.tables.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "path": "projects/{projectId}/datasets/{datasetId}/tables/{tableId}", "id": "bigquery.tables.delete", "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "tableId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->datasets = new Google_DatasetsServiceResource($this, $this->serviceName, 'datasets', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Dataset"}, "response": {"$ref": "Dataset"}, "httpMethod": "POST", "path": "projects/{projectId}/datasets", "id": "bigquery.datasets.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "id": "bigquery.datasets.get", "httpMethod": "GET", "path": "projects/{projectId}/datasets/{datasetId}", "response": {"$ref": "Dataset"}}, "list": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "projectId": {"required": true, "type": "string", "location": "path"}}, "id": "bigquery.datasets.list", "httpMethod": "GET", "path": "projects/{projectId}/datasets", "response": {"$ref": "DatasetList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Dataset"}, "response": {"$ref": "Dataset"}, "httpMethod": "PUT", "path": "projects/{projectId}/datasets/{datasetId}", "id": "bigquery.datasets.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Dataset"}, "response": {"$ref": "Dataset"}, "httpMethod": "PATCH", "path": "projects/{projectId}/datasets/{datasetId}", "id": "bigquery.datasets.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "path": "projects/{projectId}/datasets/{datasetId}", "id": "bigquery.datasets.delete", "parameters": {"deleteContents": {"type": "boolean", "location": "query"}, "datasetId": {"required": true, "type": "string", "location": "path"}, "projectId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->jobs = new Google_JobsServiceResource($this, $this->serviceName, 'jobs', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}}, "supportsMediaUpload": true, "request": {"$ref": "Job"}, "mediaUpload": {"protocols": {"simple": {"path": "/upload/bigquery/v2/projects/{projectId}/jobs", "multipart": true}, "resumable": {"path": "/resumable/upload/bigquery/v2/projects/{projectId}/jobs", "multipart": true}}, "accept": ["application/octet-stream"]}, "response": {"$ref": "Job"}, "httpMethod": "POST", "path": "projects/{projectId}/jobs", "id": "bigquery.jobs.insert"}, "query": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "QueryRequest"}, "response": {"$ref": "QueryResponse"}, "httpMethod": "POST", "path": "projects/{projectId}/queries", "id": "bigquery.jobs.query"}, "list": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projection": {"enum": ["full", "minimal"], "type": "string", "location": "query"}, "stateFilter": {"repeated": true, "enum": ["done", "pending", "running"], "type": "string", "location": "query"}, "projectId": {"required": true, "type": "string", "location": "path"}, "allUsers": {"type": "boolean", "location": "query"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "pageToken": {"type": "string", "location": "query"}}, "id": "bigquery.jobs.list", "httpMethod": "GET", "path": "projects/{projectId}/jobs", "response": {"$ref": "JobList"}}, "getQueryResults": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"timeoutMs": {"type": "integer", "location": "query", "format": "uint32"}, "projectId": {"required": true, "type": "string", "location": "path"}, "startIndex": {"type": "string", "location": "query", "format": "uint64"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "jobId": {"required": true, "type": "string", "location": "path"}}, "id": "bigquery.jobs.getQueryResults", "httpMethod": "GET", "path": "projects/{projectId}/queries/{jobId}", "response": {"$ref": "GetQueryResultsResponse"}}, "get": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "jobId": {"required": true, "type": "string", "location": "path"}}, "id": "bigquery.jobs.get", "httpMethod": "GET", "path": "projects/{projectId}/jobs/{jobId}", "response": {"$ref": "Job"}}}}', true)); + $this->tabledata = new Google_TabledataServiceResource($this, $this->serviceName, 'tabledata', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"projectId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "pageToken": {"type": "string", "location": "query"}, "startIndex": {"type": "string", "location": "query", "format": "uint64"}, "tableId": {"required": true, "type": "string", "location": "path"}, "datasetId": {"required": true, "type": "string", "location": "path"}}, "id": "bigquery.tabledata.list", "httpMethod": "GET", "path": "projects/{projectId}/datasets/{datasetId}/tables/{tableId}/data", "response": {"$ref": "TableDataList"}}}}', true)); + $this->projects = new Google_ProjectsServiceResource($this, $this->serviceName, 'projects', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/bigquery"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "response": {"$ref": "ProjectList"}, "httpMethod": "GET", "path": "projects", "id": "bigquery.projects.list"}}}', true)); + + } +} + +class Google_Dataset extends Google_Model { + public $kind; + public $description; + protected $__datasetReferenceType = 'Google_DatasetReference'; + protected $__datasetReferenceDataType = ''; + public $datasetReference; + public $creationTime; + protected $__accessType = 'Google_DatasetAccess'; + protected $__accessDataType = 'array'; + public $access; + public $etag; + public $friendlyName; + public $lastModifiedTime; + public $id; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setDatasetReference(Google_DatasetReference $datasetReference) { + $this->datasetReference = $datasetReference; + } + public function getDatasetReference() { + return $this->datasetReference; + } + public function setCreationTime($creationTime) { + $this->creationTime = $creationTime; + } + public function getCreationTime() { + return $this->creationTime; + } + public function setAccess(/* array(Google_DatasetAccess) */ $access) { + $this->assertIsArray($access, 'Google_DatasetAccess', __METHOD__); + $this->access = $access; + } + public function getAccess() { + return $this->access; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setFriendlyName($friendlyName) { + $this->friendlyName = $friendlyName; + } + public function getFriendlyName() { + return $this->friendlyName; + } + public function setLastModifiedTime($lastModifiedTime) { + $this->lastModifiedTime = $lastModifiedTime; + } + public function getLastModifiedTime() { + return $this->lastModifiedTime; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_DatasetAccess extends Google_Model { + public $specialGroup; + public $domain; + public $role; + public $groupByEmail; + public $userByEmail; + public function setSpecialGroup($specialGroup) { + $this->specialGroup = $specialGroup; + } + public function getSpecialGroup() { + return $this->specialGroup; + } + public function setDomain($domain) { + $this->domain = $domain; + } + public function getDomain() { + return $this->domain; + } + public function setRole($role) { + $this->role = $role; + } + public function getRole() { + return $this->role; + } + public function setGroupByEmail($groupByEmail) { + $this->groupByEmail = $groupByEmail; + } + public function getGroupByEmail() { + return $this->groupByEmail; + } + public function setUserByEmail($userByEmail) { + $this->userByEmail = $userByEmail; + } + public function getUserByEmail() { + return $this->userByEmail; + } +} + +class Google_DatasetList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__datasetsType = 'Google_DatasetListDatasets'; + protected $__datasetsDataType = 'array'; + public $datasets; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDatasets(/* array(Google_DatasetListDatasets) */ $datasets) { + $this->assertIsArray($datasets, 'Google_DatasetListDatasets', __METHOD__); + $this->datasets = $datasets; + } + public function getDatasets() { + return $this->datasets; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_DatasetListDatasets extends Google_Model { + public $friendlyName; + public $kind; + public $id; + protected $__datasetReferenceType = 'Google_DatasetReference'; + protected $__datasetReferenceDataType = ''; + public $datasetReference; + public function setFriendlyName($friendlyName) { + $this->friendlyName = $friendlyName; + } + public function getFriendlyName() { + return $this->friendlyName; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setDatasetReference(Google_DatasetReference $datasetReference) { + $this->datasetReference = $datasetReference; + } + public function getDatasetReference() { + return $this->datasetReference; + } +} + +class Google_DatasetReference extends Google_Model { + public $projectId; + public $datasetId; + public function setProjectId($projectId) { + $this->projectId = $projectId; + } + public function getProjectId() { + return $this->projectId; + } + public function setDatasetId($datasetId) { + $this->datasetId = $datasetId; + } + public function getDatasetId() { + return $this->datasetId; + } +} + +class Google_ErrorProto extends Google_Model { + public $debugInfo; + public $message; + public $reason; + public $location; + public function setDebugInfo($debugInfo) { + $this->debugInfo = $debugInfo; + } + public function getDebugInfo() { + return $this->debugInfo; + } + public function setMessage($message) { + $this->message = $message; + } + public function getMessage() { + return $this->message; + } + public function setReason($reason) { + $this->reason = $reason; + } + public function getReason() { + return $this->reason; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } +} + +class Google_GetQueryResultsResponse extends Google_Model { + public $kind; + protected $__rowsType = 'Google_TableRow'; + protected $__rowsDataType = 'array'; + public $rows; + protected $__jobReferenceType = 'Google_JobReference'; + protected $__jobReferenceDataType = ''; + public $jobReference; + public $jobComplete; + public $totalRows; + public $etag; + protected $__schemaType = 'Google_TableSchema'; + protected $__schemaDataType = ''; + public $schema; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRows(/* array(Google_TableRow) */ $rows) { + $this->assertIsArray($rows, 'Google_TableRow', __METHOD__); + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setJobReference(Google_JobReference $jobReference) { + $this->jobReference = $jobReference; + } + public function getJobReference() { + return $this->jobReference; + } + public function setJobComplete($jobComplete) { + $this->jobComplete = $jobComplete; + } + public function getJobComplete() { + return $this->jobComplete; + } + public function setTotalRows($totalRows) { + $this->totalRows = $totalRows; + } + public function getTotalRows() { + return $this->totalRows; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSchema(Google_TableSchema $schema) { + $this->schema = $schema; + } + public function getSchema() { + return $this->schema; + } +} + +class Google_Job extends Google_Model { + protected $__statusType = 'Google_JobStatus'; + protected $__statusDataType = ''; + public $status; + public $kind; + protected $__statisticsType = 'Google_JobStatistics'; + protected $__statisticsDataType = ''; + public $statistics; + protected $__jobReferenceType = 'Google_JobReference'; + protected $__jobReferenceDataType = ''; + public $jobReference; + public $etag; + protected $__configurationType = 'Google_JobConfiguration'; + protected $__configurationDataType = ''; + public $configuration; + public $id; + public $selfLink; + public function setStatus(Google_JobStatus $status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setStatistics(Google_JobStatistics $statistics) { + $this->statistics = $statistics; + } + public function getStatistics() { + return $this->statistics; + } + public function setJobReference(Google_JobReference $jobReference) { + $this->jobReference = $jobReference; + } + public function getJobReference() { + return $this->jobReference; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setConfiguration(Google_JobConfiguration $configuration) { + $this->configuration = $configuration; + } + public function getConfiguration() { + return $this->configuration; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_JobConfiguration extends Google_Model { + protected $__loadType = 'Google_JobConfigurationLoad'; + protected $__loadDataType = ''; + public $load; + protected $__linkType = 'Google_JobConfigurationLink'; + protected $__linkDataType = ''; + public $link; + protected $__queryType = 'Google_JobConfigurationQuery'; + protected $__queryDataType = ''; + public $query; + protected $__copyType = 'Google_JobConfigurationTableCopy'; + protected $__copyDataType = ''; + public $copy; + protected $__extractType = 'Google_JobConfigurationExtract'; + protected $__extractDataType = ''; + public $extract; + public $properties; + public function setLoad(Google_JobConfigurationLoad $load) { + $this->load = $load; + } + public function getLoad() { + return $this->load; + } + public function setLink(Google_JobConfigurationLink $link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setQuery(Google_JobConfigurationQuery $query) { + $this->query = $query; + } + public function getQuery() { + return $this->query; + } + public function setCopy(Google_JobConfigurationTableCopy $copy) { + $this->copy = $copy; + } + public function getCopy() { + return $this->copy; + } + public function setExtract(Google_JobConfigurationExtract $extract) { + $this->extract = $extract; + } + public function getExtract() { + return $this->extract; + } + public function setProperties($properties) { + $this->properties = $properties; + } + public function getProperties() { + return $this->properties; + } +} + +class Google_JobConfigurationExtract extends Google_Model { + public $destinationUri; + public $fieldDelimiter; + protected $__sourceTableType = 'Google_TableReference'; + protected $__sourceTableDataType = ''; + public $sourceTable; + public $printHeader; + public function setDestinationUri($destinationUri) { + $this->destinationUri = $destinationUri; + } + public function getDestinationUri() { + return $this->destinationUri; + } + public function setFieldDelimiter($fieldDelimiter) { + $this->fieldDelimiter = $fieldDelimiter; + } + public function getFieldDelimiter() { + return $this->fieldDelimiter; + } + public function setSourceTable(Google_TableReference $sourceTable) { + $this->sourceTable = $sourceTable; + } + public function getSourceTable() { + return $this->sourceTable; + } + public function setPrintHeader($printHeader) { + $this->printHeader = $printHeader; + } + public function getPrintHeader() { + return $this->printHeader; + } +} + +class Google_JobConfigurationLink extends Google_Model { + public $createDisposition; + public $writeDisposition; + protected $__destinationTableType = 'Google_TableReference'; + protected $__destinationTableDataType = ''; + public $destinationTable; + public $sourceUri; + public function setCreateDisposition($createDisposition) { + $this->createDisposition = $createDisposition; + } + public function getCreateDisposition() { + return $this->createDisposition; + } + public function setWriteDisposition($writeDisposition) { + $this->writeDisposition = $writeDisposition; + } + public function getWriteDisposition() { + return $this->writeDisposition; + } + public function setDestinationTable(Google_TableReference $destinationTable) { + $this->destinationTable = $destinationTable; + } + public function getDestinationTable() { + return $this->destinationTable; + } + public function setSourceUri(/* array(Google_string) */ $sourceUri) { + $this->assertIsArray($sourceUri, 'Google_string', __METHOD__); + $this->sourceUri = $sourceUri; + } + public function getSourceUri() { + return $this->sourceUri; + } +} + +class Google_JobConfigurationLoad extends Google_Model { + public $encoding; + public $fieldDelimiter; + protected $__destinationTableType = 'Google_TableReference'; + protected $__destinationTableDataType = ''; + public $destinationTable; + public $writeDisposition; + public $maxBadRecords; + public $skipLeadingRows; + public $sourceUris; + public $quote; + public $createDisposition; + public $schemaInlineFormat; + public $schemaInline; + protected $__schemaType = 'Google_TableSchema'; + protected $__schemaDataType = ''; + public $schema; + public function setEncoding($encoding) { + $this->encoding = $encoding; + } + public function getEncoding() { + return $this->encoding; + } + public function setFieldDelimiter($fieldDelimiter) { + $this->fieldDelimiter = $fieldDelimiter; + } + public function getFieldDelimiter() { + return $this->fieldDelimiter; + } + public function setDestinationTable(Google_TableReference $destinationTable) { + $this->destinationTable = $destinationTable; + } + public function getDestinationTable() { + return $this->destinationTable; + } + public function setWriteDisposition($writeDisposition) { + $this->writeDisposition = $writeDisposition; + } + public function getWriteDisposition() { + return $this->writeDisposition; + } + public function setMaxBadRecords($maxBadRecords) { + $this->maxBadRecords = $maxBadRecords; + } + public function getMaxBadRecords() { + return $this->maxBadRecords; + } + public function setSkipLeadingRows($skipLeadingRows) { + $this->skipLeadingRows = $skipLeadingRows; + } + public function getSkipLeadingRows() { + return $this->skipLeadingRows; + } + public function setSourceUris(/* array(Google_string) */ $sourceUris) { + $this->assertIsArray($sourceUris, 'Google_string', __METHOD__); + $this->sourceUris = $sourceUris; + } + public function getSourceUris() { + return $this->sourceUris; + } + public function setQuote($quote) { + $this->quote = $quote; + } + public function getQuote() { + return $this->quote; + } + public function setCreateDisposition($createDisposition) { + $this->createDisposition = $createDisposition; + } + public function getCreateDisposition() { + return $this->createDisposition; + } + public function setSchemaInlineFormat($schemaInlineFormat) { + $this->schemaInlineFormat = $schemaInlineFormat; + } + public function getSchemaInlineFormat() { + return $this->schemaInlineFormat; + } + public function setSchemaInline($schemaInline) { + $this->schemaInline = $schemaInline; + } + public function getSchemaInline() { + return $this->schemaInline; + } + public function setSchema(Google_TableSchema $schema) { + $this->schema = $schema; + } + public function getSchema() { + return $this->schema; + } +} + +class Google_JobConfigurationQuery extends Google_Model { + protected $__defaultDatasetType = 'Google_DatasetReference'; + protected $__defaultDatasetDataType = ''; + public $defaultDataset; + protected $__destinationTableType = 'Google_TableReference'; + protected $__destinationTableDataType = ''; + public $destinationTable; + public $priority; + public $writeDisposition; + public $createDisposition; + public $query; + public function setDefaultDataset(Google_DatasetReference $defaultDataset) { + $this->defaultDataset = $defaultDataset; + } + public function getDefaultDataset() { + return $this->defaultDataset; + } + public function setDestinationTable(Google_TableReference $destinationTable) { + $this->destinationTable = $destinationTable; + } + public function getDestinationTable() { + return $this->destinationTable; + } + public function setPriority($priority) { + $this->priority = $priority; + } + public function getPriority() { + return $this->priority; + } + public function setWriteDisposition($writeDisposition) { + $this->writeDisposition = $writeDisposition; + } + public function getWriteDisposition() { + return $this->writeDisposition; + } + public function setCreateDisposition($createDisposition) { + $this->createDisposition = $createDisposition; + } + public function getCreateDisposition() { + return $this->createDisposition; + } + public function setQuery($query) { + $this->query = $query; + } + public function getQuery() { + return $this->query; + } +} + +class Google_JobConfigurationTableCopy extends Google_Model { + public $createDisposition; + public $writeDisposition; + protected $__destinationTableType = 'Google_TableReference'; + protected $__destinationTableDataType = ''; + public $destinationTable; + protected $__sourceTableType = 'Google_TableReference'; + protected $__sourceTableDataType = ''; + public $sourceTable; + public function setCreateDisposition($createDisposition) { + $this->createDisposition = $createDisposition; + } + public function getCreateDisposition() { + return $this->createDisposition; + } + public function setWriteDisposition($writeDisposition) { + $this->writeDisposition = $writeDisposition; + } + public function getWriteDisposition() { + return $this->writeDisposition; + } + public function setDestinationTable(Google_TableReference $destinationTable) { + $this->destinationTable = $destinationTable; + } + public function getDestinationTable() { + return $this->destinationTable; + } + public function setSourceTable(Google_TableReference $sourceTable) { + $this->sourceTable = $sourceTable; + } + public function getSourceTable() { + return $this->sourceTable; + } +} + +class Google_JobList extends Google_Model { + public $nextPageToken; + public $totalItems; + public $kind; + public $etag; + protected $__jobsType = 'Google_JobListJobs'; + protected $__jobsDataType = 'array'; + public $jobs; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setJobs(/* array(Google_JobListJobs) */ $jobs) { + $this->assertIsArray($jobs, 'Google_JobListJobs', __METHOD__); + $this->jobs = $jobs; + } + public function getJobs() { + return $this->jobs; + } +} + +class Google_JobListJobs extends Google_Model { + protected $__statusType = 'Google_JobStatus'; + protected $__statusDataType = ''; + public $status; + public $kind; + protected $__statisticsType = 'Google_JobStatistics'; + protected $__statisticsDataType = ''; + public $statistics; + protected $__jobReferenceType = 'Google_JobReference'; + protected $__jobReferenceDataType = ''; + public $jobReference; + public $state; + protected $__configurationType = 'Google_JobConfiguration'; + protected $__configurationDataType = ''; + public $configuration; + public $id; + protected $__errorResultType = 'Google_ErrorProto'; + protected $__errorResultDataType = ''; + public $errorResult; + public function setStatus(Google_JobStatus $status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setStatistics(Google_JobStatistics $statistics) { + $this->statistics = $statistics; + } + public function getStatistics() { + return $this->statistics; + } + public function setJobReference(Google_JobReference $jobReference) { + $this->jobReference = $jobReference; + } + public function getJobReference() { + return $this->jobReference; + } + public function setState($state) { + $this->state = $state; + } + public function getState() { + return $this->state; + } + public function setConfiguration(Google_JobConfiguration $configuration) { + $this->configuration = $configuration; + } + public function getConfiguration() { + return $this->configuration; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setErrorResult(Google_ErrorProto $errorResult) { + $this->errorResult = $errorResult; + } + public function getErrorResult() { + return $this->errorResult; + } +} + +class Google_JobReference extends Google_Model { + public $projectId; + public $jobId; + public function setProjectId($projectId) { + $this->projectId = $projectId; + } + public function getProjectId() { + return $this->projectId; + } + public function setJobId($jobId) { + $this->jobId = $jobId; + } + public function getJobId() { + return $this->jobId; + } +} + +class Google_JobStatistics extends Google_Model { + public $endTime; + public $totalBytesProcessed; + public $startTime; + public function setEndTime($endTime) { + $this->endTime = $endTime; + } + public function getEndTime() { + return $this->endTime; + } + public function setTotalBytesProcessed($totalBytesProcessed) { + $this->totalBytesProcessed = $totalBytesProcessed; + } + public function getTotalBytesProcessed() { + return $this->totalBytesProcessed; + } + public function setStartTime($startTime) { + $this->startTime = $startTime; + } + public function getStartTime() { + return $this->startTime; + } +} + +class Google_JobStatus extends Google_Model { + public $state; + protected $__errorsType = 'Google_ErrorProto'; + protected $__errorsDataType = 'array'; + public $errors; + protected $__errorResultType = 'Google_ErrorProto'; + protected $__errorResultDataType = ''; + public $errorResult; + public function setState($state) { + $this->state = $state; + } + public function getState() { + return $this->state; + } + public function setErrors(/* array(Google_ErrorProto) */ $errors) { + $this->assertIsArray($errors, 'Google_ErrorProto', __METHOD__); + $this->errors = $errors; + } + public function getErrors() { + return $this->errors; + } + public function setErrorResult(Google_ErrorProto $errorResult) { + $this->errorResult = $errorResult; + } + public function getErrorResult() { + return $this->errorResult; + } +} + +class Google_ProjectList extends Google_Model { + public $nextPageToken; + public $totalItems; + public $kind; + public $etag; + protected $__projectsType = 'Google_ProjectListProjects'; + protected $__projectsDataType = 'array'; + public $projects; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setProjects(/* array(Google_ProjectListProjects) */ $projects) { + $this->assertIsArray($projects, 'Google_ProjectListProjects', __METHOD__); + $this->projects = $projects; + } + public function getProjects() { + return $this->projects; + } +} + +class Google_ProjectListProjects extends Google_Model { + public $friendlyName; + public $kind; + public $id; + protected $__projectReferenceType = 'Google_ProjectReference'; + protected $__projectReferenceDataType = ''; + public $projectReference; + public function setFriendlyName($friendlyName) { + $this->friendlyName = $friendlyName; + } + public function getFriendlyName() { + return $this->friendlyName; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setProjectReference(Google_ProjectReference $projectReference) { + $this->projectReference = $projectReference; + } + public function getProjectReference() { + return $this->projectReference; + } +} + +class Google_ProjectReference extends Google_Model { + public $projectId; + public function setProjectId($projectId) { + $this->projectId = $projectId; + } + public function getProjectId() { + return $this->projectId; + } +} + +class Google_QueryRequest extends Google_Model { + public $timeoutMs; + public $kind; + public $dryRun; + protected $__defaultDatasetType = 'Google_DatasetReference'; + protected $__defaultDatasetDataType = ''; + public $defaultDataset; + public $maxResults; + public $query; + public function setTimeoutMs($timeoutMs) { + $this->timeoutMs = $timeoutMs; + } + public function getTimeoutMs() { + return $this->timeoutMs; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDryRun($dryRun) { + $this->dryRun = $dryRun; + } + public function getDryRun() { + return $this->dryRun; + } + public function setDefaultDataset(Google_DatasetReference $defaultDataset) { + $this->defaultDataset = $defaultDataset; + } + public function getDefaultDataset() { + return $this->defaultDataset; + } + public function setMaxResults($maxResults) { + $this->maxResults = $maxResults; + } + public function getMaxResults() { + return $this->maxResults; + } + public function setQuery($query) { + $this->query = $query; + } + public function getQuery() { + return $this->query; + } +} + +class Google_QueryResponse extends Google_Model { + public $kind; + protected $__rowsType = 'Google_TableRow'; + protected $__rowsDataType = 'array'; + public $rows; + protected $__jobReferenceType = 'Google_JobReference'; + protected $__jobReferenceDataType = ''; + public $jobReference; + public $jobComplete; + public $totalRows; + protected $__schemaType = 'Google_TableSchema'; + protected $__schemaDataType = ''; + public $schema; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRows(/* array(Google_TableRow) */ $rows) { + $this->assertIsArray($rows, 'Google_TableRow', __METHOD__); + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setJobReference(Google_JobReference $jobReference) { + $this->jobReference = $jobReference; + } + public function getJobReference() { + return $this->jobReference; + } + public function setJobComplete($jobComplete) { + $this->jobComplete = $jobComplete; + } + public function getJobComplete() { + return $this->jobComplete; + } + public function setTotalRows($totalRows) { + $this->totalRows = $totalRows; + } + public function getTotalRows() { + return $this->totalRows; + } + public function setSchema(Google_TableSchema $schema) { + $this->schema = $schema; + } + public function getSchema() { + return $this->schema; + } +} + +class Google_Table extends Google_Model { + public $kind; + public $lastModifiedTime; + public $description; + public $creationTime; + protected $__tableReferenceType = 'Google_TableReference'; + protected $__tableReferenceDataType = ''; + public $tableReference; + public $numRows; + public $numBytes; + public $etag; + public $friendlyName; + public $expirationTime; + public $id; + public $selfLink; + protected $__schemaType = 'Google_TableSchema'; + protected $__schemaDataType = ''; + public $schema; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLastModifiedTime($lastModifiedTime) { + $this->lastModifiedTime = $lastModifiedTime; + } + public function getLastModifiedTime() { + return $this->lastModifiedTime; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setCreationTime($creationTime) { + $this->creationTime = $creationTime; + } + public function getCreationTime() { + return $this->creationTime; + } + public function setTableReference(Google_TableReference $tableReference) { + $this->tableReference = $tableReference; + } + public function getTableReference() { + return $this->tableReference; + } + public function setNumRows($numRows) { + $this->numRows = $numRows; + } + public function getNumRows() { + return $this->numRows; + } + public function setNumBytes($numBytes) { + $this->numBytes = $numBytes; + } + public function getNumBytes() { + return $this->numBytes; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setFriendlyName($friendlyName) { + $this->friendlyName = $friendlyName; + } + public function getFriendlyName() { + return $this->friendlyName; + } + public function setExpirationTime($expirationTime) { + $this->expirationTime = $expirationTime; + } + public function getExpirationTime() { + return $this->expirationTime; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setSchema(Google_TableSchema $schema) { + $this->schema = $schema; + } + public function getSchema() { + return $this->schema; + } +} + +class Google_TableDataList extends Google_Model { + public $pageToken; + public $kind; + public $etag; + protected $__rowsType = 'Google_TableRow'; + protected $__rowsDataType = 'array'; + public $rows; + public $totalRows; + public function setPageToken($pageToken) { + $this->pageToken = $pageToken; + } + public function getPageToken() { + return $this->pageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setRows(/* array(Google_TableRow) */ $rows) { + $this->assertIsArray($rows, 'Google_TableRow', __METHOD__); + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setTotalRows($totalRows) { + $this->totalRows = $totalRows; + } + public function getTotalRows() { + return $this->totalRows; + } +} + +class Google_TableFieldSchema extends Google_Model { + protected $__fieldsType = 'Google_TableFieldSchema'; + protected $__fieldsDataType = 'array'; + public $fields; + public $type; + public $mode; + public $name; + public function setFields(/* array(Google_TableFieldSchema) */ $fields) { + $this->assertIsArray($fields, 'Google_TableFieldSchema', __METHOD__); + $this->fields = $fields; + } + public function getFields() { + return $this->fields; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setMode($mode) { + $this->mode = $mode; + } + public function getMode() { + return $this->mode; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_TableList extends Google_Model { + public $nextPageToken; + protected $__tablesType = 'Google_TableListTables'; + protected $__tablesDataType = 'array'; + public $tables; + public $kind; + public $etag; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setTables(/* array(Google_TableListTables) */ $tables) { + $this->assertIsArray($tables, 'Google_TableListTables', __METHOD__); + $this->tables = $tables; + } + public function getTables() { + return $this->tables; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} + +class Google_TableListTables extends Google_Model { + public $friendlyName; + public $kind; + public $id; + protected $__tableReferenceType = 'Google_TableReference'; + protected $__tableReferenceDataType = ''; + public $tableReference; + public function setFriendlyName($friendlyName) { + $this->friendlyName = $friendlyName; + } + public function getFriendlyName() { + return $this->friendlyName; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setTableReference(Google_TableReference $tableReference) { + $this->tableReference = $tableReference; + } + public function getTableReference() { + return $this->tableReference; + } +} + +class Google_TableReference extends Google_Model { + public $projectId; + public $tableId; + public $datasetId; + public function setProjectId($projectId) { + $this->projectId = $projectId; + } + public function getProjectId() { + return $this->projectId; + } + public function setTableId($tableId) { + $this->tableId = $tableId; + } + public function getTableId() { + return $this->tableId; + } + public function setDatasetId($datasetId) { + $this->datasetId = $datasetId; + } + public function getDatasetId() { + return $this->datasetId; + } +} + +class Google_TableRow extends Google_Model { + protected $__fType = 'Google_TableRowF'; + protected $__fDataType = 'array'; + public $f; + public function setF(/* array(Google_TableRowF) */ $f) { + $this->assertIsArray($f, 'Google_TableRowF', __METHOD__); + $this->f = $f; + } + public function getF() { + return $this->f; + } +} + +class Google_TableRowF extends Google_Model { + public $v; + public function setV($v) { + $this->v = $v; + } + public function getV() { + return $this->v; + } +} + +class Google_TableSchema extends Google_Model { + protected $__fieldsType = 'Google_TableFieldSchema'; + protected $__fieldsDataType = 'array'; + public $fields; + public function setFields(/* array(Google_TableFieldSchema) */ $fields) { + $this->assertIsArray($fields, 'Google_TableFieldSchema', __METHOD__); + $this->fields = $fields; + } + public function getFields() { + return $this->fields; + } +} diff --git a/modules/oauth/src/google/contrib/Google_BloggerService.php b/modules/oauth/src/google/contrib/Google_BloggerService.php new file mode 100644 index 0000000..4cc954b --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_BloggerService.php @@ -0,0 +1,1301 @@ + + * $bloggerService = new Google_BloggerService(...); + * $blogs = $bloggerService->blogs; + * + */ + class Google_BlogsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves a list of blogs, possibly filtered. (blogs.listByUser) + * + * @param string $userId ID of the user whose blogs are to be fetched. Either the word 'self' (sans quote marks) or the user's profile identifier. + * @param array $optParams Optional parameters. + * @return Google_BlogList + */ + public function listByUser($userId, $optParams = array()) { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('listByUser', array($params)); + if ($this->useObjects()) { + return new Google_BlogList($data); + } else { + return $data; + } + } + /** + * Retrieve a Blog by URL. (blogs.getByUrl) + * + * @param array $optParams Optional parameters. + * + * @opt_param string url The URL of the blog to retrieve. + * @return Google_Blog + */ + public function getByUrl($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('getByUrl', array($params)); + if ($this->useObjects()) { + return new Google_Blog($data); + } else { + return $data; + } + } + /** + * Gets one blog by id. (blogs.get) + * + * @param string $blogId The ID of the blog to get. + * @param array $optParams Optional parameters. + * + * @opt_param string maxPosts Maximum number of posts to pull back with the blog. + * @return Google_Blog + */ + public function get($blogId, $optParams = array()) { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Blog($data); + } else { + return $data; + } + } + } + + /** + * The "posts" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_BloggerService(...); + * $posts = $bloggerService->posts; + * + */ + class Google_PostsServiceResource extends Google_ServiceResource { + + + /** + * Add a post. (posts.insert) + * + * @param string $blogId ID of the blog to fetch the post from. + * @param Google_Post $postBody + * @param array $optParams Optional parameters. + * @return Google_Post + */ + public function insert($blogId, Google_Post $postBody, $optParams = array()) { + $params = array('blogId' => $blogId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Post($data); + } else { + return $data; + } + } + /** + * Search for a post. (posts.search) + * + * @param string $blogId ID of the blog to fetch the post from. + * @param array $optParams Optional parameters. + * + * @opt_param string q Query terms to search this blog for matching posts. + * @return Google_PostList + */ + public function search($blogId, $optParams = array()) { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + $data = $this->__call('search', array($params)); + if ($this->useObjects()) { + return new Google_PostList($data); + } else { + return $data; + } + } + /** + * Get a post by id. (posts.get) + * + * @param string $blogId ID of the blog to fetch the post from. + * @param string $postId The ID of the post + * @param array $optParams Optional parameters. + * + * @opt_param string maxComments Maximum number of comments to pull back on a post. + * @return Google_Post + */ + public function get($blogId, $postId, $optParams = array()) { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Post($data); + } else { + return $data; + } + } + /** + * Retrieves a list of posts, possibly filtered. (posts.list) + * + * @param string $blogId ID of the blog to fetch posts from. + * @param array $optParams Optional parameters. + * + * @opt_param string startDate Earliest post date to fetch, a date-time with RFC 3339 formatting. + * @opt_param string endDate Latest post date to fetch, a date-time with RFC 3339 formatting. + * @opt_param string labels Comma-separated list of labels to search for. + * @opt_param string maxResults Maximum number of posts to fetch. + * @opt_param string pageToken Continuation token if the request is paged. + * @opt_param bool fetchBodies Whether the body content of posts is included. + * @return Google_PostList + */ + public function listPosts($blogId, $optParams = array()) { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_PostList($data); + } else { + return $data; + } + } + /** + * Update a post. (posts.update) + * + * @param string $blogId The ID of the Blog. + * @param string $postId The ID of the Post. + * @param Google_Post $postBody + * @param array $optParams Optional parameters. + * @return Google_Post + */ + public function update($blogId, $postId, Google_Post $postBody, $optParams = array()) { + $params = array('blogId' => $blogId, 'postId' => $postId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Post($data); + } else { + return $data; + } + } + /** + * Retrieve a Post by Path. (posts.getByPath) + * + * @param string $blogId ID of the blog to fetch the post from. + * @param array $optParams Optional parameters. + * + * @opt_param string path Path of the Post to retrieve. + * @opt_param string maxComments Maximum number of comments to pull back on a post. + * @return Google_Post + */ + public function getByPath($blogId, $optParams = array()) { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + $data = $this->__call('getByPath', array($params)); + if ($this->useObjects()) { + return new Google_Post($data); + } else { + return $data; + } + } + /** + * Update a post. This method supports patch semantics. (posts.patch) + * + * @param string $blogId The ID of the Blog. + * @param string $postId The ID of the Post. + * @param Google_Post $postBody + * @param array $optParams Optional parameters. + * @return Google_Post + */ + public function patch($blogId, $postId, Google_Post $postBody, $optParams = array()) { + $params = array('blogId' => $blogId, 'postId' => $postId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Post($data); + } else { + return $data; + } + } + /** + * Delete a post by id. (posts.delete) + * + * @param string $blogId The Id of the Blog. + * @param string $postId The ID of the Post. + * @param array $optParams Optional parameters. + */ + public function delete($blogId, $postId, $optParams = array()) { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "pages" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_BloggerService(...); + * $pages = $bloggerService->pages; + * + */ + class Google_PagesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves pages for a blog, possibly filtered. (pages.list) + * + * @param string $blogId ID of the blog to fetch pages from. + * @param array $optParams Optional parameters. + * + * @opt_param bool fetchBodies Whether to retrieve the Page bodies. + * @return Google_PageList + */ + public function listPages($blogId, $optParams = array()) { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_PageList($data); + } else { + return $data; + } + } + /** + * Gets one blog page by id. (pages.get) + * + * @param string $blogId ID of the blog containing the page. + * @param string $pageId The ID of the page to get. + * @param array $optParams Optional parameters. + * @return Google_Page + */ + public function get($blogId, $pageId, $optParams = array()) { + $params = array('blogId' => $blogId, 'pageId' => $pageId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Page($data); + } else { + return $data; + } + } + } + + /** + * The "comments" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_BloggerService(...); + * $comments = $bloggerService->comments; + * + */ + class Google_CommentsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the comments for a blog, possibly filtered. (comments.list) + * + * @param string $blogId ID of the blog to fetch comments from. + * @param string $postId ID of the post to fetch posts from. + * @param array $optParams Optional parameters. + * + * @opt_param string startDate Earliest date of comment to fetch, a date-time with RFC 3339 formatting. + * @opt_param string endDate Latest date of comment to fetch, a date-time with RFC 3339 formatting. + * @opt_param string maxResults Maximum number of comments to include in the result. + * @opt_param string pageToken Continuation token if request is paged. + * @opt_param bool fetchBodies Whether the body content of the comments is included. + * @return Google_CommentList + */ + public function listComments($blogId, $postId, $optParams = array()) { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommentList($data); + } else { + return $data; + } + } + /** + * Gets one comment by id. (comments.get) + * + * @param string $blogId ID of the blog to containing the comment. + * @param string $postId ID of the post to fetch posts from. + * @param string $commentId The ID of the comment to get. + * @param array $optParams Optional parameters. + * @return Google_Comment + */ + public function get($blogId, $postId, $commentId, $optParams = array()) { + $params = array('blogId' => $blogId, 'postId' => $postId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Comment($data); + } else { + return $data; + } + } + } + + /** + * The "users" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_BloggerService(...); + * $users = $bloggerService->users; + * + */ + class Google_UsersServiceResource extends Google_ServiceResource { + + + /** + * Gets one user by id. (users.get) + * + * @param string $userId The ID of the user to get. + * @param array $optParams Optional parameters. + * @return Google_User + */ + public function get($userId, $optParams = array()) { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_User($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Blogger (v3). + * + *

+ * API for access to the data within Blogger. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_BloggerService extends Google_Service { + public $blogs; + public $posts; + public $pages; + public $comments; + public $users; + /** + * Constructs the internal representation of the Blogger service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'blogger/v3/'; + $this->version = 'v3'; + $this->serviceName = 'blogger'; + + $client->addService($this->serviceName, $this->version); + $this->blogs = new Google_BlogsServiceResource($this, $this->serviceName, 'blogs', json_decode('{"methods": {"listByUser": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"userId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.blogs.listByUser", "httpMethod": "GET", "path": "users/{userId}/blogs", "response": {"$ref": "BlogList"}}, "getByUrl": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"url": {"type": "string", "location": "query"}}, "response": {"$ref": "Blog"}, "httpMethod": "GET", "path": "blogs/byurl", "id": "blogger.blogs.getByUrl"}, "get": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"maxPosts": {"type": "integer", "location": "query", "format": "uint32"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.blogs.get", "httpMethod": "GET", "path": "blogs/{blogId}", "response": {"$ref": "Blog"}}}}', true)); + $this->posts = new Google_PostsServiceResource($this, $this->serviceName, 'posts', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/blogger"], "parameters": {"blogId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Post"}, "response": {"$ref": "Post"}, "httpMethod": "POST", "path": "blogs/{blogId}/posts", "id": "blogger.posts.insert"}, "search": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"q": {"type": "string", "location": "query"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.posts.search", "httpMethod": "GET", "path": "blogs/{blogId}/posts/search", "response": {"$ref": "PostList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"maxComments": {"type": "integer", "location": "query", "format": "uint32"}, "blogId": {"required": true, "type": "string", "location": "path"}, "postId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.posts.get", "httpMethod": "GET", "path": "blogs/{blogId}/posts/{postId}", "response": {"$ref": "Post"}}, "list": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"startDate": {"type": "string", "location": "query", "format": "date-time"}, "endDate": {"type": "string", "location": "query", "format": "date-time"}, "labels": {"type": "string", "location": "query"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "pageToken": {"type": "string", "location": "query"}, "fetchBodies": {"type": "boolean", "location": "query"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.posts.list", "httpMethod": "GET", "path": "blogs/{blogId}/posts", "response": {"$ref": "PostList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/blogger"], "parameters": {"postId": {"required": true, "type": "string", "location": "path"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Post"}, "response": {"$ref": "Post"}, "httpMethod": "PUT", "path": "blogs/{blogId}/posts/{postId}", "id": "blogger.posts.update"}, "getByPath": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"path": {"type": "string", "location": "query"}, "maxComments": {"type": "integer", "location": "query", "format": "uint32"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.posts.getByPath", "httpMethod": "GET", "path": "blogs/{blogId}/posts/bypath", "response": {"$ref": "Post"}}, "patch": {"scopes": ["https://www.googleapis.com/auth/blogger"], "parameters": {"postId": {"required": true, "type": "string", "location": "path"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Post"}, "response": {"$ref": "Post"}, "httpMethod": "PATCH", "path": "blogs/{blogId}/posts/{postId}", "id": "blogger.posts.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/blogger"], "path": "blogs/{blogId}/posts/{postId}", "id": "blogger.posts.delete", "parameters": {"postId": {"required": true, "type": "string", "location": "path"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->pages = new Google_PagesServiceResource($this, $this->serviceName, 'pages', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"fetchBodies": {"type": "boolean", "location": "query"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.pages.list", "httpMethod": "GET", "path": "blogs/{blogId}/pages", "response": {"$ref": "PageList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"pageId": {"required": true, "type": "string", "location": "path"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.pages.get", "httpMethod": "GET", "path": "blogs/{blogId}/pages/{pageId}", "response": {"$ref": "Page"}}}}', true)); + $this->comments = new Google_CommentsServiceResource($this, $this->serviceName, 'comments', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"startDate": {"type": "string", "location": "query", "format": "date-time"}, "postId": {"required": true, "type": "string", "location": "path"}, "endDate": {"type": "string", "location": "query", "format": "date-time"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "pageToken": {"type": "string", "location": "query"}, "fetchBodies": {"type": "boolean", "location": "query"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.comments.list", "httpMethod": "GET", "path": "blogs/{blogId}/posts/{postId}/comments", "response": {"$ref": "CommentList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"commentId": {"required": true, "type": "string", "location": "path"}, "postId": {"required": true, "type": "string", "location": "path"}, "blogId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.comments.get", "httpMethod": "GET", "path": "blogs/{blogId}/posts/{postId}/comments/{commentId}", "response": {"$ref": "Comment"}}}}', true)); + $this->users = new Google_UsersServiceResource($this, $this->serviceName, 'users', json_decode('{"methods": {"get": {"scopes": ["https://www.googleapis.com/auth/blogger", "https://www.googleapis.com/auth/blogger.readonly"], "parameters": {"userId": {"required": true, "type": "string", "location": "path"}}, "id": "blogger.users.get", "httpMethod": "GET", "path": "users/{userId}", "response": {"$ref": "User"}}}}', true)); + + } +} + +class Google_Blog extends Google_Model { + public $kind; + public $description; + protected $__localeType = 'Google_BlogLocale'; + protected $__localeDataType = ''; + public $locale; + protected $__postsType = 'Google_BlogPosts'; + protected $__postsDataType = ''; + public $posts; + public $customMetaData; + public $updated; + protected $__pagesType = 'Google_BlogPages'; + protected $__pagesDataType = ''; + public $pages; + public $url; + public $published; + public $id; + public $selfLink; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setLocale(Google_BlogLocale $locale) { + $this->locale = $locale; + } + public function getLocale() { + return $this->locale; + } + public function setPosts(Google_BlogPosts $posts) { + $this->posts = $posts; + } + public function getPosts() { + return $this->posts; + } + public function setCustomMetaData($customMetaData) { + $this->customMetaData = $customMetaData; + } + public function getCustomMetaData() { + return $this->customMetaData; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setPages(Google_BlogPages $pages) { + $this->pages = $pages; + } + public function getPages() { + return $this->pages; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_BlogList extends Google_Model { + protected $__itemsType = 'Google_Blog'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Blog) */ $items) { + $this->assertIsArray($items, 'Google_Blog', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_BlogLocale extends Google_Model { + public $country; + public $variant; + public $language; + public function setCountry($country) { + $this->country = $country; + } + public function getCountry() { + return $this->country; + } + public function setVariant($variant) { + $this->variant = $variant; + } + public function getVariant() { + return $this->variant; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } +} + +class Google_BlogPages extends Google_Model { + public $totalItems; + public $selfLink; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_BlogPosts extends Google_Model { + public $totalItems; + protected $__itemsType = 'Google_Post'; + protected $__itemsDataType = 'array'; + public $items; + public $selfLink; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setItems(/* array(Google_Post) */ $items) { + $this->assertIsArray($items, 'Google_Post', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Comment extends Google_Model { + public $content; + public $kind; + protected $__inReplyToType = 'Google_CommentInReplyTo'; + protected $__inReplyToDataType = ''; + public $inReplyTo; + protected $__authorType = 'Google_CommentAuthor'; + protected $__authorDataType = ''; + public $author; + public $updated; + protected $__blogType = 'Google_CommentBlog'; + protected $__blogDataType = ''; + public $blog; + public $published; + protected $__postType = 'Google_CommentPost'; + protected $__postDataType = ''; + public $post; + public $id; + public $selfLink; + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setInReplyTo(Google_CommentInReplyTo $inReplyTo) { + $this->inReplyTo = $inReplyTo; + } + public function getInReplyTo() { + return $this->inReplyTo; + } + public function setAuthor(Google_CommentAuthor $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setBlog(Google_CommentBlog $blog) { + $this->blog = $blog; + } + public function getBlog() { + return $this->blog; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setPost(Google_CommentPost $post) { + $this->post = $post; + } + public function getPost() { + return $this->post; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_CommentAuthor extends Google_Model { + public $url; + protected $__imageType = 'Google_CommentAuthorImage'; + protected $__imageDataType = ''; + public $image; + public $displayName; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_CommentAuthorImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommentAuthorImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_CommentBlog extends Google_Model { + public $id; + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommentInReplyTo extends Google_Model { + public $id; + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommentList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Comment'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $prevPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Comment) */ $items) { + $this->assertIsArray($items, 'Google_Comment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setPrevPageToken($prevPageToken) { + $this->prevPageToken = $prevPageToken; + } + public function getPrevPageToken() { + return $this->prevPageToken; + } +} + +class Google_CommentPost extends Google_Model { + public $id; + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_Page extends Google_Model { + public $content; + public $kind; + protected $__authorType = 'Google_PageAuthor'; + protected $__authorDataType = ''; + public $author; + public $url; + public $title; + public $updated; + protected $__blogType = 'Google_PageBlog'; + protected $__blogDataType = ''; + public $blog; + public $published; + public $id; + public $selfLink; + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAuthor(Google_PageAuthor $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setBlog(Google_PageBlog $blog) { + $this->blog = $blog; + } + public function getBlog() { + return $this->blog; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_PageAuthor extends Google_Model { + public $url; + protected $__imageType = 'Google_PageAuthorImage'; + protected $__imageDataType = ''; + public $image; + public $displayName; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_PageAuthorImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_PageAuthorImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_PageBlog extends Google_Model { + public $id; + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_PageList extends Google_Model { + protected $__itemsType = 'Google_Page'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Page) */ $items) { + $this->assertIsArray($items, 'Google_Page', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Post extends Google_Model { + public $content; + public $kind; + protected $__authorType = 'Google_PostAuthor'; + protected $__authorDataType = ''; + public $author; + protected $__repliesType = 'Google_PostReplies'; + protected $__repliesDataType = ''; + public $replies; + public $labels; + public $customMetaData; + public $updated; + protected $__blogType = 'Google_PostBlog'; + protected $__blogDataType = ''; + public $blog; + public $url; + protected $__locationType = 'Google_PostLocation'; + protected $__locationDataType = ''; + public $location; + public $published; + public $title; + public $id; + public $selfLink; + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAuthor(Google_PostAuthor $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setReplies(Google_PostReplies $replies) { + $this->replies = $replies; + } + public function getReplies() { + return $this->replies; + } + public function setLabels(/* array(Google_string) */ $labels) { + $this->assertIsArray($labels, 'Google_string', __METHOD__); + $this->labels = $labels; + } + public function getLabels() { + return $this->labels; + } + public function setCustomMetaData($customMetaData) { + $this->customMetaData = $customMetaData; + } + public function getCustomMetaData() { + return $this->customMetaData; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setBlog(Google_PostBlog $blog) { + $this->blog = $blog; + } + public function getBlog() { + return $this->blog; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setLocation(Google_PostLocation $location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_PostAuthor extends Google_Model { + public $url; + protected $__imageType = 'Google_PostAuthorImage'; + protected $__imageDataType = ''; + public $image; + public $displayName; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_PostAuthorImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_PostAuthorImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_PostBlog extends Google_Model { + public $id; + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_PostList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Post'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $prevPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Post) */ $items) { + $this->assertIsArray($items, 'Google_Post', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setPrevPageToken($prevPageToken) { + $this->prevPageToken = $prevPageToken; + } + public function getPrevPageToken() { + return $this->prevPageToken; + } +} + +class Google_PostLocation extends Google_Model { + public $lat; + public $lng; + public $span; + public $name; + public function setLat($lat) { + $this->lat = $lat; + } + public function getLat() { + return $this->lat; + } + public function setLng($lng) { + $this->lng = $lng; + } + public function getLng() { + return $this->lng; + } + public function setSpan($span) { + $this->span = $span; + } + public function getSpan() { + return $this->span; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_PostReplies extends Google_Model { + public $totalItems; + protected $__itemsType = 'Google_Comment'; + protected $__itemsDataType = 'array'; + public $items; + public $selfLink; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setItems(/* array(Google_Comment) */ $items) { + $this->assertIsArray($items, 'Google_Comment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_User extends Google_Model { + public $about; + public $displayName; + public $created; + protected $__localeType = 'Google_UserLocale'; + protected $__localeDataType = ''; + public $locale; + protected $__blogsType = 'Google_UserBlogs'; + protected $__blogsDataType = ''; + public $blogs; + public $kind; + public $url; + public $id; + public $selfLink; + public function setAbout($about) { + $this->about = $about; + } + public function getAbout() { + return $this->about; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setLocale(Google_UserLocale $locale) { + $this->locale = $locale; + } + public function getLocale() { + return $this->locale; + } + public function setBlogs(Google_UserBlogs $blogs) { + $this->blogs = $blogs; + } + public function getBlogs() { + return $this->blogs; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_UserBlogs extends Google_Model { + public $selfLink; + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_UserLocale extends Google_Model { + public $country; + public $variant; + public $language; + public function setCountry($country) { + $this->country = $country; + } + public function getCountry() { + return $this->country; + } + public function setVariant($variant) { + $this->variant = $variant; + } + public function getVariant() { + return $this->variant; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } +} diff --git a/modules/oauth/src/google/contrib/Google_BooksService.php b/modules/oauth/src/google/contrib/Google_BooksService.php new file mode 100644 index 0000000..13cab1b --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_BooksService.php @@ -0,0 +1,2793 @@ + + * $booksService = new Google_BooksService(...); + * $layers = $booksService->layers; + * + */ + class Google_LayersServiceResource extends Google_ServiceResource { + + + /** + * List the layer summaries for a volume. (layers.list) + * + * @param string $volumeId The volume to retrieve layers for. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The value of the nextToken from the previous page. + * @opt_param string contentVersion The content version for the requested volume. + * @opt_param string maxResults Maximum number of results to return + * @opt_param string source String to identify the originator of this request. + * @return Google_Layersummaries + */ + public function listLayers($volumeId, $optParams = array()) { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Layersummaries($data); + } else { + return $data; + } + } + /** + * Gets the layer summary for a volume. (layers.get) + * + * @param string $volumeId The volume to retrieve layers for. + * @param string $summaryId The ID for the layer to get the summary for. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @opt_param string contentVersion The content version for the requested volume. + * @return Google_Layersummary + */ + public function get($volumeId, $summaryId, $optParams = array()) { + $params = array('volumeId' => $volumeId, 'summaryId' => $summaryId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Layersummary($data); + } else { + return $data; + } + } + } + + /** + * The "annotationData" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $annotationData = $booksService->annotationData; + * + */ + class Google_LayersAnnotationDataServiceResource extends Google_ServiceResource { + + + /** + * Gets the annotation data for a volume and layer. (annotationData.list) + * + * @param string $volumeId The volume to retrieve annotation data for. + * @param string $layerId The ID for the layer to get the annotation data. + * @param string $contentVersion The content version for the requested volume. + * @param array $optParams Optional parameters. + * + * @opt_param int scale The requested scale for the image. + * @opt_param string source String to identify the originator of this request. + * @opt_param string locale The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. + * @opt_param int h The requested pixel height for any images. If height is provided width must also be provided. + * @opt_param string updatedMax RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive). + * @opt_param string maxResults Maximum number of results to return + * @opt_param string annotationDataId The list of Annotation Data Ids to retrieve. Pagination is ignored if this is set. + * @opt_param string pageToken The value of the nextToken from the previous page. + * @opt_param int w The requested pixel width for any images. If width is provided height must also be provided. + * @opt_param string updatedMin RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive). + * @return Google_Annotationsdata + */ + public function listLayersAnnotationData($volumeId, $layerId, $contentVersion, $optParams = array()) { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'contentVersion' => $contentVersion); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Annotationsdata($data); + } else { + return $data; + } + } + /** + * Gets the annotation data. (annotationData.get) + * + * @param string $volumeId The volume to retrieve annotations for. + * @param string $layerId The ID for the layer to get the annotations. + * @param string $annotationDataId The ID of the annotation data to retrieve. + * @param string $contentVersion The content version for the volume you are trying to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int scale The requested scale for the image. + * @opt_param string locale The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. + * @opt_param int h The requested pixel height for any images. If height is provided width must also be provided. + * @opt_param string source String to identify the originator of this request. + * @opt_param int w The requested pixel width for any images. If width is provided height must also be provided. + * @return Google_Annotationdata + */ + public function get($volumeId, $layerId, $annotationDataId, $contentVersion, $optParams = array()) { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'annotationDataId' => $annotationDataId, 'contentVersion' => $contentVersion); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Annotationdata($data); + } else { + return $data; + } + } + } + /** + * The "volumeAnnotations" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $volumeAnnotations = $booksService->volumeAnnotations; + * + */ + class Google_LayersVolumeAnnotationsServiceResource extends Google_ServiceResource { + + + /** + * Gets the volume annotations for a volume and layer. (volumeAnnotations.list) + * + * @param string $volumeId The volume to retrieve annotations for. + * @param string $layerId The ID for the layer to get the annotations. + * @param string $contentVersion The content version for the requested volume. + * @param array $optParams Optional parameters. + * + * @opt_param bool showDeleted Set to true to return deleted annotations. updatedMin must be in the request to use this. Defaults to false. + * @opt_param string endPosition The end position to end retrieving data from. + * @opt_param string endOffset The end offset to end retrieving data from. + * @opt_param string locale The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. + * @opt_param string updatedMin RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive). + * @opt_param string updatedMax RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive). + * @opt_param string maxResults Maximum number of results to return + * @opt_param string pageToken The value of the nextToken from the previous page. + * @opt_param string source String to identify the originator of this request. + * @opt_param string startOffset The start offset to start retrieving data from. + * @opt_param string startPosition The start position to start retrieving data from. + * @return Google_Volumeannotations + */ + public function listLayersVolumeAnnotations($volumeId, $layerId, $contentVersion, $optParams = array()) { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'contentVersion' => $contentVersion); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Volumeannotations($data); + } else { + return $data; + } + } + /** + * Gets the volume annotation. (volumeAnnotations.get) + * + * @param string $volumeId The volume to retrieve annotations for. + * @param string $layerId The ID for the layer to get the annotations. + * @param string $annotationId The ID of the volume annotation to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string locale The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. + * @opt_param string source String to identify the originator of this request. + * @return Google_Volumeannotation + */ + public function get($volumeId, $layerId, $annotationId, $optParams = array()) { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'annotationId' => $annotationId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Volumeannotation($data); + } else { + return $data; + } + } + } + + /** + * The "bookshelves" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $bookshelves = $booksService->bookshelves; + * + */ + class Google_BookshelvesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves a list of public bookshelves for the specified user. (bookshelves.list) + * + * @param string $userId ID of user for whom to retrieve bookshelves. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @return Google_Bookshelves + */ + public function listBookshelves($userId, $optParams = array()) { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Bookshelves($data); + } else { + return $data; + } + } + /** + * Retrieves metadata for a specific bookshelf for the specified user. (bookshelves.get) + * + * @param string $userId ID of user for whom to retrieve bookshelves. + * @param string $shelf ID of bookshelf to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @return Google_Bookshelf + */ + public function get($userId, $shelf, $optParams = array()) { + $params = array('userId' => $userId, 'shelf' => $shelf); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Bookshelf($data); + } else { + return $data; + } + } + } + + /** + * The "volumes" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $volumes = $booksService->volumes; + * + */ + class Google_BookshelvesVolumesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves volumes in a specific bookshelf for the specified user. (volumes.list) + * + * @param string $userId ID of user for whom to retrieve bookshelf volumes. + * @param string $shelf ID of bookshelf to retrieve volumes. + * @param array $optParams Optional parameters. + * + * @opt_param bool showPreorders Set to true to show pre-ordered books. Defaults to false. + * @opt_param string maxResults Maximum number of results to return + * @opt_param string source String to identify the originator of this request. + * @opt_param string startIndex Index of the first element to return (starts at 0) + * @return Google_Volumes + */ + public function listBookshelvesVolumes($userId, $shelf, $optParams = array()) { + $params = array('userId' => $userId, 'shelf' => $shelf); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Volumes($data); + } else { + return $data; + } + } + } + + /** + * The "myconfig" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $myconfig = $booksService->myconfig; + * + */ + class Google_MyconfigServiceResource extends Google_ServiceResource { + + + /** + * Release downloaded content access restriction. (myconfig.releaseDownloadAccess) + * + * @param string $volumeIds The volume(s) to release restrictions for. + * @param string $cpksver The device/version ID from which to release the restriction. + * @param array $optParams Optional parameters. + * + * @opt_param string locale ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US. + * @opt_param string source String to identify the originator of this request. + * @return Google_DownloadAccesses + */ + public function releaseDownloadAccess($volumeIds, $cpksver, $optParams = array()) { + $params = array('volumeIds' => $volumeIds, 'cpksver' => $cpksver); + $params = array_merge($params, $optParams); + $data = $this->__call('releaseDownloadAccess', array($params)); + if ($this->useObjects()) { + return new Google_DownloadAccesses($data); + } else { + return $data; + } + } + /** + * Request concurrent and download access restrictions. (myconfig.requestAccess) + * + * @param string $source String to identify the originator of this request. + * @param string $volumeId The volume to request concurrent/download restrictions for. + * @param string $nonce The client nonce value. + * @param string $cpksver The device/version ID from which to request the restrictions. + * @param array $optParams Optional parameters. + * + * @opt_param string locale ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US. + * @return Google_RequestAccess + */ + public function requestAccess($source, $volumeId, $nonce, $cpksver, $optParams = array()) { + $params = array('source' => $source, 'volumeId' => $volumeId, 'nonce' => $nonce, 'cpksver' => $cpksver); + $params = array_merge($params, $optParams); + $data = $this->__call('requestAccess', array($params)); + if ($this->useObjects()) { + return new Google_RequestAccess($data); + } else { + return $data; + } + } + /** + * Request downloaded content access for specified volumes on the My eBooks shelf. + * (myconfig.syncVolumeLicenses) + * + * @param string $source String to identify the originator of this request. + * @param string $nonce The client nonce value. + * @param string $cpksver The device/version ID from which to release the restriction. + * @param array $optParams Optional parameters. + * + * @opt_param string locale ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US. + * @opt_param bool showPreorders Set to true to show pre-ordered books. Defaults to false. + * @opt_param string volumeIds The volume(s) to request download restrictions for. + * @return Google_Volumes + */ + public function syncVolumeLicenses($source, $nonce, $cpksver, $optParams = array()) { + $params = array('source' => $source, 'nonce' => $nonce, 'cpksver' => $cpksver); + $params = array_merge($params, $optParams); + $data = $this->__call('syncVolumeLicenses', array($params)); + if ($this->useObjects()) { + return new Google_Volumes($data); + } else { + return $data; + } + } + } + + /** + * The "volumes" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $volumes = $booksService->volumes; + * + */ + class Google_VolumesServiceResource extends Google_ServiceResource { + + + /** + * Performs a book search. (volumes.list) + * + * @param string $q Full-text search query string. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy Sort search results. + * @opt_param string projection Restrict information returned to a set of selected fields. + * @opt_param string libraryRestrict Restrict search to this user's library. + * @opt_param string langRestrict Restrict results to books with this language code. + * @opt_param bool showPreorders Set to true to show books available for preorder. Defaults to false. + * @opt_param string printType Restrict to books or magazines. + * @opt_param string maxResults Maximum number of results to return. + * @opt_param string filter Filter search results. + * @opt_param string source String to identify the originator of this request. + * @opt_param string startIndex Index of the first result to return (starts at 0) + * @opt_param string download Restrict to volumes by download availability. + * @opt_param string partner Restrict and brand results for partner ID. + * @return Google_Volumes + */ + public function listVolumes($q, $optParams = array()) { + $params = array('q' => $q); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Volumes($data); + } else { + return $data; + } + } + /** + * Gets volume information for a single volume. (volumes.get) + * + * @param string $volumeId ID of volume to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @opt_param string country ISO-3166-1 code to override the IP-based location. + * @opt_param string projection Restrict information returned to a set of selected fields. + * @opt_param string partner Brand results for partner ID. + * @return Google_Volume + */ + public function get($volumeId, $optParams = array()) { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Volume($data); + } else { + return $data; + } + } + } + + /** + * The "associated" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $associated = $booksService->associated; + * + */ + class Google_VolumesAssociatedServiceResource extends Google_ServiceResource { + + + /** + * Return a list of associated books. (associated.list) + * + * @param string $volumeId ID of the source volume. + * @param array $optParams Optional parameters. + * + * @opt_param string projection Restrict information returned to a set of selected fields. + * @opt_param string maxResults Maximum number of results to return. + * @opt_param string filter Filter search results. + * @opt_param string source String to identify the originator of this request. + * @opt_param string startIndex Index of the first result to return (starts at 0) + * @opt_param string association Association type. + * @return Google_Volumes + */ + public function listVolumesAssociated($volumeId, $optParams = array()) { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Volumes($data); + } else { + return $data; + } + } + } + + /** + * The "mylibrary" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $mylibrary = $booksService->mylibrary; + * + */ + class Google_MylibraryServiceResource extends Google_ServiceResource { + + + } + + /** + * The "bookshelves" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $bookshelves = $booksService->bookshelves; + * + */ + class Google_MylibraryBookshelvesServiceResource extends Google_ServiceResource { + + + /** + * Removes a volume from a bookshelf. (bookshelves.removeVolume) + * + * @param string $shelf ID of bookshelf from which to remove a volume. + * @param string $volumeId ID of volume to remove. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + */ + public function removeVolume($shelf, $volumeId, $optParams = array()) { + $params = array('shelf' => $shelf, 'volumeId' => $volumeId); + $params = array_merge($params, $optParams); + $data = $this->__call('removeVolume', array($params)); + return $data; + } + /** + * Retrieves metadata for a specific bookshelf belonging to the authenticated user. + * (bookshelves.get) + * + * @param string $shelf ID of bookshelf to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @return Google_Bookshelf + */ + public function get($shelf, $optParams = array()) { + $params = array('shelf' => $shelf); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Bookshelf($data); + } else { + return $data; + } + } + /** + * Clears all volumes from a bookshelf. (bookshelves.clearVolumes) + * + * @param string $shelf ID of bookshelf from which to remove a volume. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + */ + public function clearVolumes($shelf, $optParams = array()) { + $params = array('shelf' => $shelf); + $params = array_merge($params, $optParams); + $data = $this->__call('clearVolumes', array($params)); + return $data; + } + /** + * Retrieves a list of bookshelves belonging to the authenticated user. (bookshelves.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @return Google_Bookshelves + */ + public function listMylibraryBookshelves($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Bookshelves($data); + } else { + return $data; + } + } + /** + * Adds a volume to a bookshelf. (bookshelves.addVolume) + * + * @param string $shelf ID of bookshelf to which to add a volume. + * @param string $volumeId ID of volume to add. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + */ + public function addVolume($shelf, $volumeId, $optParams = array()) { + $params = array('shelf' => $shelf, 'volumeId' => $volumeId); + $params = array_merge($params, $optParams); + $data = $this->__call('addVolume', array($params)); + return $data; + } + /** + * Moves a volume within a bookshelf. (bookshelves.moveVolume) + * + * @param string $shelf ID of bookshelf with the volume. + * @param string $volumeId ID of volume to move. + * @param int $volumePosition Position on shelf to move the item (0 puts the item before the current first item, 1 puts it between the first and the second and so on.) + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + */ + public function moveVolume($shelf, $volumeId, $volumePosition, $optParams = array()) { + $params = array('shelf' => $shelf, 'volumeId' => $volumeId, 'volumePosition' => $volumePosition); + $params = array_merge($params, $optParams); + $data = $this->__call('moveVolume', array($params)); + return $data; + } + } + + /** + * The "volumes" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $volumes = $booksService->volumes; + * + */ + class Google_MylibraryBookshelvesVolumesServiceResource extends Google_ServiceResource { + + + /** + * Gets volume information for volumes on a bookshelf. (volumes.list) + * + * @param string $shelf The bookshelf ID or name retrieve volumes for. + * @param array $optParams Optional parameters. + * + * @opt_param string projection Restrict information returned to a set of selected fields. + * @opt_param string country ISO-3166-1 code to override the IP-based location. + * @opt_param bool showPreorders Set to true to show pre-ordered books. Defaults to false. + * @opt_param string maxResults Maximum number of results to return + * @opt_param string q Full-text search query string in this bookshelf. + * @opt_param string source String to identify the originator of this request. + * @opt_param string startIndex Index of the first element to return (starts at 0) + * @return Google_Volumes + */ + public function listMylibraryBookshelvesVolumes($shelf, $optParams = array()) { + $params = array('shelf' => $shelf); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Volumes($data); + } else { + return $data; + } + } + } + /** + * The "readingpositions" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $readingpositions = $booksService->readingpositions; + * + */ + class Google_MylibraryReadingpositionsServiceResource extends Google_ServiceResource { + + + /** + * Sets my reading position information for a volume. (readingpositions.setPosition) + * + * @param string $volumeId ID of volume for which to update the reading position. + * @param string $timestamp RFC 3339 UTC format timestamp associated with this reading position. + * @param string $position Position string for the new volume reading position. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @opt_param string contentVersion Volume content version for which this reading position applies. + * @opt_param string action Action that caused this reading position to be set. + */ + public function setPosition($volumeId, $timestamp, $position, $optParams = array()) { + $params = array('volumeId' => $volumeId, 'timestamp' => $timestamp, 'position' => $position); + $params = array_merge($params, $optParams); + $data = $this->__call('setPosition', array($params)); + return $data; + } + /** + * Retrieves my reading position information for a volume. (readingpositions.get) + * + * @param string $volumeId ID of volume for which to retrieve a reading position. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @opt_param string contentVersion Volume content version for which this reading position is requested. + * @return Google_ReadingPosition + */ + public function get($volumeId, $optParams = array()) { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_ReadingPosition($data); + } else { + return $data; + } + } + } + /** + * The "annotations" collection of methods. + * Typical usage is: + * + * $booksService = new Google_BooksService(...); + * $annotations = $booksService->annotations; + * + */ + class Google_MylibraryAnnotationsServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new annotation. (annotations.insert) + * + * @param Google_Annotation $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @return Google_Annotation + */ + public function insert(Google_Annotation $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Annotation($data); + } else { + return $data; + } + } + /** + * Gets an annotation by its ID. (annotations.get) + * + * @param string $annotationId The ID for the annotation to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @return Google_Annotation + */ + public function get($annotationId, $optParams = array()) { + $params = array('annotationId' => $annotationId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Annotation($data); + } else { + return $data; + } + } + /** + * Retrieves a list of annotations, possibly filtered. (annotations.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool showDeleted Set to true to return deleted annotations. updatedMin must be in the request to use this. Defaults to false. + * @opt_param string updatedMin RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive). + * @opt_param string updatedMax RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive). + * @opt_param string volumeId The volume to restrict annotations to. + * @opt_param string maxResults Maximum number of results to return + * @opt_param string pageToken The value of the nextToken from the previous page. + * @opt_param string pageIds The page ID(s) for the volume that is being queried. + * @opt_param string contentVersion The content version for the requested volume. + * @opt_param string source String to identify the originator of this request. + * @opt_param string layerId The layer ID to limit annotation by. + * @return Google_Annotations + */ + public function listMylibraryAnnotations($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Annotations($data); + } else { + return $data; + } + } + /** + * Updates an existing annotation. (annotations.update) + * + * @param string $annotationId The ID for the annotation to update. + * @param Google_Annotation $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + * @return Google_Annotation + */ + public function update($annotationId, Google_Annotation $postBody, $optParams = array()) { + $params = array('annotationId' => $annotationId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Annotation($data); + } else { + return $data; + } + } + /** + * Deletes an annotation. (annotations.delete) + * + * @param string $annotationId The ID for the annotation to delete. + * @param array $optParams Optional parameters. + * + * @opt_param string source String to identify the originator of this request. + */ + public function delete($annotationId, $optParams = array()) { + $params = array('annotationId' => $annotationId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Books (v1). + * + *

+ * Lets you search for books and manage your Google Books library. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_BooksService extends Google_Service { + public $layers; + public $layers_annotationData; + public $layers_volumeAnnotations; + public $bookshelves; + public $bookshelves_volumes; + public $myconfig; + public $volumes; + public $volumes_associated; + public $mylibrary_bookshelves; + public $mylibrary_bookshelves_volumes; + public $mylibrary_readingpositions; + public $mylibrary_annotations; + /** + * Constructs the internal representation of the Books service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'books/v1/'; + $this->version = 'v1'; + $this->serviceName = 'books'; + + $client->addService($this->serviceName, $this->version); + $this->layers = new Google_LayersServiceResource($this, $this->serviceName, 'layers', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "contentVersion": {"type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "200", "format": "uint32"}, "source": {"type": "string", "location": "query"}}, "id": "books.layers.list", "httpMethod": "GET", "path": "volumes/{volumeId}/layersummary", "response": {"$ref": "Layersummaries"}}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"source": {"type": "string", "location": "query"}, "contentVersion": {"type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "summaryId": {"required": true, "type": "string", "location": "path"}}, "id": "books.layers.get", "httpMethod": "GET", "path": "volumes/{volumeId}/layersummary/{summaryId}", "response": {"$ref": "Layersummary"}}}}', true)); + $this->layers_annotationData = new Google_LayersAnnotationDataServiceResource($this, $this->serviceName, 'annotationData', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"scale": {"minimum": "0", "type": "integer", "location": "query", "format": "int32"}, "updatedMax": {"type": "string", "location": "query"}, "locale": {"type": "string", "location": "query"}, "h": {"type": "integer", "location": "query", "format": "int32"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "200", "format": "uint32"}, "annotationDataId": {"repeated": true, "type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "contentVersion": {"required": true, "type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "w": {"type": "integer", "location": "query", "format": "int32"}, "layerId": {"required": true, "type": "string", "location": "path"}, "updatedMin": {"type": "string", "location": "query"}}, "id": "books.layers.annotationData.list", "httpMethod": "GET", "path": "volumes/{volumeId}/layers/{layerId}/data", "response": {"$ref": "Annotationsdata"}}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"scale": {"minimum": "0", "type": "integer", "location": "query", "format": "int32"}, "locale": {"type": "string", "location": "query"}, "h": {"type": "integer", "location": "query", "format": "int32"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "annotationDataId": {"required": true, "type": "string", "location": "path"}, "source": {"type": "string", "location": "query"}, "contentVersion": {"required": true, "type": "string", "location": "query"}, "w": {"type": "integer", "location": "query", "format": "int32"}, "layerId": {"required": true, "type": "string", "location": "path"}}, "id": "books.layers.annotationData.get", "httpMethod": "GET", "path": "volumes/{volumeId}/layers/{layerId}/data/{annotationDataId}", "response": {"$ref": "Annotationdata"}}}}', true)); + $this->layers_volumeAnnotations = new Google_LayersVolumeAnnotationsServiceResource($this, $this->serviceName, 'volumeAnnotations', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"showDeleted": {"type": "boolean", "location": "query"}, "endPosition": {"type": "string", "location": "query"}, "endOffset": {"type": "string", "location": "query"}, "locale": {"type": "string", "location": "query"}, "updatedMin": {"type": "string", "location": "query"}, "updatedMax": {"type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "200", "format": "uint32"}, "pageToken": {"type": "string", "location": "query"}, "contentVersion": {"required": true, "type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "startOffset": {"type": "string", "location": "query"}, "layerId": {"required": true, "type": "string", "location": "path"}, "startPosition": {"type": "string", "location": "query"}}, "id": "books.layers.volumeAnnotations.list", "httpMethod": "GET", "path": "volumes/{volumeId}/layers/{layerId}", "response": {"$ref": "Volumeannotations"}}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"locale": {"type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "annotationId": {"required": true, "type": "string", "location": "path"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "layerId": {"required": true, "type": "string", "location": "path"}}, "id": "books.layers.volumeAnnotations.get", "httpMethod": "GET", "path": "volumes/{volumeId}/layers/{layerId}/annotations/{annotationId}", "response": {"$ref": "Volumeannotation"}}}}', true)); + $this->bookshelves = new Google_BookshelvesServiceResource($this, $this->serviceName, 'bookshelves', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"source": {"type": "string", "location": "query"}, "userId": {"required": true, "type": "string", "location": "path"}}, "id": "books.bookshelves.list", "httpMethod": "GET", "path": "users/{userId}/bookshelves", "response": {"$ref": "Bookshelves"}}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"shelf": {"required": true, "type": "string", "location": "path"}, "userId": {"required": true, "type": "string", "location": "path"}, "source": {"type": "string", "location": "query"}}, "id": "books.bookshelves.get", "httpMethod": "GET", "path": "users/{userId}/bookshelves/{shelf}", "response": {"$ref": "Bookshelf"}}}}', true)); + $this->bookshelves_volumes = new Google_BookshelvesVolumesServiceResource($this, $this->serviceName, 'volumes', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"shelf": {"required": true, "type": "string", "location": "path"}, "showPreorders": {"type": "boolean", "location": "query"}, "maxResults": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "source": {"type": "string", "location": "query"}, "startIndex": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "userId": {"required": true, "type": "string", "location": "path"}}, "id": "books.bookshelves.volumes.list", "httpMethod": "GET", "path": "users/{userId}/bookshelves/{shelf}/volumes", "response": {"$ref": "Volumes"}}}}', true)); + $this->myconfig = new Google_MyconfigServiceResource($this, $this->serviceName, 'myconfig', json_decode('{"methods": {"releaseDownloadAccess": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"locale": {"type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "cpksver": {"required": true, "type": "string", "location": "query"}, "volumeIds": {"repeated": true, "required": true, "type": "string", "location": "query"}}, "id": "books.myconfig.releaseDownloadAccess", "httpMethod": "POST", "path": "myconfig/releaseDownloadAccess", "response": {"$ref": "DownloadAccesses"}}, "requestAccess": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"locale": {"type": "string", "location": "query"}, "nonce": {"required": true, "type": "string", "location": "query"}, "cpksver": {"required": true, "type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "query"}, "source": {"required": true, "type": "string", "location": "query"}}, "id": "books.myconfig.requestAccess", "httpMethod": "POST", "path": "myconfig/requestAccess", "response": {"$ref": "RequestAccess"}}, "syncVolumeLicenses": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"nonce": {"required": true, "type": "string", "location": "query"}, "locale": {"type": "string", "location": "query"}, "showPreorders": {"type": "boolean", "location": "query"}, "cpksver": {"required": true, "type": "string", "location": "query"}, "source": {"required": true, "type": "string", "location": "query"}, "volumeIds": {"repeated": true, "type": "string", "location": "query"}}, "id": "books.myconfig.syncVolumeLicenses", "httpMethod": "POST", "path": "myconfig/syncVolumeLicenses", "response": {"$ref": "Volumes"}}}}', true)); + $this->volumes = new Google_VolumesServiceResource($this, $this->serviceName, 'volumes', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"orderBy": {"enum": ["newest", "relevance"], "type": "string", "location": "query"}, "q": {"required": true, "type": "string", "location": "query"}, "projection": {"enum": ["full", "lite"], "type": "string", "location": "query"}, "libraryRestrict": {"enum": ["my-library", "no-restrict"], "type": "string", "location": "query"}, "langRestrict": {"type": "string", "location": "query"}, "showPreorders": {"type": "boolean", "location": "query"}, "printType": {"enum": ["all", "books", "magazines"], "type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "40", "format": "uint32"}, "filter": {"enum": ["ebooks", "free-ebooks", "full", "paid-ebooks", "partial"], "type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "startIndex": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "download": {"enum": ["epub"], "type": "string", "location": "query"}, "partner": {"type": "string", "location": "query"}}, "id": "books.volumes.list", "httpMethod": "GET", "path": "volumes", "response": {"$ref": "Volumes"}}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"partner": {"type": "string", "location": "query"}, "country": {"type": "string", "location": "query"}, "projection": {"enum": ["full", "lite"], "type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "source": {"type": "string", "location": "query"}}, "id": "books.volumes.get", "httpMethod": "GET", "path": "volumes/{volumeId}", "response": {"$ref": "Volume"}}}}', true)); + $this->volumes_associated = new Google_VolumesAssociatedServiceResource($this, $this->serviceName, 'associated', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"projection": {"enum": ["full", "lite"], "type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "40", "format": "uint32"}, "filter": {"enum": ["ebooks", "free-ebooks", "full", "paid-ebooks", "partial"], "type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "startIndex": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "association": {"enum": ["complementary"], "type": "string", "location": "query"}}, "id": "books.volumes.associated.list", "httpMethod": "GET", "path": "volumes/{volumeId}/associated", "response": {"$ref": "Volumes"}}}}', true)); + $this->mylibrary_bookshelves = new Google_MylibraryBookshelvesServiceResource($this, $this->serviceName, 'bookshelves', json_decode('{"methods": {"removeVolume": {"scopes": ["https://www.googleapis.com/auth/books"], "path": "mylibrary/bookshelves/{shelf}/removeVolume", "id": "books.mylibrary.bookshelves.removeVolume", "parameters": {"shelf": {"required": true, "type": "string", "location": "path"}, "volumeId": {"required": true, "type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}}, "httpMethod": "POST"}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"shelf": {"required": true, "type": "string", "location": "path"}, "source": {"type": "string", "location": "query"}}, "id": "books.mylibrary.bookshelves.get", "httpMethod": "GET", "path": "mylibrary/bookshelves/{shelf}", "response": {"$ref": "Bookshelf"}}, "clearVolumes": {"scopes": ["https://www.googleapis.com/auth/books"], "path": "mylibrary/bookshelves/{shelf}/clearVolumes", "id": "books.mylibrary.bookshelves.clearVolumes", "parameters": {"shelf": {"required": true, "type": "string", "location": "path"}, "source": {"type": "string", "location": "query"}}, "httpMethod": "POST"}, "list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"source": {"type": "string", "location": "query"}}, "response": {"$ref": "Bookshelves"}, "httpMethod": "GET", "path": "mylibrary/bookshelves", "id": "books.mylibrary.bookshelves.list"}, "addVolume": {"scopes": ["https://www.googleapis.com/auth/books"], "path": "mylibrary/bookshelves/{shelf}/addVolume", "id": "books.mylibrary.bookshelves.addVolume", "parameters": {"shelf": {"required": true, "type": "string", "location": "path"}, "volumeId": {"required": true, "type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}}, "httpMethod": "POST"}, "moveVolume": {"scopes": ["https://www.googleapis.com/auth/books"], "path": "mylibrary/bookshelves/{shelf}/moveVolume", "id": "books.mylibrary.bookshelves.moveVolume", "parameters": {"source": {"type": "string", "location": "query"}, "volumePosition": {"required": true, "type": "integer", "location": "query", "format": "int32"}, "volumeId": {"required": true, "type": "string", "location": "query"}, "shelf": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "POST"}}}', true)); + $this->mylibrary_bookshelves_volumes = new Google_MylibraryBookshelvesVolumesServiceResource($this, $this->serviceName, 'volumes', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"projection": {"enum": ["full", "lite"], "type": "string", "location": "query"}, "country": {"type": "string", "location": "query"}, "showPreorders": {"type": "boolean", "location": "query"}, "maxResults": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "q": {"type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "startIndex": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "shelf": {"required": true, "type": "string", "location": "path"}}, "id": "books.mylibrary.bookshelves.volumes.list", "httpMethod": "GET", "path": "mylibrary/bookshelves/{shelf}/volumes", "response": {"$ref": "Volumes"}}}}', true)); + $this->mylibrary_readingpositions = new Google_MylibraryReadingpositionsServiceResource($this, $this->serviceName, 'readingpositions', json_decode('{"methods": {"setPosition": {"scopes": ["https://www.googleapis.com/auth/books"], "path": "mylibrary/readingpositions/{volumeId}/setPosition", "id": "books.mylibrary.readingpositions.setPosition", "parameters": {"timestamp": {"required": true, "type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "path"}, "source": {"type": "string", "location": "query"}, "contentVersion": {"type": "string", "location": "query"}, "action": {"enum": ["bookmark", "chapter", "next-page", "prev-page", "scroll", "search"], "type": "string", "location": "query"}, "position": {"required": true, "type": "string", "location": "query"}}, "httpMethod": "POST"}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"source": {"type": "string", "location": "query"}, "contentVersion": {"type": "string", "location": "query"}, "volumeId": {"required": true, "type": "string", "location": "path"}}, "id": "books.mylibrary.readingpositions.get", "httpMethod": "GET", "path": "mylibrary/readingpositions/{volumeId}", "response": {"$ref": "ReadingPosition"}}}}', true)); + $this->mylibrary_annotations = new Google_MylibraryAnnotationsServiceResource($this, $this->serviceName, 'annotations', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"source": {"type": "string", "location": "query"}}, "request": {"$ref": "Annotation"}, "response": {"$ref": "Annotation"}, "httpMethod": "POST", "path": "mylibrary/annotations", "id": "books.mylibrary.annotations.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"source": {"type": "string", "location": "query"}, "annotationId": {"required": true, "type": "string", "location": "path"}}, "id": "books.mylibrary.annotations.get", "httpMethod": "GET", "path": "mylibrary/annotations/{annotationId}", "response": {"$ref": "Annotation"}}, "list": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"showDeleted": {"type": "boolean", "location": "query"}, "updatedMin": {"type": "string", "location": "query"}, "updatedMax": {"type": "string", "location": "query"}, "volumeId": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "40", "format": "uint32"}, "pageToken": {"type": "string", "location": "query"}, "pageIds": {"repeated": true, "type": "string", "location": "query"}, "contentVersion": {"type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "layerId": {"type": "string", "location": "query"}}, "response": {"$ref": "Annotations"}, "httpMethod": "GET", "path": "mylibrary/annotations", "id": "books.mylibrary.annotations.list"}, "update": {"scopes": ["https://www.googleapis.com/auth/books"], "parameters": {"source": {"type": "string", "location": "query"}, "annotationId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Annotation"}, "response": {"$ref": "Annotation"}, "httpMethod": "PUT", "path": "mylibrary/annotations/{annotationId}", "id": "books.mylibrary.annotations.update"}, "delete": {"scopes": ["https://www.googleapis.com/auth/books"], "path": "mylibrary/annotations/{annotationId}", "id": "books.mylibrary.annotations.delete", "parameters": {"source": {"type": "string", "location": "query"}, "annotationId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_Annotation extends Google_Model { + public $kind; + public $updated; + public $created; + public $deleted; + public $beforeSelectedText; + protected $__currentVersionRangesType = 'Google_AnnotationCurrentVersionRanges'; + protected $__currentVersionRangesDataType = ''; + public $currentVersionRanges; + public $afterSelectedText; + protected $__clientVersionRangesType = 'Google_AnnotationClientVersionRanges'; + protected $__clientVersionRangesDataType = ''; + public $clientVersionRanges; + public $volumeId; + public $pageIds; + public $layerId; + public $selectedText; + public $highlightStyle; + public $data; + public $id; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setDeleted($deleted) { + $this->deleted = $deleted; + } + public function getDeleted() { + return $this->deleted; + } + public function setBeforeSelectedText($beforeSelectedText) { + $this->beforeSelectedText = $beforeSelectedText; + } + public function getBeforeSelectedText() { + return $this->beforeSelectedText; + } + public function setCurrentVersionRanges(Google_AnnotationCurrentVersionRanges $currentVersionRanges) { + $this->currentVersionRanges = $currentVersionRanges; + } + public function getCurrentVersionRanges() { + return $this->currentVersionRanges; + } + public function setAfterSelectedText($afterSelectedText) { + $this->afterSelectedText = $afterSelectedText; + } + public function getAfterSelectedText() { + return $this->afterSelectedText; + } + public function setClientVersionRanges(Google_AnnotationClientVersionRanges $clientVersionRanges) { + $this->clientVersionRanges = $clientVersionRanges; + } + public function getClientVersionRanges() { + return $this->clientVersionRanges; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setPageIds(/* array(Google_string) */ $pageIds) { + $this->assertIsArray($pageIds, 'Google_string', __METHOD__); + $this->pageIds = $pageIds; + } + public function getPageIds() { + return $this->pageIds; + } + public function setLayerId($layerId) { + $this->layerId = $layerId; + } + public function getLayerId() { + return $this->layerId; + } + public function setSelectedText($selectedText) { + $this->selectedText = $selectedText; + } + public function getSelectedText() { + return $this->selectedText; + } + public function setHighlightStyle($highlightStyle) { + $this->highlightStyle = $highlightStyle; + } + public function getHighlightStyle() { + return $this->highlightStyle; + } + public function setData($data) { + $this->data = $data; + } + public function getData() { + return $this->data; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_AnnotationClientVersionRanges extends Google_Model { + public $contentVersion; + protected $__gbTextRangeType = 'Google_BooksAnnotationsRange'; + protected $__gbTextRangeDataType = ''; + public $gbTextRange; + protected $__cfiRangeType = 'Google_BooksAnnotationsRange'; + protected $__cfiRangeDataType = ''; + public $cfiRange; + protected $__gbImageRangeType = 'Google_BooksAnnotationsRange'; + protected $__gbImageRangeDataType = ''; + public $gbImageRange; + public function setContentVersion($contentVersion) { + $this->contentVersion = $contentVersion; + } + public function getContentVersion() { + return $this->contentVersion; + } + public function setGbTextRange(Google_BooksAnnotationsRange $gbTextRange) { + $this->gbTextRange = $gbTextRange; + } + public function getGbTextRange() { + return $this->gbTextRange; + } + public function setCfiRange(Google_BooksAnnotationsRange $cfiRange) { + $this->cfiRange = $cfiRange; + } + public function getCfiRange() { + return $this->cfiRange; + } + public function setGbImageRange(Google_BooksAnnotationsRange $gbImageRange) { + $this->gbImageRange = $gbImageRange; + } + public function getGbImageRange() { + return $this->gbImageRange; + } +} + +class Google_AnnotationCurrentVersionRanges extends Google_Model { + public $contentVersion; + protected $__gbTextRangeType = 'Google_BooksAnnotationsRange'; + protected $__gbTextRangeDataType = ''; + public $gbTextRange; + protected $__cfiRangeType = 'Google_BooksAnnotationsRange'; + protected $__cfiRangeDataType = ''; + public $cfiRange; + protected $__gbImageRangeType = 'Google_BooksAnnotationsRange'; + protected $__gbImageRangeDataType = ''; + public $gbImageRange; + public function setContentVersion($contentVersion) { + $this->contentVersion = $contentVersion; + } + public function getContentVersion() { + return $this->contentVersion; + } + public function setGbTextRange(Google_BooksAnnotationsRange $gbTextRange) { + $this->gbTextRange = $gbTextRange; + } + public function getGbTextRange() { + return $this->gbTextRange; + } + public function setCfiRange(Google_BooksAnnotationsRange $cfiRange) { + $this->cfiRange = $cfiRange; + } + public function getCfiRange() { + return $this->cfiRange; + } + public function setGbImageRange(Google_BooksAnnotationsRange $gbImageRange) { + $this->gbImageRange = $gbImageRange; + } + public function getGbImageRange() { + return $this->gbImageRange; + } +} + +class Google_Annotationdata extends Google_Model { + public $annotationType; + public $kind; + public $updated; + public $volumeId; + public $encoded_data; + public $layerId; + protected $__dataType = 'Google_BooksLayerGeoData'; + protected $__dataDataType = ''; + public $data; + public $id; + public $selfLink; + public function setAnnotationType($annotationType) { + $this->annotationType = $annotationType; + } + public function getAnnotationType() { + return $this->annotationType; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setEncoded_data($encoded_data) { + $this->encoded_data = $encoded_data; + } + public function getEncoded_data() { + return $this->encoded_data; + } + public function setLayerId($layerId) { + $this->layerId = $layerId; + } + public function getLayerId() { + return $this->layerId; + } + public function setData(Google_BooksLayerGeoData $data) { + $this->data = $data; + } + public function getData() { + return $this->data; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Annotations extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Annotation'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Annotation) */ $items) { + $this->assertIsArray($items, 'Google_Annotation', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} + +class Google_Annotationsdata extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Annotationdata'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Annotationdata) */ $items) { + $this->assertIsArray($items, 'Google_Annotationdata', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} + +class Google_BooksAnnotationsRange extends Google_Model { + public $startPosition; + public $endPosition; + public $startOffset; + public $endOffset; + public function setStartPosition($startPosition) { + $this->startPosition = $startPosition; + } + public function getStartPosition() { + return $this->startPosition; + } + public function setEndPosition($endPosition) { + $this->endPosition = $endPosition; + } + public function getEndPosition() { + return $this->endPosition; + } + public function setStartOffset($startOffset) { + $this->startOffset = $startOffset; + } + public function getStartOffset() { + return $this->startOffset; + } + public function setEndOffset($endOffset) { + $this->endOffset = $endOffset; + } + public function getEndOffset() { + return $this->endOffset; + } +} + +class Google_BooksLayerGeoData extends Google_Model { + protected $__geoType = 'Google_BooksLayerGeoDataGeo'; + protected $__geoDataType = ''; + public $geo; + protected $__commonType = 'Google_BooksLayerGeoDataCommon'; + protected $__commonDataType = ''; + public $common; + public function setGeo(Google_BooksLayerGeoDataGeo $geo) { + $this->geo = $geo; + } + public function getGeo() { + return $this->geo; + } + public function setCommon(Google_BooksLayerGeoDataCommon $common) { + $this->common = $common; + } + public function getCommon() { + return $this->common; + } +} + +class Google_BooksLayerGeoDataCommon extends Google_Model { + public $lang; + public $previewImageUrl; + public $snippet; + public $snippetUrl; + public function setLang($lang) { + $this->lang = $lang; + } + public function getLang() { + return $this->lang; + } + public function setPreviewImageUrl($previewImageUrl) { + $this->previewImageUrl = $previewImageUrl; + } + public function getPreviewImageUrl() { + return $this->previewImageUrl; + } + public function setSnippet($snippet) { + $this->snippet = $snippet; + } + public function getSnippet() { + return $this->snippet; + } + public function setSnippetUrl($snippetUrl) { + $this->snippetUrl = $snippetUrl; + } + public function getSnippetUrl() { + return $this->snippetUrl; + } +} + +class Google_BooksLayerGeoDataGeo extends Google_Model { + public $countryCode; + public $title; + public $zoom; + public $longitude; + public $mapType; + public $latitude; + protected $__boundaryType = 'Google_BooksLayerGeoDataGeoBoundary'; + protected $__boundaryDataType = 'array'; + public $boundary; + protected $__viewportType = 'Google_BooksLayerGeoDataGeoViewport'; + protected $__viewportDataType = ''; + public $viewport; + public $cachePolicy; + public function setCountryCode($countryCode) { + $this->countryCode = $countryCode; + } + public function getCountryCode() { + return $this->countryCode; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setZoom($zoom) { + $this->zoom = $zoom; + } + public function getZoom() { + return $this->zoom; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } + public function setMapType($mapType) { + $this->mapType = $mapType; + } + public function getMapType() { + return $this->mapType; + } + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setBoundary(/* array(Google_BooksLayerGeoDataGeoBoundary) */ $boundary) { + $this->assertIsArray($boundary, 'Google_BooksLayerGeoDataGeoBoundary', __METHOD__); + $this->boundary = $boundary; + } + public function getBoundary() { + return $this->boundary; + } + public function setViewport(Google_BooksLayerGeoDataGeoViewport $viewport) { + $this->viewport = $viewport; + } + public function getViewport() { + return $this->viewport; + } + public function setCachePolicy($cachePolicy) { + $this->cachePolicy = $cachePolicy; + } + public function getCachePolicy() { + return $this->cachePolicy; + } +} + +class Google_BooksLayerGeoDataGeoBoundary extends Google_Model { + public $latitude; + public $longitude; + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } +} + +class Google_BooksLayerGeoDataGeoViewport extends Google_Model { + protected $__loType = 'Google_BooksLayerGeoDataGeoViewportLo'; + protected $__loDataType = ''; + public $lo; + protected $__hiType = 'Google_BooksLayerGeoDataGeoViewportHi'; + protected $__hiDataType = ''; + public $hi; + public function setLo(Google_BooksLayerGeoDataGeoViewportLo $lo) { + $this->lo = $lo; + } + public function getLo() { + return $this->lo; + } + public function setHi(Google_BooksLayerGeoDataGeoViewportHi $hi) { + $this->hi = $hi; + } + public function getHi() { + return $this->hi; + } +} + +class Google_BooksLayerGeoDataGeoViewportHi extends Google_Model { + public $latitude; + public $longitude; + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } +} + +class Google_BooksLayerGeoDataGeoViewportLo extends Google_Model { + public $latitude; + public $longitude; + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } +} + +class Google_Bookshelf extends Google_Model { + public $kind; + public $description; + public $created; + public $volumeCount; + public $title; + public $updated; + public $access; + public $volumesLastUpdated; + public $id; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setVolumeCount($volumeCount) { + $this->volumeCount = $volumeCount; + } + public function getVolumeCount() { + return $this->volumeCount; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setAccess($access) { + $this->access = $access; + } + public function getAccess() { + return $this->access; + } + public function setVolumesLastUpdated($volumesLastUpdated) { + $this->volumesLastUpdated = $volumesLastUpdated; + } + public function getVolumesLastUpdated() { + return $this->volumesLastUpdated; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Bookshelves extends Google_Model { + protected $__itemsType = 'Google_Bookshelf'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Bookshelf) */ $items) { + $this->assertIsArray($items, 'Google_Bookshelf', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_ConcurrentAccessRestriction extends Google_Model { + public $nonce; + public $kind; + public $restricted; + public $volumeId; + public $maxConcurrentDevices; + public $deviceAllowed; + public $source; + public $timeWindowSeconds; + public $signature; + public $reasonCode; + public $message; + public function setNonce($nonce) { + $this->nonce = $nonce; + } + public function getNonce() { + return $this->nonce; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRestricted($restricted) { + $this->restricted = $restricted; + } + public function getRestricted() { + return $this->restricted; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setMaxConcurrentDevices($maxConcurrentDevices) { + $this->maxConcurrentDevices = $maxConcurrentDevices; + } + public function getMaxConcurrentDevices() { + return $this->maxConcurrentDevices; + } + public function setDeviceAllowed($deviceAllowed) { + $this->deviceAllowed = $deviceAllowed; + } + public function getDeviceAllowed() { + return $this->deviceAllowed; + } + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setTimeWindowSeconds($timeWindowSeconds) { + $this->timeWindowSeconds = $timeWindowSeconds; + } + public function getTimeWindowSeconds() { + return $this->timeWindowSeconds; + } + public function setSignature($signature) { + $this->signature = $signature; + } + public function getSignature() { + return $this->signature; + } + public function setReasonCode($reasonCode) { + $this->reasonCode = $reasonCode; + } + public function getReasonCode() { + return $this->reasonCode; + } + public function setMessage($message) { + $this->message = $message; + } + public function getMessage() { + return $this->message; + } +} + +class Google_DownloadAccessRestriction extends Google_Model { + public $nonce; + public $kind; + public $justAcquired; + public $maxDownloadDevices; + public $downloadsAcquired; + public $signature; + public $volumeId; + public $deviceAllowed; + public $source; + public $restricted; + public $reasonCode; + public $message; + public function setNonce($nonce) { + $this->nonce = $nonce; + } + public function getNonce() { + return $this->nonce; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setJustAcquired($justAcquired) { + $this->justAcquired = $justAcquired; + } + public function getJustAcquired() { + return $this->justAcquired; + } + public function setMaxDownloadDevices($maxDownloadDevices) { + $this->maxDownloadDevices = $maxDownloadDevices; + } + public function getMaxDownloadDevices() { + return $this->maxDownloadDevices; + } + public function setDownloadsAcquired($downloadsAcquired) { + $this->downloadsAcquired = $downloadsAcquired; + } + public function getDownloadsAcquired() { + return $this->downloadsAcquired; + } + public function setSignature($signature) { + $this->signature = $signature; + } + public function getSignature() { + return $this->signature; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setDeviceAllowed($deviceAllowed) { + $this->deviceAllowed = $deviceAllowed; + } + public function getDeviceAllowed() { + return $this->deviceAllowed; + } + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setRestricted($restricted) { + $this->restricted = $restricted; + } + public function getRestricted() { + return $this->restricted; + } + public function setReasonCode($reasonCode) { + $this->reasonCode = $reasonCode; + } + public function getReasonCode() { + return $this->reasonCode; + } + public function setMessage($message) { + $this->message = $message; + } + public function getMessage() { + return $this->message; + } +} + +class Google_DownloadAccesses extends Google_Model { + protected $__downloadAccessListType = 'Google_DownloadAccessRestriction'; + protected $__downloadAccessListDataType = 'array'; + public $downloadAccessList; + public $kind; + public function setDownloadAccessList(/* array(Google_DownloadAccessRestriction) */ $downloadAccessList) { + $this->assertIsArray($downloadAccessList, 'Google_DownloadAccessRestriction', __METHOD__); + $this->downloadAccessList = $downloadAccessList; + } + public function getDownloadAccessList() { + return $this->downloadAccessList; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Layersummaries extends Google_Model { + public $totalItems; + protected $__itemsType = 'Google_Layersummary'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setItems(/* array(Google_Layersummary) */ $items) { + $this->assertIsArray($items, 'Google_Layersummary', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Layersummary extends Google_Model { + public $kind; + public $annotationCount; + public $dataCount; + public $annotationsLink; + public $updated; + public $volumeId; + public $id; + public $annotationTypes; + public $contentVersion; + public $layerId; + public $annotationsDataLink; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAnnotationCount($annotationCount) { + $this->annotationCount = $annotationCount; + } + public function getAnnotationCount() { + return $this->annotationCount; + } + public function setDataCount($dataCount) { + $this->dataCount = $dataCount; + } + public function getDataCount() { + return $this->dataCount; + } + public function setAnnotationsLink($annotationsLink) { + $this->annotationsLink = $annotationsLink; + } + public function getAnnotationsLink() { + return $this->annotationsLink; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAnnotationTypes(/* array(Google_string) */ $annotationTypes) { + $this->assertIsArray($annotationTypes, 'Google_string', __METHOD__); + $this->annotationTypes = $annotationTypes; + } + public function getAnnotationTypes() { + return $this->annotationTypes; + } + public function setContentVersion($contentVersion) { + $this->contentVersion = $contentVersion; + } + public function getContentVersion() { + return $this->contentVersion; + } + public function setLayerId($layerId) { + $this->layerId = $layerId; + } + public function getLayerId() { + return $this->layerId; + } + public function setAnnotationsDataLink($annotationsDataLink) { + $this->annotationsDataLink = $annotationsDataLink; + } + public function getAnnotationsDataLink() { + return $this->annotationsDataLink; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ReadingPosition extends Google_Model { + public $kind; + public $gbImagePosition; + public $epubCfiPosition; + public $updated; + public $volumeId; + public $pdfPosition; + public $gbTextPosition; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setGbImagePosition($gbImagePosition) { + $this->gbImagePosition = $gbImagePosition; + } + public function getGbImagePosition() { + return $this->gbImagePosition; + } + public function setEpubCfiPosition($epubCfiPosition) { + $this->epubCfiPosition = $epubCfiPosition; + } + public function getEpubCfiPosition() { + return $this->epubCfiPosition; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setPdfPosition($pdfPosition) { + $this->pdfPosition = $pdfPosition; + } + public function getPdfPosition() { + return $this->pdfPosition; + } + public function setGbTextPosition($gbTextPosition) { + $this->gbTextPosition = $gbTextPosition; + } + public function getGbTextPosition() { + return $this->gbTextPosition; + } +} + +class Google_RequestAccess extends Google_Model { + protected $__downloadAccessType = 'Google_DownloadAccessRestriction'; + protected $__downloadAccessDataType = ''; + public $downloadAccess; + public $kind; + protected $__concurrentAccessType = 'Google_ConcurrentAccessRestriction'; + protected $__concurrentAccessDataType = ''; + public $concurrentAccess; + public function setDownloadAccess(Google_DownloadAccessRestriction $downloadAccess) { + $this->downloadAccess = $downloadAccess; + } + public function getDownloadAccess() { + return $this->downloadAccess; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setConcurrentAccess(Google_ConcurrentAccessRestriction $concurrentAccess) { + $this->concurrentAccess = $concurrentAccess; + } + public function getConcurrentAccess() { + return $this->concurrentAccess; + } +} + +class Google_Review extends Google_Model { + public $rating; + public $kind; + protected $__authorType = 'Google_ReviewAuthor'; + protected $__authorDataType = ''; + public $author; + public $title; + public $volumeId; + public $content; + protected $__sourceType = 'Google_ReviewSource'; + protected $__sourceDataType = ''; + public $source; + public $date; + public $type; + public $fullTextUrl; + public function setRating($rating) { + $this->rating = $rating; + } + public function getRating() { + return $this->rating; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAuthor(Google_ReviewAuthor $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setSource(Google_ReviewSource $source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setDate($date) { + $this->date = $date; + } + public function getDate() { + return $this->date; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setFullTextUrl($fullTextUrl) { + $this->fullTextUrl = $fullTextUrl; + } + public function getFullTextUrl() { + return $this->fullTextUrl; + } +} + +class Google_ReviewAuthor extends Google_Model { + public $displayName; + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } +} + +class Google_ReviewSource extends Google_Model { + public $extraDescription; + public $url; + public $description; + public function setExtraDescription($extraDescription) { + $this->extraDescription = $extraDescription; + } + public function getExtraDescription() { + return $this->extraDescription; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } +} + +class Google_Volume extends Google_Model { + public $kind; + protected $__accessInfoType = 'Google_VolumeAccessInfo'; + protected $__accessInfoDataType = ''; + public $accessInfo; + protected $__searchInfoType = 'Google_VolumeSearchInfo'; + protected $__searchInfoDataType = ''; + public $searchInfo; + protected $__saleInfoType = 'Google_VolumeSaleInfo'; + protected $__saleInfoDataType = ''; + public $saleInfo; + public $etag; + protected $__userInfoType = 'Google_VolumeUserInfo'; + protected $__userInfoDataType = ''; + public $userInfo; + protected $__volumeInfoType = 'Google_VolumeVolumeInfo'; + protected $__volumeInfoDataType = ''; + public $volumeInfo; + public $id; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAccessInfo(Google_VolumeAccessInfo $accessInfo) { + $this->accessInfo = $accessInfo; + } + public function getAccessInfo() { + return $this->accessInfo; + } + public function setSearchInfo(Google_VolumeSearchInfo $searchInfo) { + $this->searchInfo = $searchInfo; + } + public function getSearchInfo() { + return $this->searchInfo; + } + public function setSaleInfo(Google_VolumeSaleInfo $saleInfo) { + $this->saleInfo = $saleInfo; + } + public function getSaleInfo() { + return $this->saleInfo; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setUserInfo(Google_VolumeUserInfo $userInfo) { + $this->userInfo = $userInfo; + } + public function getUserInfo() { + return $this->userInfo; + } + public function setVolumeInfo(Google_VolumeVolumeInfo $volumeInfo) { + $this->volumeInfo = $volumeInfo; + } + public function getVolumeInfo() { + return $this->volumeInfo; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_VolumeAccessInfo extends Google_Model { + public $webReaderLink; + public $publicDomain; + public $embeddable; + protected $__downloadAccessType = 'Google_DownloadAccessRestriction'; + protected $__downloadAccessDataType = ''; + public $downloadAccess; + public $country; + public $viewOrderUrl; + public $textToSpeechPermission; + protected $__pdfType = 'Google_VolumeAccessInfoPdf'; + protected $__pdfDataType = ''; + public $pdf; + public $viewability; + protected $__epubType = 'Google_VolumeAccessInfoEpub'; + protected $__epubDataType = ''; + public $epub; + public $accessViewStatus; + public function setWebReaderLink($webReaderLink) { + $this->webReaderLink = $webReaderLink; + } + public function getWebReaderLink() { + return $this->webReaderLink; + } + public function setPublicDomain($publicDomain) { + $this->publicDomain = $publicDomain; + } + public function getPublicDomain() { + return $this->publicDomain; + } + public function setEmbeddable($embeddable) { + $this->embeddable = $embeddable; + } + public function getEmbeddable() { + return $this->embeddable; + } + public function setDownloadAccess(Google_DownloadAccessRestriction $downloadAccess) { + $this->downloadAccess = $downloadAccess; + } + public function getDownloadAccess() { + return $this->downloadAccess; + } + public function setCountry($country) { + $this->country = $country; + } + public function getCountry() { + return $this->country; + } + public function setViewOrderUrl($viewOrderUrl) { + $this->viewOrderUrl = $viewOrderUrl; + } + public function getViewOrderUrl() { + return $this->viewOrderUrl; + } + public function setTextToSpeechPermission($textToSpeechPermission) { + $this->textToSpeechPermission = $textToSpeechPermission; + } + public function getTextToSpeechPermission() { + return $this->textToSpeechPermission; + } + public function setPdf(Google_VolumeAccessInfoPdf $pdf) { + $this->pdf = $pdf; + } + public function getPdf() { + return $this->pdf; + } + public function setViewability($viewability) { + $this->viewability = $viewability; + } + public function getViewability() { + return $this->viewability; + } + public function setEpub(Google_VolumeAccessInfoEpub $epub) { + $this->epub = $epub; + } + public function getEpub() { + return $this->epub; + } + public function setAccessViewStatus($accessViewStatus) { + $this->accessViewStatus = $accessViewStatus; + } + public function getAccessViewStatus() { + return $this->accessViewStatus; + } +} + +class Google_VolumeAccessInfoEpub extends Google_Model { + public $isAvailable; + public $downloadLink; + public $acsTokenLink; + public function setIsAvailable($isAvailable) { + $this->isAvailable = $isAvailable; + } + public function getIsAvailable() { + return $this->isAvailable; + } + public function setDownloadLink($downloadLink) { + $this->downloadLink = $downloadLink; + } + public function getDownloadLink() { + return $this->downloadLink; + } + public function setAcsTokenLink($acsTokenLink) { + $this->acsTokenLink = $acsTokenLink; + } + public function getAcsTokenLink() { + return $this->acsTokenLink; + } +} + +class Google_VolumeAccessInfoPdf extends Google_Model { + public $isAvailable; + public $downloadLink; + public $acsTokenLink; + public function setIsAvailable($isAvailable) { + $this->isAvailable = $isAvailable; + } + public function getIsAvailable() { + return $this->isAvailable; + } + public function setDownloadLink($downloadLink) { + $this->downloadLink = $downloadLink; + } + public function getDownloadLink() { + return $this->downloadLink; + } + public function setAcsTokenLink($acsTokenLink) { + $this->acsTokenLink = $acsTokenLink; + } + public function getAcsTokenLink() { + return $this->acsTokenLink; + } +} + +class Google_VolumeSaleInfo extends Google_Model { + public $country; + protected $__retailPriceType = 'Google_VolumeSaleInfoRetailPrice'; + protected $__retailPriceDataType = ''; + public $retailPrice; + public $isEbook; + public $saleability; + public $buyLink; + public $onSaleDate; + protected $__listPriceType = 'Google_VolumeSaleInfoListPrice'; + protected $__listPriceDataType = ''; + public $listPrice; + public function setCountry($country) { + $this->country = $country; + } + public function getCountry() { + return $this->country; + } + public function setRetailPrice(Google_VolumeSaleInfoRetailPrice $retailPrice) { + $this->retailPrice = $retailPrice; + } + public function getRetailPrice() { + return $this->retailPrice; + } + public function setIsEbook($isEbook) { + $this->isEbook = $isEbook; + } + public function getIsEbook() { + return $this->isEbook; + } + public function setSaleability($saleability) { + $this->saleability = $saleability; + } + public function getSaleability() { + return $this->saleability; + } + public function setBuyLink($buyLink) { + $this->buyLink = $buyLink; + } + public function getBuyLink() { + return $this->buyLink; + } + public function setOnSaleDate($onSaleDate) { + $this->onSaleDate = $onSaleDate; + } + public function getOnSaleDate() { + return $this->onSaleDate; + } + public function setListPrice(Google_VolumeSaleInfoListPrice $listPrice) { + $this->listPrice = $listPrice; + } + public function getListPrice() { + return $this->listPrice; + } +} + +class Google_VolumeSaleInfoListPrice extends Google_Model { + public $amount; + public $currencyCode; + public function setAmount($amount) { + $this->amount = $amount; + } + public function getAmount() { + return $this->amount; + } + public function setCurrencyCode($currencyCode) { + $this->currencyCode = $currencyCode; + } + public function getCurrencyCode() { + return $this->currencyCode; + } +} + +class Google_VolumeSaleInfoRetailPrice extends Google_Model { + public $amount; + public $currencyCode; + public function setAmount($amount) { + $this->amount = $amount; + } + public function getAmount() { + return $this->amount; + } + public function setCurrencyCode($currencyCode) { + $this->currencyCode = $currencyCode; + } + public function getCurrencyCode() { + return $this->currencyCode; + } +} + +class Google_VolumeSearchInfo extends Google_Model { + public $textSnippet; + public function setTextSnippet($textSnippet) { + $this->textSnippet = $textSnippet; + } + public function getTextSnippet() { + return $this->textSnippet; + } +} + +class Google_VolumeUserInfo extends Google_Model { + public $isInMyBooks; + public $updated; + protected $__reviewType = 'Google_Review'; + protected $__reviewDataType = ''; + public $review; + public $isPurchased; + protected $__readingPositionType = 'Google_ReadingPosition'; + protected $__readingPositionDataType = ''; + public $readingPosition; + public $isPreordered; + public function setIsInMyBooks($isInMyBooks) { + $this->isInMyBooks = $isInMyBooks; + } + public function getIsInMyBooks() { + return $this->isInMyBooks; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setReview(Google_Review $review) { + $this->review = $review; + } + public function getReview() { + return $this->review; + } + public function setIsPurchased($isPurchased) { + $this->isPurchased = $isPurchased; + } + public function getIsPurchased() { + return $this->isPurchased; + } + public function setReadingPosition(Google_ReadingPosition $readingPosition) { + $this->readingPosition = $readingPosition; + } + public function getReadingPosition() { + return $this->readingPosition; + } + public function setIsPreordered($isPreordered) { + $this->isPreordered = $isPreordered; + } + public function getIsPreordered() { + return $this->isPreordered; + } +} + +class Google_VolumeVolumeInfo extends Google_Model { + public $publisher; + public $subtitle; + public $description; + public $language; + public $pageCount; + protected $__imageLinksType = 'Google_VolumeVolumeInfoImageLinks'; + protected $__imageLinksDataType = ''; + public $imageLinks; + public $publishedDate; + public $previewLink; + public $printType; + public $ratingsCount; + public $mainCategory; + protected $__dimensionsType = 'Google_VolumeVolumeInfoDimensions'; + protected $__dimensionsDataType = ''; + public $dimensions; + public $contentVersion; + protected $__industryIdentifiersType = 'Google_VolumeVolumeInfoIndustryIdentifiers'; + protected $__industryIdentifiersDataType = 'array'; + public $industryIdentifiers; + public $authors; + public $title; + public $canonicalVolumeLink; + public $infoLink; + public $categories; + public $averageRating; + public function setPublisher($publisher) { + $this->publisher = $publisher; + } + public function getPublisher() { + return $this->publisher; + } + public function setSubtitle($subtitle) { + $this->subtitle = $subtitle; + } + public function getSubtitle() { + return $this->subtitle; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } + public function setPageCount($pageCount) { + $this->pageCount = $pageCount; + } + public function getPageCount() { + return $this->pageCount; + } + public function setImageLinks(Google_VolumeVolumeInfoImageLinks $imageLinks) { + $this->imageLinks = $imageLinks; + } + public function getImageLinks() { + return $this->imageLinks; + } + public function setPublishedDate($publishedDate) { + $this->publishedDate = $publishedDate; + } + public function getPublishedDate() { + return $this->publishedDate; + } + public function setPreviewLink($previewLink) { + $this->previewLink = $previewLink; + } + public function getPreviewLink() { + return $this->previewLink; + } + public function setPrintType($printType) { + $this->printType = $printType; + } + public function getPrintType() { + return $this->printType; + } + public function setRatingsCount($ratingsCount) { + $this->ratingsCount = $ratingsCount; + } + public function getRatingsCount() { + return $this->ratingsCount; + } + public function setMainCategory($mainCategory) { + $this->mainCategory = $mainCategory; + } + public function getMainCategory() { + return $this->mainCategory; + } + public function setDimensions(Google_VolumeVolumeInfoDimensions $dimensions) { + $this->dimensions = $dimensions; + } + public function getDimensions() { + return $this->dimensions; + } + public function setContentVersion($contentVersion) { + $this->contentVersion = $contentVersion; + } + public function getContentVersion() { + return $this->contentVersion; + } + public function setIndustryIdentifiers(/* array(Google_VolumeVolumeInfoIndustryIdentifiers) */ $industryIdentifiers) { + $this->assertIsArray($industryIdentifiers, 'Google_VolumeVolumeInfoIndustryIdentifiers', __METHOD__); + $this->industryIdentifiers = $industryIdentifiers; + } + public function getIndustryIdentifiers() { + return $this->industryIdentifiers; + } + public function setAuthors(/* array(Google_string) */ $authors) { + $this->assertIsArray($authors, 'Google_string', __METHOD__); + $this->authors = $authors; + } + public function getAuthors() { + return $this->authors; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setCanonicalVolumeLink($canonicalVolumeLink) { + $this->canonicalVolumeLink = $canonicalVolumeLink; + } + public function getCanonicalVolumeLink() { + return $this->canonicalVolumeLink; + } + public function setInfoLink($infoLink) { + $this->infoLink = $infoLink; + } + public function getInfoLink() { + return $this->infoLink; + } + public function setCategories(/* array(Google_string) */ $categories) { + $this->assertIsArray($categories, 'Google_string', __METHOD__); + $this->categories = $categories; + } + public function getCategories() { + return $this->categories; + } + public function setAverageRating($averageRating) { + $this->averageRating = $averageRating; + } + public function getAverageRating() { + return $this->averageRating; + } +} + +class Google_VolumeVolumeInfoDimensions extends Google_Model { + public $width; + public $thickness; + public $height; + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setThickness($thickness) { + $this->thickness = $thickness; + } + public function getThickness() { + return $this->thickness; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } +} + +class Google_VolumeVolumeInfoImageLinks extends Google_Model { + public $medium; + public $smallThumbnail; + public $large; + public $extraLarge; + public $small; + public $thumbnail; + public function setMedium($medium) { + $this->medium = $medium; + } + public function getMedium() { + return $this->medium; + } + public function setSmallThumbnail($smallThumbnail) { + $this->smallThumbnail = $smallThumbnail; + } + public function getSmallThumbnail() { + return $this->smallThumbnail; + } + public function setLarge($large) { + $this->large = $large; + } + public function getLarge() { + return $this->large; + } + public function setExtraLarge($extraLarge) { + $this->extraLarge = $extraLarge; + } + public function getExtraLarge() { + return $this->extraLarge; + } + public function setSmall($small) { + $this->small = $small; + } + public function getSmall() { + return $this->small; + } + public function setThumbnail($thumbnail) { + $this->thumbnail = $thumbnail; + } + public function getThumbnail() { + return $this->thumbnail; + } +} + +class Google_VolumeVolumeInfoIndustryIdentifiers extends Google_Model { + public $identifier; + public $type; + public function setIdentifier($identifier) { + $this->identifier = $identifier; + } + public function getIdentifier() { + return $this->identifier; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_Volumeannotation extends Google_Model { + public $annotationType; + public $kind; + public $updated; + public $deleted; + protected $__contentRangesType = 'Google_VolumeannotationContentRanges'; + protected $__contentRangesDataType = ''; + public $contentRanges; + public $selectedText; + public $volumeId; + public $annotationDataId; + public $annotationDataLink; + public $pageIds; + public $layerId; + public $data; + public $id; + public $selfLink; + public function setAnnotationType($annotationType) { + $this->annotationType = $annotationType; + } + public function getAnnotationType() { + return $this->annotationType; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setDeleted($deleted) { + $this->deleted = $deleted; + } + public function getDeleted() { + return $this->deleted; + } + public function setContentRanges(Google_VolumeannotationContentRanges $contentRanges) { + $this->contentRanges = $contentRanges; + } + public function getContentRanges() { + return $this->contentRanges; + } + public function setSelectedText($selectedText) { + $this->selectedText = $selectedText; + } + public function getSelectedText() { + return $this->selectedText; + } + public function setVolumeId($volumeId) { + $this->volumeId = $volumeId; + } + public function getVolumeId() { + return $this->volumeId; + } + public function setAnnotationDataId($annotationDataId) { + $this->annotationDataId = $annotationDataId; + } + public function getAnnotationDataId() { + return $this->annotationDataId; + } + public function setAnnotationDataLink($annotationDataLink) { + $this->annotationDataLink = $annotationDataLink; + } + public function getAnnotationDataLink() { + return $this->annotationDataLink; + } + public function setPageIds(/* array(Google_string) */ $pageIds) { + $this->assertIsArray($pageIds, 'Google_string', __METHOD__); + $this->pageIds = $pageIds; + } + public function getPageIds() { + return $this->pageIds; + } + public function setLayerId($layerId) { + $this->layerId = $layerId; + } + public function getLayerId() { + return $this->layerId; + } + public function setData($data) { + $this->data = $data; + } + public function getData() { + return $this->data; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_VolumeannotationContentRanges extends Google_Model { + public $contentVersion; + protected $__gbTextRangeType = 'Google_BooksAnnotationsRange'; + protected $__gbTextRangeDataType = ''; + public $gbTextRange; + protected $__cfiRangeType = 'Google_BooksAnnotationsRange'; + protected $__cfiRangeDataType = ''; + public $cfiRange; + protected $__gbImageRangeType = 'Google_BooksAnnotationsRange'; + protected $__gbImageRangeDataType = ''; + public $gbImageRange; + public function setContentVersion($contentVersion) { + $this->contentVersion = $contentVersion; + } + public function getContentVersion() { + return $this->contentVersion; + } + public function setGbTextRange(Google_BooksAnnotationsRange $gbTextRange) { + $this->gbTextRange = $gbTextRange; + } + public function getGbTextRange() { + return $this->gbTextRange; + } + public function setCfiRange(Google_BooksAnnotationsRange $cfiRange) { + $this->cfiRange = $cfiRange; + } + public function getCfiRange() { + return $this->cfiRange; + } + public function setGbImageRange(Google_BooksAnnotationsRange $gbImageRange) { + $this->gbImageRange = $gbImageRange; + } + public function getGbImageRange() { + return $this->gbImageRange; + } +} + +class Google_Volumeannotations extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Volumeannotation'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Volumeannotation) */ $items) { + $this->assertIsArray($items, 'Google_Volumeannotation', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} + +class Google_Volumes extends Google_Model { + public $totalItems; + protected $__itemsType = 'Google_Volume'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setItems(/* array(Google_Volume) */ $items) { + $this->assertIsArray($items, 'Google_Volume', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} diff --git a/modules/oauth/src/google/contrib/Google_CalendarService.php b/modules/oauth/src/google/contrib/Google_CalendarService.php new file mode 100644 index 0000000..7ee58d6 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_CalendarService.php @@ -0,0 +1,1931 @@ + + * $calendarService = new Google_CalendarService(...); + * $freebusy = $calendarService->freebusy; + * + */ + class Google_FreebusyServiceResource extends Google_ServiceResource { + + + /** + * Returns free/busy information for a set of calendars. (freebusy.query) + * + * @param Google_FreeBusyRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_FreeBusyResponse + */ + public function query(Google_FreeBusyRequest $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('query', array($params)); + if ($this->useObjects()) { + return new Google_FreeBusyResponse($data); + } else { + return $data; + } + } + } + + /** + * The "settings" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_CalendarService(...); + * $settings = $calendarService->settings; + * + */ + class Google_SettingsServiceResource extends Google_ServiceResource { + + + /** + * Returns all user settings for the authenticated user. (settings.list) + * + * @param array $optParams Optional parameters. + * @return Google_Settings + */ + public function listSettings($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Settings($data); + } else { + return $data; + } + } + /** + * Returns a single user setting. (settings.get) + * + * @param string $setting Name of the user setting. + * @param array $optParams Optional parameters. + * @return Google_Setting + */ + public function get($setting, $optParams = array()) { + $params = array('setting' => $setting); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Setting($data); + } else { + return $data; + } + } + } + + /** + * The "calendarList" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_CalendarService(...); + * $calendarList = $calendarService->calendarList; + * + */ + class Google_CalendarListServiceResource extends Google_ServiceResource { + + + /** + * Adds an entry to the user's calendar list. (calendarList.insert) + * + * @param Google_CalendarListEntry $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool colorRgbFormat Whether to use the 'frontendColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'color' field will be set to the best matching option automatically. Optional. The default is False. + * @return Google_CalendarListEntry + */ + public function insert(Google_CalendarListEntry $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CalendarListEntry($data); + } else { + return $data; + } + } + /** + * Returns an entry on the user's calendar list. (calendarList.get) + * + * @param string $calendarId Calendar identifier. + * @param array $optParams Optional parameters. + * @return Google_CalendarListEntry + */ + public function get($calendarId, $optParams = array()) { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_CalendarListEntry($data); + } else { + return $data; + } + } + /** + * Returns entries on the user's calendar list. (calendarList.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token specifying which result page to return. Optional. + * @opt_param bool showHidden Whether to show hidden entries. Optional. The default is False. + * @opt_param int maxResults Maximum number of entries returned on one result page. Optional. + * @opt_param string minAccessRole The minimum access role for the user in the returned entires. Optional. The default is no restriction. + * @return Google_CalendarList + */ + public function listCalendarList($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CalendarList($data); + } else { + return $data; + } + } + /** + * Updates an entry on the user's calendar list. (calendarList.update) + * + * @param string $calendarId Calendar identifier. + * @param Google_CalendarListEntry $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool colorRgbFormat Whether to use the 'frontendColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'color' field will be set to the best matching option automatically. Optional. The default is False. + * @return Google_CalendarListEntry + */ + public function update($calendarId, Google_CalendarListEntry $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_CalendarListEntry($data); + } else { + return $data; + } + } + /** + * Updates an entry on the user's calendar list. This method supports patch semantics. + * (calendarList.patch) + * + * @param string $calendarId Calendar identifier. + * @param Google_CalendarListEntry $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool colorRgbFormat Whether to use the 'frontendColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'color' field will be set to the best matching option automatically. Optional. The default is False. + * @return Google_CalendarListEntry + */ + public function patch($calendarId, Google_CalendarListEntry $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_CalendarListEntry($data); + } else { + return $data; + } + } + /** + * Deletes an entry on the user's calendar list. (calendarList.delete) + * + * @param string $calendarId Calendar identifier. + * @param array $optParams Optional parameters. + */ + public function delete($calendarId, $optParams = array()) { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "calendars" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_CalendarService(...); + * $calendars = $calendarService->calendars; + * + */ + class Google_CalendarsServiceResource extends Google_ServiceResource { + + + /** + * Creates a secondary calendar. (calendars.insert) + * + * @param Google_Calendar $postBody + * @param array $optParams Optional parameters. + * @return Google_Calendar + */ + public function insert(Google_Calendar $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Calendar($data); + } else { + return $data; + } + } + /** + * Returns metadata for a calendar. (calendars.get) + * + * @param string $calendarId Calendar identifier. + * @param array $optParams Optional parameters. + * @return Google_Calendar + */ + public function get($calendarId, $optParams = array()) { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Calendar($data); + } else { + return $data; + } + } + /** + * Clears a primary calendar. This operation deletes all data associated with the primary calendar + * of an account and cannot be undone. (calendars.clear) + * + * @param string $calendarId Calendar identifier. + * @param array $optParams Optional parameters. + */ + public function clear($calendarId, $optParams = array()) { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + $data = $this->__call('clear', array($params)); + return $data; + } + /** + * Updates metadata for a calendar. (calendars.update) + * + * @param string $calendarId Calendar identifier. + * @param Google_Calendar $postBody + * @param array $optParams Optional parameters. + * @return Google_Calendar + */ + public function update($calendarId, Google_Calendar $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Calendar($data); + } else { + return $data; + } + } + /** + * Updates metadata for a calendar. This method supports patch semantics. (calendars.patch) + * + * @param string $calendarId Calendar identifier. + * @param Google_Calendar $postBody + * @param array $optParams Optional parameters. + * @return Google_Calendar + */ + public function patch($calendarId, Google_Calendar $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Calendar($data); + } else { + return $data; + } + } + /** + * Deletes a secondary calendar. (calendars.delete) + * + * @param string $calendarId Calendar identifier. + * @param array $optParams Optional parameters. + */ + public function delete($calendarId, $optParams = array()) { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "acl" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_CalendarService(...); + * $acl = $calendarService->acl; + * + */ + class Google_AclServiceResource extends Google_ServiceResource { + + + /** + * Creates an access control rule. (acl.insert) + * + * @param string $calendarId Calendar identifier. + * @param Google_AclRule $postBody + * @param array $optParams Optional parameters. + * @return Google_AclRule + */ + public function insert($calendarId, Google_AclRule $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_AclRule($data); + } else { + return $data; + } + } + /** + * Returns an access control rule. (acl.get) + * + * @param string $calendarId Calendar identifier. + * @param string $ruleId ACL rule identifier. + * @param array $optParams Optional parameters. + * @return Google_AclRule + */ + public function get($calendarId, $ruleId, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_AclRule($data); + } else { + return $data; + } + } + /** + * Returns the rules in the access control list for the calendar. (acl.list) + * + * @param string $calendarId Calendar identifier. + * @param array $optParams Optional parameters. + * @return Google_Acl + */ + public function listAcl($calendarId, $optParams = array()) { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Acl($data); + } else { + return $data; + } + } + /** + * Updates an access control rule. (acl.update) + * + * @param string $calendarId Calendar identifier. + * @param string $ruleId ACL rule identifier. + * @param Google_AclRule $postBody + * @param array $optParams Optional parameters. + * @return Google_AclRule + */ + public function update($calendarId, $ruleId, Google_AclRule $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_AclRule($data); + } else { + return $data; + } + } + /** + * Updates an access control rule. This method supports patch semantics. (acl.patch) + * + * @param string $calendarId Calendar identifier. + * @param string $ruleId ACL rule identifier. + * @param Google_AclRule $postBody + * @param array $optParams Optional parameters. + * @return Google_AclRule + */ + public function patch($calendarId, $ruleId, Google_AclRule $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_AclRule($data); + } else { + return $data; + } + } + /** + * Deletes an access control rule. (acl.delete) + * + * @param string $calendarId Calendar identifier. + * @param string $ruleId ACL rule identifier. + * @param array $optParams Optional parameters. + */ + public function delete($calendarId, $ruleId, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "colors" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_CalendarService(...); + * $colors = $calendarService->colors; + * + */ + class Google_ColorsServiceResource extends Google_ServiceResource { + + + /** + * Returns the color definitions for calendars and events. (colors.get) + * + * @param array $optParams Optional parameters. + * @return Google_Colors + */ + public function get($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Colors($data); + } else { + return $data; + } + } + } + + /** + * The "events" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_CalendarService(...); + * $events = $calendarService->events; + * + */ + class Google_EventsServiceResource extends Google_ServiceResource { + + + /** + * Creates an event. (events.insert) + * + * @param string $calendarId Calendar identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications Whether to send notifications about the creation of the new event. Optional. The default is False. + * @return Google_Event + */ + public function insert($calendarId, Google_Event $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Event($data); + } else { + return $data; + } + } + /** + * Returns an event. (events.get) + * + * @param string $calendarId Calendar identifier. + * @param string $eventId Event identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string timeZone Time zone used in the response. Optional. The default is the time zone of the calendar. + * @opt_param bool alwaysIncludeEmail Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxAttendees The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional. + * @return Google_Event + */ + public function get($calendarId, $eventId, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Event($data); + } else { + return $data; + } + } + /** + * Moves an event to another calendar, i.e. changes an event's organizer. (events.move) + * + * @param string $calendarId Calendar identifier of the source calendar where the event currently is on. + * @param string $eventId Event identifier. + * @param string $destination Calendar identifier of the target calendar where the event is to be moved to. + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications Whether to send notifications about the change of the event's organizer. Optional. The default is False. + * @return Google_Event + */ + public function move($calendarId, $eventId, $destination, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId, 'destination' => $destination); + $params = array_merge($params, $optParams); + $data = $this->__call('move', array($params)); + if ($this->useObjects()) { + return new Google_Event($data); + } else { + return $data; + } + } + /** + * Returns events on the specified calendar. (events.list) + * + * @param string $calendarId Calendar identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy The order of the events returned in the result. Optional. The default is an unspecified, stable order. + * @opt_param bool showHiddenInvitations Whether to include hidden invitations in the result. Optional. The default is False. + * @opt_param bool showDeleted Whether to include deleted events (with 'eventStatus' equals 'cancelled') in the result. Optional. The default is False. + * @opt_param string iCalUID Specifies iCalendar UID (iCalUID) of events to be included in the response. Optional. + * @opt_param string updatedMin Lower bound for an event's last modification time (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by last modification time. + * @opt_param bool singleEvents Whether to expand recurring events into instances and only return single one-off events and instances of recurring events, but not the underlying recurring events themselves. Optional. The default is False. + * @opt_param bool alwaysIncludeEmail Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxResults Maximum number of events returned on one result page. Optional. + * @opt_param string q Free text search terms to find events that match these terms in any field, except for extended properties. Optional. + * @opt_param string pageToken Token specifying which result page to return. Optional. + * @opt_param string timeMin Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to filter by end time. + * @opt_param string timeZone Time zone used in the response. Optional. The default is the time zone of the calendar. + * @opt_param string timeMax Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to filter by start time. + * @opt_param int maxAttendees The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional. + * @return Google_Events + */ + public function listEvents($calendarId, $optParams = array()) { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Events($data); + } else { + return $data; + } + } + /** + * Updates an event. (events.update) + * + * @param string $calendarId Calendar identifier. + * @param string $eventId Event identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool alwaysIncludeEmail Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param bool sendNotifications Whether to send notifications about the event update (e.g. attendee's responses, title changes, etc.). Optional. The default is False. + * @return Google_Event + */ + public function update($calendarId, $eventId, Google_Event $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Event($data); + } else { + return $data; + } + } + /** + * Updates an event. This method supports patch semantics. (events.patch) + * + * @param string $calendarId Calendar identifier. + * @param string $eventId Event identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool alwaysIncludeEmail Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param bool sendNotifications Whether to send notifications about the event update (e.g. attendee's responses, title changes, etc.). Optional. The default is False. + * @return Google_Event + */ + public function patch($calendarId, $eventId, Google_Event $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Event($data); + } else { + return $data; + } + } + /** + * Returns instances of the specified recurring event. (events.instances) + * + * @param string $calendarId Calendar identifier. + * @param string $eventId Recurring event identifier. + * @param array $optParams Optional parameters. + * + * @opt_param bool showDeleted Whether to include deleted events (with 'eventStatus' equals 'cancelled') in the result. Optional. The default is False. + * @opt_param bool alwaysIncludeEmail Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxResults Maximum number of events returned on one result page. Optional. + * @opt_param string pageToken Token specifying which result page to return. Optional. + * @opt_param string timeZone Time zone used in the response. Optional. The default is the time zone of the calendar. + * @opt_param string originalStart The original start time of the instance in the result. Optional. + * @opt_param int maxAttendees The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional. + * @return Google_Events + */ + public function instances($calendarId, $eventId, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId); + $params = array_merge($params, $optParams); + $data = $this->__call('instances', array($params)); + if ($this->useObjects()) { + return new Google_Events($data); + } else { + return $data; + } + } + /** + * Imports an event. (events.import) + * + * @param string $calendarId Calendar identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * @return Google_Event + */ + public function import($calendarId, Google_Event $postBody, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('import', array($params)); + if ($this->useObjects()) { + return new Google_Event($data); + } else { + return $data; + } + } + /** + * Creates an event based on a simple text string. (events.quickAdd) + * + * @param string $calendarId Calendar identifier. + * @param string $text The text describing the event to be created. + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications Whether to send notifications about the creation of the event. Optional. The default is False. + * @return Google_Event + */ + public function quickAdd($calendarId, $text, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'text' => $text); + $params = array_merge($params, $optParams); + $data = $this->__call('quickAdd', array($params)); + if ($this->useObjects()) { + return new Google_Event($data); + } else { + return $data; + } + } + /** + * Deletes an event. (events.delete) + * + * @param string $calendarId Calendar identifier. + * @param string $eventId Event identifier. + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications Whether to send notifications about the deletion of the event. Optional. The default is False. + */ + public function delete($calendarId, $eventId, $optParams = array()) { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Calendar (v3). + * + *

+ * Lets you manipulate events and other calendar data. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_CalendarService extends Google_Service { + public $freebusy; + public $settings; + public $calendarList; + public $calendars; + public $acl; + public $colors; + public $events; + /** + * Constructs the internal representation of the Calendar service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'calendar/v3/'; + $this->version = 'v3'; + $this->serviceName = 'calendar'; + + $client->addService($this->serviceName, $this->version); + $this->freebusy = new Google_FreebusyServiceResource($this, $this->serviceName, 'freebusy', json_decode('{"methods": {"query": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "request": {"$ref": "FreeBusyRequest"}, "response": {"$ref": "FreeBusyResponse"}, "httpMethod": "POST", "path": "freeBusy", "id": "calendar.freebusy.query"}}}', true)); + $this->settings = new Google_SettingsServiceResource($this, $this->serviceName, 'settings', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "path": "users/me/settings", "response": {"$ref": "Settings"}, "id": "calendar.settings.list", "httpMethod": "GET"}, "get": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"setting": {"required": true, "type": "string", "location": "path"}}, "id": "calendar.settings.get", "httpMethod": "GET", "path": "users/me/settings/{setting}", "response": {"$ref": "Setting"}}}}', true)); + $this->calendarList = new Google_CalendarListServiceResource($this, $this->serviceName, 'calendarList', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"colorRgbFormat": {"type": "boolean", "location": "query"}}, "request": {"$ref": "CalendarListEntry"}, "response": {"$ref": "CalendarListEntry"}, "httpMethod": "POST", "path": "users/me/calendarList", "id": "calendar.calendarList.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "id": "calendar.calendarList.get", "httpMethod": "GET", "path": "users/me/calendarList/{calendarId}", "response": {"$ref": "CalendarListEntry"}}, "list": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "showHidden": {"type": "boolean", "location": "query"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "minAccessRole": {"enum": ["freeBusyReader", "owner", "reader", "writer"], "type": "string", "location": "query"}}, "response": {"$ref": "CalendarList"}, "httpMethod": "GET", "path": "users/me/calendarList", "id": "calendar.calendarList.list"}, "update": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"colorRgbFormat": {"type": "boolean", "location": "query"}, "calendarId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "CalendarListEntry"}, "response": {"$ref": "CalendarListEntry"}, "httpMethod": "PUT", "path": "users/me/calendarList/{calendarId}", "id": "calendar.calendarList.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"colorRgbFormat": {"type": "boolean", "location": "query"}, "calendarId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "CalendarListEntry"}, "response": {"$ref": "CalendarListEntry"}, "httpMethod": "PATCH", "path": "users/me/calendarList/{calendarId}", "id": "calendar.calendarList.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/calendar"], "path": "users/me/calendarList/{calendarId}", "id": "calendar.calendarList.delete", "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->calendars = new Google_CalendarsServiceResource($this, $this->serviceName, 'calendars', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/calendar"], "request": {"$ref": "Calendar"}, "response": {"$ref": "Calendar"}, "httpMethod": "POST", "path": "calendars", "id": "calendar.calendars.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "id": "calendar.calendars.get", "httpMethod": "GET", "path": "calendars/{calendarId}", "response": {"$ref": "Calendar"}}, "clear": {"scopes": ["https://www.googleapis.com/auth/calendar"], "path": "calendars/{calendarId}/clear", "id": "calendar.calendars.clear", "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "POST"}, "update": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Calendar"}, "response": {"$ref": "Calendar"}, "httpMethod": "PUT", "path": "calendars/{calendarId}", "id": "calendar.calendars.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Calendar"}, "response": {"$ref": "Calendar"}, "httpMethod": "PATCH", "path": "calendars/{calendarId}", "id": "calendar.calendars.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/calendar"], "path": "calendars/{calendarId}", "id": "calendar.calendars.delete", "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->acl = new Google_AclServiceResource($this, $this->serviceName, 'acl', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "AclRule"}, "response": {"$ref": "AclRule"}, "httpMethod": "POST", "path": "calendars/{calendarId}/acl", "id": "calendar.acl.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}, "ruleId": {"required": true, "type": "string", "location": "path"}}, "id": "calendar.acl.get", "httpMethod": "GET", "path": "calendars/{calendarId}/acl/{ruleId}", "response": {"$ref": "AclRule"}}, "list": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "id": "calendar.acl.list", "httpMethod": "GET", "path": "calendars/{calendarId}/acl", "response": {"$ref": "Acl"}}, "update": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}, "ruleId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "AclRule"}, "response": {"$ref": "AclRule"}, "httpMethod": "PUT", "path": "calendars/{calendarId}/acl/{ruleId}", "id": "calendar.acl.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}, "ruleId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "AclRule"}, "response": {"$ref": "AclRule"}, "httpMethod": "PATCH", "path": "calendars/{calendarId}/acl/{ruleId}", "id": "calendar.acl.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/calendar"], "path": "calendars/{calendarId}/acl/{ruleId}", "id": "calendar.acl.delete", "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}, "ruleId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->colors = new Google_ColorsServiceResource($this, $this->serviceName, 'colors', json_decode('{"methods": {"get": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "path": "colors", "response": {"$ref": "Colors"}, "id": "calendar.colors.get", "httpMethod": "GET"}}}', true)); + $this->events = new Google_EventsServiceResource($this, $this->serviceName, 'events', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}, "sendNotifications": {"type": "boolean", "location": "query"}}, "request": {"$ref": "Event"}, "response": {"$ref": "Event"}, "httpMethod": "POST", "path": "calendars/{calendarId}/events", "id": "calendar.events.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"eventId": {"required": true, "type": "string", "location": "path"}, "timeZone": {"type": "string", "location": "query"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "alwaysIncludeEmail": {"type": "boolean", "location": "query"}, "maxAttendees": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}}, "id": "calendar.events.get", "httpMethod": "GET", "path": "calendars/{calendarId}/events/{eventId}", "response": {"$ref": "Event"}}, "move": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"eventId": {"required": true, "type": "string", "location": "path"}, "destination": {"required": true, "type": "string", "location": "query"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "sendNotifications": {"type": "boolean", "location": "query"}}, "id": "calendar.events.move", "httpMethod": "POST", "path": "calendars/{calendarId}/events/{eventId}/move", "response": {"$ref": "Event"}}, "list": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"orderBy": {"enum": ["startTime", "updated"], "type": "string", "location": "query"}, "showHiddenInvitations": {"type": "boolean", "location": "query"}, "showDeleted": {"type": "boolean", "location": "query"}, "iCalUID": {"type": "string", "location": "query"}, "updatedMin": {"type": "string", "location": "query", "format": "date-time"}, "singleEvents": {"type": "boolean", "location": "query"}, "alwaysIncludeEmail": {"type": "boolean", "location": "query"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "q": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "timeMin": {"type": "string", "location": "query", "format": "date-time"}, "timeZone": {"type": "string", "location": "query"}, "timeMax": {"type": "string", "location": "query", "format": "date-time"}, "maxAttendees": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}}, "id": "calendar.events.list", "httpMethod": "GET", "path": "calendars/{calendarId}/events", "response": {"$ref": "Events"}}, "update": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"eventId": {"required": true, "type": "string", "location": "path"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "alwaysIncludeEmail": {"type": "boolean", "location": "query"}, "sendNotifications": {"type": "boolean", "location": "query"}}, "request": {"$ref": "Event"}, "response": {"$ref": "Event"}, "httpMethod": "PUT", "path": "calendars/{calendarId}/events/{eventId}", "id": "calendar.events.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"eventId": {"required": true, "type": "string", "location": "path"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "alwaysIncludeEmail": {"type": "boolean", "location": "query"}, "sendNotifications": {"type": "boolean", "location": "query"}}, "request": {"$ref": "Event"}, "response": {"$ref": "Event"}, "httpMethod": "PATCH", "path": "calendars/{calendarId}/events/{eventId}", "id": "calendar.events.patch"}, "instances": {"scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"], "parameters": {"eventId": {"required": true, "type": "string", "location": "path"}, "showDeleted": {"type": "boolean", "location": "query"}, "alwaysIncludeEmail": {"type": "boolean", "location": "query"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}, "pageToken": {"type": "string", "location": "query"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "timeZone": {"type": "string", "location": "query"}, "originalStart": {"type": "string", "location": "query"}, "maxAttendees": {"minimum": "1", "type": "integer", "location": "query", "format": "int32"}}, "id": "calendar.events.instances", "httpMethod": "GET", "path": "calendars/{calendarId}/events/{eventId}/instances", "response": {"$ref": "Events"}}, "import": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"calendarId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Event"}, "response": {"$ref": "Event"}, "httpMethod": "POST", "path": "calendars/{calendarId}/events/import", "id": "calendar.events.import"}, "quickAdd": {"scopes": ["https://www.googleapis.com/auth/calendar"], "parameters": {"text": {"required": true, "type": "string", "location": "query"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "sendNotifications": {"type": "boolean", "location": "query"}}, "id": "calendar.events.quickAdd", "httpMethod": "POST", "path": "calendars/{calendarId}/events/quickAdd", "response": {"$ref": "Event"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/calendar"], "path": "calendars/{calendarId}/events/{eventId}", "id": "calendar.events.delete", "parameters": {"eventId": {"required": true, "type": "string", "location": "path"}, "calendarId": {"required": true, "type": "string", "location": "path"}, "sendNotifications": {"type": "boolean", "location": "query"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_Acl extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_AclRule'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_AclRule) */ $items) { + $this->assertIsArray($items, 'Google_AclRule', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_AclRule extends Google_Model { + protected $__scopeType = 'Google_AclRuleScope'; + protected $__scopeDataType = ''; + public $scope; + public $kind; + public $etag; + public $role; + public $id; + public function setScope(Google_AclRuleScope $scope) { + $this->scope = $scope; + } + public function getScope() { + return $this->scope; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setRole($role) { + $this->role = $role; + } + public function getRole() { + return $this->role; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_AclRuleScope extends Google_Model { + public $type; + public $value; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_Calendar extends Google_Model { + public $kind; + public $description; + public $summary; + public $etag; + public $location; + public $timeZone; + public $id; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setSummary($summary) { + $this->summary = $summary; + } + public function getSummary() { + return $this->summary; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setTimeZone($timeZone) { + $this->timeZone = $timeZone; + } + public function getTimeZone() { + return $this->timeZone; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CalendarList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_CalendarListEntry'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_CalendarListEntry) */ $items) { + $this->assertIsArray($items, 'Google_CalendarListEntry', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_CalendarListEntry extends Google_Model { + public $kind; + public $foregroundColor; + protected $__defaultRemindersType = 'Google_EventReminder'; + protected $__defaultRemindersDataType = 'array'; + public $defaultReminders; + public $description; + public $colorId; + public $selected; + public $summary; + public $etag; + public $location; + public $backgroundColor; + public $summaryOverride; + public $timeZone; + public $hidden; + public $accessRole; + public $id; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setForegroundColor($foregroundColor) { + $this->foregroundColor = $foregroundColor; + } + public function getForegroundColor() { + return $this->foregroundColor; + } + public function setDefaultReminders(/* array(Google_EventReminder) */ $defaultReminders) { + $this->assertIsArray($defaultReminders, 'Google_EventReminder', __METHOD__); + $this->defaultReminders = $defaultReminders; + } + public function getDefaultReminders() { + return $this->defaultReminders; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setColorId($colorId) { + $this->colorId = $colorId; + } + public function getColorId() { + return $this->colorId; + } + public function setSelected($selected) { + $this->selected = $selected; + } + public function getSelected() { + return $this->selected; + } + public function setSummary($summary) { + $this->summary = $summary; + } + public function getSummary() { + return $this->summary; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setBackgroundColor($backgroundColor) { + $this->backgroundColor = $backgroundColor; + } + public function getBackgroundColor() { + return $this->backgroundColor; + } + public function setSummaryOverride($summaryOverride) { + $this->summaryOverride = $summaryOverride; + } + public function getSummaryOverride() { + return $this->summaryOverride; + } + public function setTimeZone($timeZone) { + $this->timeZone = $timeZone; + } + public function getTimeZone() { + return $this->timeZone; + } + public function setHidden($hidden) { + $this->hidden = $hidden; + } + public function getHidden() { + return $this->hidden; + } + public function setAccessRole($accessRole) { + $this->accessRole = $accessRole; + } + public function getAccessRole() { + return $this->accessRole; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ColorDefinition extends Google_Model { + public $foreground; + public $background; + public function setForeground($foreground) { + $this->foreground = $foreground; + } + public function getForeground() { + return $this->foreground; + } + public function setBackground($background) { + $this->background = $background; + } + public function getBackground() { + return $this->background; + } +} + +class Google_Colors extends Google_Model { + protected $__calendarType = 'Google_ColorDefinition'; + protected $__calendarDataType = 'map'; + public $calendar; + public $updated; + protected $__eventType = 'Google_ColorDefinition'; + protected $__eventDataType = 'map'; + public $event; + public $kind; + public function setCalendar(Google_ColorDefinition $calendar) { + $this->calendar = $calendar; + } + public function getCalendar() { + return $this->calendar; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setEvent(Google_ColorDefinition $event) { + $this->event = $event; + } + public function getEvent() { + return $this->event; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Error extends Google_Model { + public $domain; + public $reason; + public function setDomain($domain) { + $this->domain = $domain; + } + public function getDomain() { + return $this->domain; + } + public function setReason($reason) { + $this->reason = $reason; + } + public function getReason() { + return $this->reason; + } +} + +class Google_Event extends Google_Model { + protected $__creatorType = 'Google_EventCreator'; + protected $__creatorDataType = ''; + public $creator; + protected $__organizerType = 'Google_EventOrganizer'; + protected $__organizerDataType = ''; + public $organizer; + public $summary; + public $id; + protected $__attendeesType = 'Google_EventAttendee'; + protected $__attendeesDataType = 'array'; + public $attendees; + public $htmlLink; + public $recurrence; + protected $__startType = 'Google_EventDateTime'; + protected $__startDataType = ''; + public $start; + public $etag; + public $location; + public $recurringEventId; + protected $__gadgetType = 'Google_EventGadget'; + protected $__gadgetDataType = ''; + public $gadget; + public $status; + public $updated; + public $description; + public $iCalUID; + protected $__extendedPropertiesType = 'Google_EventExtendedProperties'; + protected $__extendedPropertiesDataType = ''; + public $extendedProperties; + public $endTimeUnspecified; + public $sequence; + public $visibility; + public $guestsCanModify; + protected $__endType = 'Google_EventDateTime'; + protected $__endDataType = ''; + public $end; + public $attendeesOmitted; + public $kind; + public $locked; + public $created; + public $colorId; + public $anyoneCanAddSelf; + protected $__remindersType = 'Google_EventReminders'; + protected $__remindersDataType = ''; + public $reminders; + public $guestsCanSeeOtherGuests; + protected $__originalStartTimeType = 'Google_EventDateTime'; + protected $__originalStartTimeDataType = ''; + public $originalStartTime; + public $guestsCanInviteOthers; + public $transparency; + public $privateCopy; + public function setCreator(Google_EventCreator $creator) { + $this->creator = $creator; + } + public function getCreator() { + return $this->creator; + } + public function setOrganizer(Google_EventOrganizer $organizer) { + $this->organizer = $organizer; + } + public function getOrganizer() { + return $this->organizer; + } + public function setSummary($summary) { + $this->summary = $summary; + } + public function getSummary() { + return $this->summary; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAttendees(/* array(Google_EventAttendee) */ $attendees) { + $this->assertIsArray($attendees, 'Google_EventAttendee', __METHOD__); + $this->attendees = $attendees; + } + public function getAttendees() { + return $this->attendees; + } + public function setHtmlLink($htmlLink) { + $this->htmlLink = $htmlLink; + } + public function getHtmlLink() { + return $this->htmlLink; + } + public function setRecurrence(/* array(Google_string) */ $recurrence) { + $this->assertIsArray($recurrence, 'Google_string', __METHOD__); + $this->recurrence = $recurrence; + } + public function getRecurrence() { + return $this->recurrence; + } + public function setStart(Google_EventDateTime $start) { + $this->start = $start; + } + public function getStart() { + return $this->start; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setRecurringEventId($recurringEventId) { + $this->recurringEventId = $recurringEventId; + } + public function getRecurringEventId() { + return $this->recurringEventId; + } + public function setGadget(Google_EventGadget $gadget) { + $this->gadget = $gadget; + } + public function getGadget() { + return $this->gadget; + } + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setICalUID($iCalUID) { + $this->iCalUID = $iCalUID; + } + public function getICalUID() { + return $this->iCalUID; + } + public function setExtendedProperties(Google_EventExtendedProperties $extendedProperties) { + $this->extendedProperties = $extendedProperties; + } + public function getExtendedProperties() { + return $this->extendedProperties; + } + public function setEndTimeUnspecified($endTimeUnspecified) { + $this->endTimeUnspecified = $endTimeUnspecified; + } + public function getEndTimeUnspecified() { + return $this->endTimeUnspecified; + } + public function setSequence($sequence) { + $this->sequence = $sequence; + } + public function getSequence() { + return $this->sequence; + } + public function setVisibility($visibility) { + $this->visibility = $visibility; + } + public function getVisibility() { + return $this->visibility; + } + public function setGuestsCanModify($guestsCanModify) { + $this->guestsCanModify = $guestsCanModify; + } + public function getGuestsCanModify() { + return $this->guestsCanModify; + } + public function setEnd(Google_EventDateTime $end) { + $this->end = $end; + } + public function getEnd() { + return $this->end; + } + public function setAttendeesOmitted($attendeesOmitted) { + $this->attendeesOmitted = $attendeesOmitted; + } + public function getAttendeesOmitted() { + return $this->attendeesOmitted; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLocked($locked) { + $this->locked = $locked; + } + public function getLocked() { + return $this->locked; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setColorId($colorId) { + $this->colorId = $colorId; + } + public function getColorId() { + return $this->colorId; + } + public function setAnyoneCanAddSelf($anyoneCanAddSelf) { + $this->anyoneCanAddSelf = $anyoneCanAddSelf; + } + public function getAnyoneCanAddSelf() { + return $this->anyoneCanAddSelf; + } + public function setReminders(Google_EventReminders $reminders) { + $this->reminders = $reminders; + } + public function getReminders() { + return $this->reminders; + } + public function setGuestsCanSeeOtherGuests($guestsCanSeeOtherGuests) { + $this->guestsCanSeeOtherGuests = $guestsCanSeeOtherGuests; + } + public function getGuestsCanSeeOtherGuests() { + return $this->guestsCanSeeOtherGuests; + } + public function setOriginalStartTime(Google_EventDateTime $originalStartTime) { + $this->originalStartTime = $originalStartTime; + } + public function getOriginalStartTime() { + return $this->originalStartTime; + } + public function setGuestsCanInviteOthers($guestsCanInviteOthers) { + $this->guestsCanInviteOthers = $guestsCanInviteOthers; + } + public function getGuestsCanInviteOthers() { + return $this->guestsCanInviteOthers; + } + public function setTransparency($transparency) { + $this->transparency = $transparency; + } + public function getTransparency() { + return $this->transparency; + } + public function setPrivateCopy($privateCopy) { + $this->privateCopy = $privateCopy; + } + public function getPrivateCopy() { + return $this->privateCopy; + } +} + +class Google_EventAttendee extends Google_Model { + public $comment; + public $displayName; + public $responseStatus; + public $self; + public $id; + public $additionalGuests; + public $resource; + public $organizer; + public $optional; + public $email; + public function setComment($comment) { + $this->comment = $comment; + } + public function getComment() { + return $this->comment; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setResponseStatus($responseStatus) { + $this->responseStatus = $responseStatus; + } + public function getResponseStatus() { + return $this->responseStatus; + } + public function setSelf($self) { + $this->self = $self; + } + public function getSelf() { + return $this->self; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAdditionalGuests($additionalGuests) { + $this->additionalGuests = $additionalGuests; + } + public function getAdditionalGuests() { + return $this->additionalGuests; + } + public function setResource($resource) { + $this->resource = $resource; + } + public function getResource() { + return $this->resource; + } + public function setOrganizer($organizer) { + $this->organizer = $organizer; + } + public function getOrganizer() { + return $this->organizer; + } + public function setOptional($optional) { + $this->optional = $optional; + } + public function getOptional() { + return $this->optional; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } +} + +class Google_EventCreator extends Google_Model { + public $self; + public $displayName; + public $email; + public $id; + public function setSelf($self) { + $this->self = $self; + } + public function getSelf() { + return $this->self; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_EventDateTime extends Google_Model { + public $date; + public $timeZone; + public $dateTime; + public function setDate($date) { + $this->date = $date; + } + public function getDate() { + return $this->date; + } + public function setTimeZone($timeZone) { + $this->timeZone = $timeZone; + } + public function getTimeZone() { + return $this->timeZone; + } + public function setDateTime($dateTime) { + $this->dateTime = $dateTime; + } + public function getDateTime() { + return $this->dateTime; + } +} + +class Google_EventExtendedProperties extends Google_Model { + public $shared; + public $private; + public function setShared($shared) { + $this->shared = $shared; + } + public function getShared() { + return $this->shared; + } + public function setPrivate($private) { + $this->private = $private; + } + public function getPrivate() { + return $this->private; + } +} + +class Google_EventGadget extends Google_Model { + public $preferences; + public $title; + public $height; + public $width; + public $link; + public $type; + public $display; + public $iconLink; + public function setPreferences($preferences) { + $this->preferences = $preferences; + } + public function getPreferences() { + return $this->preferences; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setDisplay($display) { + $this->display = $display; + } + public function getDisplay() { + return $this->display; + } + public function setIconLink($iconLink) { + $this->iconLink = $iconLink; + } + public function getIconLink() { + return $this->iconLink; + } +} + +class Google_EventOrganizer extends Google_Model { + public $self; + public $displayName; + public $email; + public $id; + public function setSelf($self) { + $this->self = $self; + } + public function getSelf() { + return $this->self; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_EventReminder extends Google_Model { + public $minutes; + public $method; + public function setMinutes($minutes) { + $this->minutes = $minutes; + } + public function getMinutes() { + return $this->minutes; + } + public function setMethod($method) { + $this->method = $method; + } + public function getMethod() { + return $this->method; + } +} + +class Google_EventReminders extends Google_Model { + protected $__overridesType = 'Google_EventReminder'; + protected $__overridesDataType = 'array'; + public $overrides; + public $useDefault; + public function setOverrides(/* array(Google_EventReminder) */ $overrides) { + $this->assertIsArray($overrides, 'Google_EventReminder', __METHOD__); + $this->overrides = $overrides; + } + public function getOverrides() { + return $this->overrides; + } + public function setUseDefault($useDefault) { + $this->useDefault = $useDefault; + } + public function getUseDefault() { + return $this->useDefault; + } +} + +class Google_Events extends Google_Model { + public $nextPageToken; + public $kind; + protected $__defaultRemindersType = 'Google_EventReminder'; + protected $__defaultRemindersDataType = 'array'; + public $defaultReminders; + public $description; + protected $__itemsType = 'Google_Event'; + protected $__itemsDataType = 'array'; + public $items; + public $updated; + public $summary; + public $etag; + public $timeZone; + public $accessRole; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDefaultReminders(/* array(Google_EventReminder) */ $defaultReminders) { + $this->assertIsArray($defaultReminders, 'Google_EventReminder', __METHOD__); + $this->defaultReminders = $defaultReminders; + } + public function getDefaultReminders() { + return $this->defaultReminders; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setItems(/* array(Google_Event) */ $items) { + $this->assertIsArray($items, 'Google_Event', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setSummary($summary) { + $this->summary = $summary; + } + public function getSummary() { + return $this->summary; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setTimeZone($timeZone) { + $this->timeZone = $timeZone; + } + public function getTimeZone() { + return $this->timeZone; + } + public function setAccessRole($accessRole) { + $this->accessRole = $accessRole; + } + public function getAccessRole() { + return $this->accessRole; + } +} + +class Google_FreeBusyCalendar extends Google_Model { + protected $__busyType = 'Google_TimePeriod'; + protected $__busyDataType = 'array'; + public $busy; + protected $__errorsType = 'Google_Error'; + protected $__errorsDataType = 'array'; + public $errors; + public function setBusy(/* array(Google_TimePeriod) */ $busy) { + $this->assertIsArray($busy, 'Google_TimePeriod', __METHOD__); + $this->busy = $busy; + } + public function getBusy() { + return $this->busy; + } + public function setErrors(/* array(Google_Error) */ $errors) { + $this->assertIsArray($errors, 'Google_Error', __METHOD__); + $this->errors = $errors; + } + public function getErrors() { + return $this->errors; + } +} + +class Google_FreeBusyGroup extends Google_Model { + protected $__errorsType = 'Google_Error'; + protected $__errorsDataType = 'array'; + public $errors; + public $calendars; + public function setErrors(/* array(Google_Error) */ $errors) { + $this->assertIsArray($errors, 'Google_Error', __METHOD__); + $this->errors = $errors; + } + public function getErrors() { + return $this->errors; + } + public function setCalendars(/* array(Google_string) */ $calendars) { + $this->assertIsArray($calendars, 'Google_string', __METHOD__); + $this->calendars = $calendars; + } + public function getCalendars() { + return $this->calendars; + } +} + +class Google_FreeBusyRequest extends Google_Model { + public $calendarExpansionMax; + public $groupExpansionMax; + public $timeMax; + protected $__itemsType = 'Google_FreeBusyRequestItem'; + protected $__itemsDataType = 'array'; + public $items; + public $timeMin; + public $timeZone; + public function setCalendarExpansionMax($calendarExpansionMax) { + $this->calendarExpansionMax = $calendarExpansionMax; + } + public function getCalendarExpansionMax() { + return $this->calendarExpansionMax; + } + public function setGroupExpansionMax($groupExpansionMax) { + $this->groupExpansionMax = $groupExpansionMax; + } + public function getGroupExpansionMax() { + return $this->groupExpansionMax; + } + public function setTimeMax($timeMax) { + $this->timeMax = $timeMax; + } + public function getTimeMax() { + return $this->timeMax; + } + public function setItems(/* array(Google_FreeBusyRequestItem) */ $items) { + $this->assertIsArray($items, 'Google_FreeBusyRequestItem', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setTimeMin($timeMin) { + $this->timeMin = $timeMin; + } + public function getTimeMin() { + return $this->timeMin; + } + public function setTimeZone($timeZone) { + $this->timeZone = $timeZone; + } + public function getTimeZone() { + return $this->timeZone; + } +} + +class Google_FreeBusyRequestItem extends Google_Model { + public $id; + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_FreeBusyResponse extends Google_Model { + public $timeMax; + public $kind; + protected $__calendarsType = 'Google_FreeBusyCalendar'; + protected $__calendarsDataType = 'map'; + public $calendars; + public $timeMin; + protected $__groupsType = 'Google_FreeBusyGroup'; + protected $__groupsDataType = 'map'; + public $groups; + public function setTimeMax($timeMax) { + $this->timeMax = $timeMax; + } + public function getTimeMax() { + return $this->timeMax; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCalendars(Google_FreeBusyCalendar $calendars) { + $this->calendars = $calendars; + } + public function getCalendars() { + return $this->calendars; + } + public function setTimeMin($timeMin) { + $this->timeMin = $timeMin; + } + public function getTimeMin() { + return $this->timeMin; + } + public function setGroups(Google_FreeBusyGroup $groups) { + $this->groups = $groups; + } + public function getGroups() { + return $this->groups; + } +} + +class Google_Setting extends Google_Model { + public $kind; + public $etag; + public $id; + public $value; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_Settings extends Google_Model { + protected $__itemsType = 'Google_Setting'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setItems(/* array(Google_Setting) */ $items) { + $this->assertIsArray($items, 'Google_Setting', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_TimePeriod extends Google_Model { + public $start; + public $end; + public function setStart($start) { + $this->start = $start; + } + public function getStart() { + return $this->start; + } + public function setEnd($end) { + $this->end = $end; + } + public function getEnd() { + return $this->end; + } +} diff --git a/modules/oauth/src/google/contrib/Google_ComputeService.php b/modules/oauth/src/google/contrib/Google_ComputeService.php new file mode 100644 index 0000000..cbf6140 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_ComputeService.php @@ -0,0 +1,2629 @@ + + * $computeService = new Google_ComputeService(...); + * $operations = $computeService->operations; + * + */ + class Google_OperationsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the specified operation resource. (operations.get) + * + * @param string $project Name of the project scoping this request. + * @param string $operation Name of the operation resource to return. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function get($project, $operation, $optParams = array()) { + $params = array('project' => $project, 'operation' => $operation); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Retrieves the list of operation resources contained within the specified project. + * (operations.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_OperationList + */ + public function listOperations($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_OperationList($data); + } else { + return $data; + } + } + /** + * Deletes the specified operation resource. (operations.delete) + * + * @param string $project Name of the project scoping this request. + * @param string $operation Name of the operation resource to delete. + * @param array $optParams Optional parameters. + */ + public function delete($project, $operation, $optParams = array()) { + $params = array('project' => $project, 'operation' => $operation); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "kernels" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $kernels = $computeService->kernels; + * + */ + class Google_KernelsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the list of kernel resources available to the specified project. (kernels.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_KernelList + */ + public function listKernels($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_KernelList($data); + } else { + return $data; + } + } + /** + * Returns the specified kernel resource. (kernels.get) + * + * @param string $project Name of the project scoping this request. + * @param string $kernel Name of the kernel resource to return. + * @param array $optParams Optional parameters. + * @return Google_Kernel + */ + public function get($project, $kernel, $optParams = array()) { + $params = array('project' => $project, 'kernel' => $kernel); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Kernel($data); + } else { + return $data; + } + } + } + + /** + * The "disks" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $disks = $computeService->disks; + * + */ + class Google_DisksServiceResource extends Google_ServiceResource { + + + /** + * Creates a persistent disk resource in the specified project using the data included in the + * request. (disks.insert) + * + * @param string $project Name of the project scoping this request. + * @param Google_Disk $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function insert($project, Google_Disk $postBody, $optParams = array()) { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Returns the specified persistent disk resource. (disks.get) + * + * @param string $project Name of the project scoping this request. + * @param string $disk Name of the persistent disk resource to return. + * @param array $optParams Optional parameters. + * @return Google_Disk + */ + public function get($project, $disk, $optParams = array()) { + $params = array('project' => $project, 'disk' => $disk); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Disk($data); + } else { + return $data; + } + } + /** + * Retrieves the list of persistent disk resources contained within the specified project. + * (disks.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_DiskList + */ + public function listDisks($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_DiskList($data); + } else { + return $data; + } + } + /** + * Deletes the specified persistent disk resource. (disks.delete) + * + * @param string $project Name of the project scoping this request. + * @param string $disk Name of the persistent disk resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function delete($project, $disk, $optParams = array()) { + $params = array('project' => $project, 'disk' => $disk); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + } + + /** + * The "snapshots" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $snapshots = $computeService->snapshots; + * + */ + class Google_SnapshotsServiceResource extends Google_ServiceResource { + + + /** + * Creates a persistent disk snapshot resource in the specified project using the data included in + * the request. (snapshots.insert) + * + * @param string $project Name of the project scoping this request. + * @param Google_Snapshot $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function insert($project, Google_Snapshot $postBody, $optParams = array()) { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Returns the specified persistent disk snapshot resource. (snapshots.get) + * + * @param string $project Name of the project scoping this request. + * @param string $snapshot Name of the persistent disk snapshot resource to return. + * @param array $optParams Optional parameters. + * @return Google_Snapshot + */ + public function get($project, $snapshot, $optParams = array()) { + $params = array('project' => $project, 'snapshot' => $snapshot); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Snapshot($data); + } else { + return $data; + } + } + /** + * Retrieves the list of persistent disk snapshot resources contained within the specified project. + * (snapshots.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_SnapshotList + */ + public function listSnapshots($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SnapshotList($data); + } else { + return $data; + } + } + /** + * Deletes the specified persistent disk snapshot resource. (snapshots.delete) + * + * @param string $project Name of the project scoping this request. + * @param string $snapshot Name of the persistent disk snapshot resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function delete($project, $snapshot, $optParams = array()) { + $params = array('project' => $project, 'snapshot' => $snapshot); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + } + + /** + * The "zones" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $zones = $computeService->zones; + * + */ + class Google_ZonesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the list of zone resources available to the specified project. (zones.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_ZoneList + */ + public function listZones($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ZoneList($data); + } else { + return $data; + } + } + /** + * Returns the specified zone resource. (zones.get) + * + * @param string $project Name of the project scoping this request. + * @param string $zone Name of the zone resource to return. + * @param array $optParams Optional parameters. + * @return Google_Zone + */ + public function get($project, $zone, $optParams = array()) { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Zone($data); + } else { + return $data; + } + } + } + + /** + * The "instances" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $instances = $computeService->instances; + * + */ + class Google_InstancesServiceResource extends Google_ServiceResource { + + + /** + * Creates an instance resource in the specified project using the data included in the request. + * (instances.insert) + * + * @param string $project Name of the project scoping this request. + * @param Google_Instance $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function insert($project, Google_Instance $postBody, $optParams = array()) { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Deletes an access config from an instance's network interface. (instances.deleteAccessConfig) + * + * @param string $project Project name. + * @param string $instance Instance name. + * @param string $access_config Access config name. + * @param string $network_interface Network interface name. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function deleteAccessConfig($project, $instance, $access_config, $network_interface, $optParams = array()) { + $params = array('project' => $project, 'instance' => $instance, 'access_config' => $access_config, 'network_interface' => $network_interface); + $params = array_merge($params, $optParams); + $data = $this->__call('deleteAccessConfig', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Returns the specified instance resource. (instances.get) + * + * @param string $project Name of the project scoping this request. + * @param string $instance Name of the instance resource to return. + * @param array $optParams Optional parameters. + * @return Google_Instance + */ + public function get($project, $instance, $optParams = array()) { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Instance($data); + } else { + return $data; + } + } + /** + * Retrieves the list of instance resources contained within the specified project. (instances.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_InstanceList + */ + public function listInstances($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_InstanceList($data); + } else { + return $data; + } + } + /** + * Adds an access config to an instance's network interface. (instances.addAccessConfig) + * + * @param string $project Project name. + * @param string $instance Instance name. + * @param string $network_interface Network interface name. + * @param Google_AccessConfig $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function addAccessConfig($project, $instance, $network_interface, Google_AccessConfig $postBody, $optParams = array()) { + $params = array('project' => $project, 'instance' => $instance, 'network_interface' => $network_interface, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('addAccessConfig', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Deletes the specified instance resource. (instances.delete) + * + * @param string $project Name of the project scoping this request. + * @param string $instance Name of the instance resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function delete($project, $instance, $optParams = array()) { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + } + + /** + * The "machineTypes" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $machineTypes = $computeService->machineTypes; + * + */ + class Google_MachineTypesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the list of machine type resources available to the specified project. + * (machineTypes.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_MachineTypeList + */ + public function listMachineTypes($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_MachineTypeList($data); + } else { + return $data; + } + } + /** + * Returns the specified machine type resource. (machineTypes.get) + * + * @param string $project Name of the project scoping this request. + * @param string $machineType Name of the machine type resource to return. + * @param array $optParams Optional parameters. + * @return Google_MachineType + */ + public function get($project, $machineType, $optParams = array()) { + $params = array('project' => $project, 'machineType' => $machineType); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_MachineType($data); + } else { + return $data; + } + } + } + + /** + * The "images" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $images = $computeService->images; + * + */ + class Google_ImagesServiceResource extends Google_ServiceResource { + + + /** + * Creates an image resource in the specified project using the data included in the request. + * (images.insert) + * + * @param string $project Name of the project scoping this request. + * @param Google_Image $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function insert($project, Google_Image $postBody, $optParams = array()) { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Returns the specified image resource. (images.get) + * + * @param string $project Name of the project scoping this request. + * @param string $image Name of the image resource to return. + * @param array $optParams Optional parameters. + * @return Google_Image + */ + public function get($project, $image, $optParams = array()) { + $params = array('project' => $project, 'image' => $image); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Image($data); + } else { + return $data; + } + } + /** + * Retrieves the list of image resources available to the specified project. (images.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_ImageList + */ + public function listImages($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ImageList($data); + } else { + return $data; + } + } + /** + * Deletes the specified image resource. (images.delete) + * + * @param string $project Name of the project scoping this request. + * @param string $image Name of the image resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function delete($project, $image, $optParams = array()) { + $params = array('project' => $project, 'image' => $image); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + } + + /** + * The "firewalls" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $firewalls = $computeService->firewalls; + * + */ + class Google_FirewallsServiceResource extends Google_ServiceResource { + + + /** + * Creates a firewall resource in the specified project using the data included in the request. + * (firewalls.insert) + * + * @param string $project Name of the project scoping this request. + * @param Google_Firewall $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function insert($project, Google_Firewall $postBody, $optParams = array()) { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Returns the specified firewall resource. (firewalls.get) + * + * @param string $project Name of the project scoping this request. + * @param string $firewall Name of the firewall resource to return. + * @param array $optParams Optional parameters. + * @return Google_Firewall + */ + public function get($project, $firewall, $optParams = array()) { + $params = array('project' => $project, 'firewall' => $firewall); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Firewall($data); + } else { + return $data; + } + } + /** + * Retrieves the list of firewall resources available to the specified project. (firewalls.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_FirewallList + */ + public function listFirewalls($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_FirewallList($data); + } else { + return $data; + } + } + /** + * Updates the specified firewall resource with the data included in the request. (firewalls.update) + * + * @param string $project Name of the project scoping this request. + * @param string $firewall Name of the firewall resource to update. + * @param Google_Firewall $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function update($project, $firewall, Google_Firewall $postBody, $optParams = array()) { + $params = array('project' => $project, 'firewall' => $firewall, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Updates the specified firewall resource with the data included in the request. This method + * supports patch semantics. (firewalls.patch) + * + * @param string $project Name of the project scoping this request. + * @param string $firewall Name of the firewall resource to update. + * @param Google_Firewall $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function patch($project, $firewall, Google_Firewall $postBody, $optParams = array()) { + $params = array('project' => $project, 'firewall' => $firewall, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Deletes the specified firewall resource. (firewalls.delete) + * + * @param string $project Name of the project scoping this request. + * @param string $firewall Name of the firewall resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function delete($project, $firewall, $optParams = array()) { + $params = array('project' => $project, 'firewall' => $firewall); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + } + + /** + * The "networks" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $networks = $computeService->networks; + * + */ + class Google_NetworksServiceResource extends Google_ServiceResource { + + + /** + * Creates a network resource in the specified project using the data included in the request. + * (networks.insert) + * + * @param string $project Name of the project scoping this request. + * @param Google_Network $postBody + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function insert($project, Google_Network $postBody, $optParams = array()) { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + /** + * Returns the specified network resource. (networks.get) + * + * @param string $project Name of the project scoping this request. + * @param string $network Name of the network resource to return. + * @param array $optParams Optional parameters. + * @return Google_Network + */ + public function get($project, $network, $optParams = array()) { + $params = array('project' => $project, 'network' => $network); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Network($data); + } else { + return $data; + } + } + /** + * Retrieves the list of network resources available to the specified project. (networks.list) + * + * @param string $project Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be returned. Maximum and default value is 100. + * @return Google_NetworkList + */ + public function listNetworks($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_NetworkList($data); + } else { + return $data; + } + } + /** + * Deletes the specified network resource. (networks.delete) + * + * @param string $project Name of the project scoping this request. + * @param string $network Name of the network resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Operation + */ + public function delete($project, $network, $optParams = array()) { + $params = array('project' => $project, 'network' => $network); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + if ($this->useObjects()) { + return new Google_Operation($data); + } else { + return $data; + } + } + } + + /** + * The "projects" collection of methods. + * Typical usage is: + * + * $computeService = new Google_ComputeService(...); + * $projects = $computeService->projects; + * + */ + class Google_ProjectsServiceResource extends Google_ServiceResource { + + + /** + * Sets metadata common to all instances within the specified project using the data included in the + * request. (projects.setCommonInstanceMetadata) + * + * @param string $project Name of the project scoping this request. + * @param Google_Metadata $postBody + * @param array $optParams Optional parameters. + */ + public function setCommonInstanceMetadata($project, Google_Metadata $postBody, $optParams = array()) { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('setCommonInstanceMetadata', array($params)); + return $data; + } + /** + * Returns the specified project resource. (projects.get) + * + * @param string $project Name of the project resource to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Project + */ + public function get($project, $optParams = array()) { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Project($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Compute (v1beta12). + * + *

+ * API for the Google Compute Engine service. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_ComputeService extends Google_Service { + public $operations; + public $kernels; + public $disks; + public $snapshots; + public $zones; + public $instances; + public $machineTypes; + public $images; + public $firewalls; + public $networks; + public $projects; + /** + * Constructs the internal representation of the Compute service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'compute/v1beta12/projects/'; + $this->version = 'v1beta12'; + $this->serviceName = 'compute'; + + $client->addService($this->serviceName, $this->version); + $this->operations = new Google_OperationsServiceResource($this, $this->serviceName, 'operations', json_decode('{"methods": {"get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "operation": {"required": true, "type": "string", "location": "path"}}, "id": "compute.operations.get", "httpMethod": "GET", "path": "{project}/operations/{operation}", "response": {"$ref": "Operation"}}, "list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.operations.list", "httpMethod": "GET", "path": "{project}/operations", "response": {"$ref": "OperationList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/compute"], "path": "{project}/operations/{operation}", "id": "compute.operations.delete", "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "operation": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->kernels = new Google_KernelsServiceResource($this, $this->serviceName, 'kernels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.kernels.list", "httpMethod": "GET", "path": "{project}/kernels", "response": {"$ref": "KernelList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "kernel": {"required": true, "type": "string", "location": "path"}}, "id": "compute.kernels.get", "httpMethod": "GET", "path": "{project}/kernels/{kernel}", "response": {"$ref": "Kernel"}}}}', true)); + $this->disks = new Google_DisksServiceResource($this, $this->serviceName, 'disks', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Disk"}, "response": {"$ref": "Operation"}, "httpMethod": "POST", "path": "{project}/disks", "id": "compute.disks.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "disk": {"required": true, "type": "string", "location": "path"}}, "id": "compute.disks.get", "httpMethod": "GET", "path": "{project}/disks/{disk}", "response": {"$ref": "Disk"}}, "list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.disks.list", "httpMethod": "GET", "path": "{project}/disks", "response": {"$ref": "DiskList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "disk": {"required": true, "type": "string", "location": "path"}}, "id": "compute.disks.delete", "httpMethod": "DELETE", "path": "{project}/disks/{disk}", "response": {"$ref": "Operation"}}}}', true)); + $this->snapshots = new Google_SnapshotsServiceResource($this, $this->serviceName, 'snapshots', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Snapshot"}, "response": {"$ref": "Operation"}, "httpMethod": "POST", "path": "{project}/snapshots", "id": "compute.snapshots.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "snapshot": {"required": true, "type": "string", "location": "path"}}, "id": "compute.snapshots.get", "httpMethod": "GET", "path": "{project}/snapshots/{snapshot}", "response": {"$ref": "Snapshot"}}, "list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.snapshots.list", "httpMethod": "GET", "path": "{project}/snapshots", "response": {"$ref": "SnapshotList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "snapshot": {"required": true, "type": "string", "location": "path"}}, "id": "compute.snapshots.delete", "httpMethod": "DELETE", "path": "{project}/snapshots/{snapshot}", "response": {"$ref": "Operation"}}}}', true)); + $this->zones = new Google_ZonesServiceResource($this, $this->serviceName, 'zones', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.zones.list", "httpMethod": "GET", "path": "{project}/zones", "response": {"$ref": "ZoneList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "zone": {"required": true, "type": "string", "location": "path"}}, "id": "compute.zones.get", "httpMethod": "GET", "path": "{project}/zones/{zone}", "response": {"$ref": "Zone"}}}}', true)); + $this->instances = new Google_InstancesServiceResource($this, $this->serviceName, 'instances', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Instance"}, "response": {"$ref": "Operation"}, "httpMethod": "POST", "path": "{project}/instances", "id": "compute.instances.insert"}, "deleteAccessConfig": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "instance": {"required": true, "type": "string", "location": "path"}, "access_config": {"required": true, "type": "string", "location": "query"}, "network_interface": {"required": true, "type": "string", "location": "query"}}, "id": "compute.instances.deleteAccessConfig", "httpMethod": "POST", "path": "{project}/instances/{instance}/delete-access-config", "response": {"$ref": "Operation"}}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "instance": {"required": true, "type": "string", "location": "path"}}, "id": "compute.instances.get", "httpMethod": "GET", "path": "{project}/instances/{instance}", "response": {"$ref": "Instance"}}, "list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.instances.list", "httpMethod": "GET", "path": "{project}/instances", "response": {"$ref": "InstanceList"}}, "addAccessConfig": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "instance": {"required": true, "type": "string", "location": "path"}, "network_interface": {"required": true, "type": "string", "location": "query"}}, "request": {"$ref": "AccessConfig"}, "response": {"$ref": "Operation"}, "httpMethod": "POST", "path": "{project}/instances/{instance}/add-access-config", "id": "compute.instances.addAccessConfig"}, "delete": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "instance": {"required": true, "type": "string", "location": "path"}}, "id": "compute.instances.delete", "httpMethod": "DELETE", "path": "{project}/instances/{instance}", "response": {"$ref": "Operation"}}}}', true)); + $this->machineTypes = new Google_MachineTypesServiceResource($this, $this->serviceName, 'machineTypes', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.machineTypes.list", "httpMethod": "GET", "path": "{project}/machine-types", "response": {"$ref": "MachineTypeList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "machineType": {"required": true, "type": "string", "location": "path"}}, "id": "compute.machineTypes.get", "httpMethod": "GET", "path": "{project}/machine-types/{machineType}", "response": {"$ref": "MachineType"}}}}', true)); + $this->images = new Google_ImagesServiceResource($this, $this->serviceName, 'images', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/devstorage.read_only"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Image"}, "response": {"$ref": "Operation"}, "httpMethod": "POST", "path": "{project}/images", "id": "compute.images.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "image": {"required": true, "type": "string", "location": "path"}}, "id": "compute.images.get", "httpMethod": "GET", "path": "{project}/images/{image}", "response": {"$ref": "Image"}}, "list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.images.list", "httpMethod": "GET", "path": "{project}/images", "response": {"$ref": "ImageList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "image": {"required": true, "type": "string", "location": "path"}}, "id": "compute.images.delete", "httpMethod": "DELETE", "path": "{project}/images/{image}", "response": {"$ref": "Operation"}}}}', true)); + $this->firewalls = new Google_FirewallsServiceResource($this, $this->serviceName, 'firewalls', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Firewall"}, "response": {"$ref": "Operation"}, "httpMethod": "POST", "path": "{project}/firewalls", "id": "compute.firewalls.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"firewall": {"required": true, "type": "string", "location": "path"}, "project": {"required": true, "type": "string", "location": "path"}}, "id": "compute.firewalls.get", "httpMethod": "GET", "path": "{project}/firewalls/{firewall}", "response": {"$ref": "Firewall"}}, "list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.firewalls.list", "httpMethod": "GET", "path": "{project}/firewalls", "response": {"$ref": "FirewallList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"firewall": {"required": true, "type": "string", "location": "path"}, "project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Firewall"}, "response": {"$ref": "Operation"}, "httpMethod": "PUT", "path": "{project}/firewalls/{firewall}", "id": "compute.firewalls.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"firewall": {"required": true, "type": "string", "location": "path"}, "project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Firewall"}, "response": {"$ref": "Operation"}, "httpMethod": "PATCH", "path": "{project}/firewalls/{firewall}", "id": "compute.firewalls.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"firewall": {"required": true, "type": "string", "location": "path"}, "project": {"required": true, "type": "string", "location": "path"}}, "id": "compute.firewalls.delete", "httpMethod": "DELETE", "path": "{project}/firewalls/{firewall}", "response": {"$ref": "Operation"}}}}', true)); + $this->networks = new Google_NetworksServiceResource($this, $this->serviceName, 'networks', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Network"}, "response": {"$ref": "Operation"}, "httpMethod": "POST", "path": "{project}/networks", "id": "compute.networks.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "network": {"required": true, "type": "string", "location": "path"}}, "id": "compute.networks.get", "httpMethod": "GET", "path": "{project}/networks/{network}", "response": {"$ref": "Network"}}, "list": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"filter": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "project": {"required": true, "type": "string", "location": "path"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "compute.networks.list", "httpMethod": "GET", "path": "{project}/networks", "response": {"$ref": "NetworkList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "network": {"required": true, "type": "string", "location": "path"}}, "id": "compute.networks.delete", "httpMethod": "DELETE", "path": "{project}/networks/{network}", "response": {"$ref": "Operation"}}}}', true)); + $this->projects = new Google_ProjectsServiceResource($this, $this->serviceName, 'projects', json_decode('{"methods": {"setCommonInstanceMetadata": {"scopes": ["https://www.googleapis.com/auth/compute"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Metadata"}, "httpMethod": "POST", "path": "{project}/set-common-instance-metadata", "id": "compute.projects.setCommonInstanceMetadata"}, "get": {"scopes": ["https://www.googleapis.com/auth/compute.readonly"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}}, "id": "compute.projects.get", "httpMethod": "GET", "path": "{project}", "response": {"$ref": "Project"}}}}', true)); + + } +} + +class Google_AccessConfig extends Google_Model { + public $kind; + public $type; + public $name; + public $natIP; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setNatIP($natIP) { + $this->natIP = $natIP; + } + public function getNatIP() { + return $this->natIP; + } +} + +class Google_AttachedDisk extends Google_Model { + public $deviceName; + public $kind; + public $index; + public $source; + public $mode; + public $deleteOnTerminate; + public $type; + public function setDeviceName($deviceName) { + $this->deviceName = $deviceName; + } + public function getDeviceName() { + return $this->deviceName; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setIndex($index) { + $this->index = $index; + } + public function getIndex() { + return $this->index; + } + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setMode($mode) { + $this->mode = $mode; + } + public function getMode() { + return $this->mode; + } + public function setDeleteOnTerminate($deleteOnTerminate) { + $this->deleteOnTerminate = $deleteOnTerminate; + } + public function getDeleteOnTerminate() { + return $this->deleteOnTerminate; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_Disk extends Google_Model { + public $status; + public $sourceSnapshot; + public $kind; + public $description; + public $sizeGb; + public $id; + public $sourceSnapshotId; + public $zone; + public $creationTimestamp; + public $options; + public $selfLink; + public $name; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setSourceSnapshot($sourceSnapshot) { + $this->sourceSnapshot = $sourceSnapshot; + } + public function getSourceSnapshot() { + return $this->sourceSnapshot; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setSizeGb($sizeGb) { + $this->sizeGb = $sizeGb; + } + public function getSizeGb() { + return $this->sizeGb; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSourceSnapshotId($sourceSnapshotId) { + $this->sourceSnapshotId = $sourceSnapshotId; + } + public function getSourceSnapshotId() { + return $this->sourceSnapshotId; + } + public function setZone($zone) { + $this->zone = $zone; + } + public function getZone() { + return $this->zone; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setOptions($options) { + $this->options = $options; + } + public function getOptions() { + return $this->options; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_DiskList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Disk'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Disk', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Firewall extends Google_Model { + public $kind; + public $description; + public $sourceTags; + public $sourceRanges; + public $network; + public $targetTags; + protected $__allowedType = 'Google_FirewallAllowed'; + protected $__allowedDataType = 'array'; + public $allowed; + public $creationTimestamp; + public $id; + public $selfLink; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setSourceTags($sourceTags) { + $this->sourceTags = $sourceTags; + } + public function getSourceTags() { + return $this->sourceTags; + } + public function setSourceRanges($sourceRanges) { + $this->sourceRanges = $sourceRanges; + } + public function getSourceRanges() { + return $this->sourceRanges; + } + public function setNetwork($network) { + $this->network = $network; + } + public function getNetwork() { + return $this->network; + } + public function setTargetTags($targetTags) { + $this->targetTags = $targetTags; + } + public function getTargetTags() { + return $this->targetTags; + } + public function setAllowed($allowed) { + $this->assertIsArray($allowed, 'Google_FirewallAllowed', __METHOD__); + $this->allowed = $allowed; + } + public function getAllowed() { + return $this->allowed; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_FirewallAllowed extends Google_Model { + public $IPProtocol; + public $ports; + public function setIPProtocol($IPProtocol) { + $this->IPProtocol = $IPProtocol; + } + public function getIPProtocol() { + return $this->IPProtocol; + } + public function setPorts($ports) { + $this->ports = $ports; + } + public function getPorts() { + return $this->ports; + } +} + +class Google_FirewallList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Firewall'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Firewall', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Image extends Google_Model { + public $kind; + public $description; + protected $__rawDiskType = 'Google_ImageRawDisk'; + protected $__rawDiskDataType = ''; + public $rawDisk; + public $preferredKernel; + protected $__diskSnapshotType = 'Google_ImageDiskSnapshot'; + protected $__diskSnapshotDataType = ''; + public $diskSnapshot; + public $sourceType; + public $creationTimestamp; + public $id; + public $selfLink; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setRawDisk(Google_ImageRawDisk $rawDisk) { + $this->rawDisk = $rawDisk; + } + public function getRawDisk() { + return $this->rawDisk; + } + public function setPreferredKernel($preferredKernel) { + $this->preferredKernel = $preferredKernel; + } + public function getPreferredKernel() { + return $this->preferredKernel; + } + public function setDiskSnapshot(Google_ImageDiskSnapshot $diskSnapshot) { + $this->diskSnapshot = $diskSnapshot; + } + public function getDiskSnapshot() { + return $this->diskSnapshot; + } + public function setSourceType($sourceType) { + $this->sourceType = $sourceType; + } + public function getSourceType() { + return $this->sourceType; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_ImageDiskSnapshot extends Google_Model { + public $source; + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } +} + +class Google_ImageList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Image'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Image', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ImageRawDisk extends Google_Model { + public $containerType; + public $source; + public $sha1Checksum; + public function setContainerType($containerType) { + $this->containerType = $containerType; + } + public function getContainerType() { + return $this->containerType; + } + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setSha1Checksum($sha1Checksum) { + $this->sha1Checksum = $sha1Checksum; + } + public function getSha1Checksum() { + return $this->sha1Checksum; + } +} + +class Google_Instance extends Google_Model { + public $status; + public $kind; + public $machineType; + public $description; + public $zone; + public $tags; + public $image; + protected $__disksType = 'Google_AttachedDisk'; + protected $__disksDataType = 'array'; + public $disks; + public $name; + public $statusMessage; + protected $__serviceAccountsType = 'Google_ServiceAccount'; + protected $__serviceAccountsDataType = 'array'; + public $serviceAccounts; + protected $__networkInterfacesType = 'Google_NetworkInterface'; + protected $__networkInterfacesDataType = 'array'; + public $networkInterfaces; + public $creationTimestamp; + public $id; + public $selfLink; + protected $__metadataType = 'Google_Metadata'; + protected $__metadataDataType = ''; + public $metadata; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setMachineType($machineType) { + $this->machineType = $machineType; + } + public function getMachineType() { + return $this->machineType; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setZone($zone) { + $this->zone = $zone; + } + public function getZone() { + return $this->zone; + } + public function setTags($tags) { + $this->tags = $tags; + } + public function getTags() { + return $this->tags; + } + public function setImage($image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisks($disks) { + $this->assertIsArray($disks, 'Google_AttachedDisk', __METHOD__); + $this->disks = $disks; + } + public function getDisks() { + return $this->disks; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setStatusMessage($statusMessage) { + $this->statusMessage = $statusMessage; + } + public function getStatusMessage() { + return $this->statusMessage; + } + public function setServiceAccounts($serviceAccounts) { + $this->assertIsArray($serviceAccounts, 'Google_ServiceAccount', __METHOD__); + $this->serviceAccounts = $serviceAccounts; + } + public function getServiceAccounts() { + return $this->serviceAccounts; + } + public function setNetworkInterfaces($networkInterfaces) { + $this->assertIsArray($networkInterfaces, 'Google_NetworkInterface', __METHOD__); + $this->networkInterfaces = $networkInterfaces; + } + public function getNetworkInterfaces() { + return $this->networkInterfaces; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setMetadata(Google_Metadata $metadata) { + $this->metadata = $metadata; + } + public function getMetadata() { + return $this->metadata; + } +} + +class Google_InstanceList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Instance'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Instance', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Kernel extends Google_Model { + public $kind; + public $description; + public $creationTimestamp; + public $id; + public $selfLink; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_KernelList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Kernel'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Kernel', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_MachineType extends Google_Model { + public $guestCpus; + public $imageSpaceGb; + public $kind; + protected $__ephemeralDisksType = 'Google_MachineTypeEphemeralDisks'; + protected $__ephemeralDisksDataType = 'array'; + public $ephemeralDisks; + public $maximumPersistentDisksSizeGb; + public $description; + public $maximumPersistentDisks; + public $name; + public $memoryMb; + public $availableZone; + public $creationTimestamp; + public $id; + public $selfLink; + public $hostCpus; + public function setGuestCpus($guestCpus) { + $this->guestCpus = $guestCpus; + } + public function getGuestCpus() { + return $this->guestCpus; + } + public function setImageSpaceGb($imageSpaceGb) { + $this->imageSpaceGb = $imageSpaceGb; + } + public function getImageSpaceGb() { + return $this->imageSpaceGb; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEphemeralDisks($ephemeralDisks) { + $this->assertIsArray($ephemeralDisks, 'Google_MachineTypeEphemeralDisks', __METHOD__); + $this->ephemeralDisks = $ephemeralDisks; + } + public function getEphemeralDisks() { + return $this->ephemeralDisks; + } + public function setMaximumPersistentDisksSizeGb($maximumPersistentDisksSizeGb) { + $this->maximumPersistentDisksSizeGb = $maximumPersistentDisksSizeGb; + } + public function getMaximumPersistentDisksSizeGb() { + return $this->maximumPersistentDisksSizeGb; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setMaximumPersistentDisks($maximumPersistentDisks) { + $this->maximumPersistentDisks = $maximumPersistentDisks; + } + public function getMaximumPersistentDisks() { + return $this->maximumPersistentDisks; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setMemoryMb($memoryMb) { + $this->memoryMb = $memoryMb; + } + public function getMemoryMb() { + return $this->memoryMb; + } + public function setAvailableZone($availableZone) { + $this->availableZone = $availableZone; + } + public function getAvailableZone() { + return $this->availableZone; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setHostCpus($hostCpus) { + $this->hostCpus = $hostCpus; + } + public function getHostCpus() { + return $this->hostCpus; + } +} + +class Google_MachineTypeEphemeralDisks extends Google_Model { + public $diskGb; + public function setDiskGb($diskGb) { + $this->diskGb = $diskGb; + } + public function getDiskGb() { + return $this->diskGb; + } +} + +class Google_MachineTypeList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_MachineType'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_MachineType', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Metadata extends Google_Model { + protected $__itemsType = 'Google_MetadataItems'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems($items) { + $this->assertIsArray($items, 'Google_MetadataItems', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_MetadataItems extends Google_Model { + public $value; + public $key; + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } + public function setKey($key) { + $this->key = $key; + } + public function getKey() { + return $this->key; + } +} + +class Google_Network extends Google_Model { + public $kind; + public $description; + public $IPv4Range; + public $gatewayIPv4; + public $creationTimestamp; + public $id; + public $selfLink; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setIPv4Range($IPv4Range) { + $this->IPv4Range = $IPv4Range; + } + public function getIPv4Range() { + return $this->IPv4Range; + } + public function setGatewayIPv4($gatewayIPv4) { + $this->gatewayIPv4 = $gatewayIPv4; + } + public function getGatewayIPv4() { + return $this->gatewayIPv4; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_NetworkInterface extends Google_Model { + public $network; + protected $__accessConfigsType = 'Google_AccessConfig'; + protected $__accessConfigsDataType = 'array'; + public $accessConfigs; + public $networkIP; + public $kind; + public $name; + public function setNetwork($network) { + $this->network = $network; + } + public function getNetwork() { + return $this->network; + } + public function setAccessConfigs($accessConfigs) { + $this->assertIsArray($accessConfigs, 'Google_AccessConfig', __METHOD__); + $this->accessConfigs = $accessConfigs; + } + public function getAccessConfigs() { + return $this->accessConfigs; + } + public function setNetworkIP($networkIP) { + $this->networkIP = $networkIP; + } + public function getNetworkIP() { + return $this->networkIP; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_NetworkList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Network'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Network', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Operation extends Google_Model { + public $status; + public $kind; + public $name; + public $startTime; + public $httpErrorStatusCode; + public $user; + protected $__errorType = 'Google_OperationError'; + protected $__errorDataType = ''; + public $error; + public $targetId; + public $operationType; + public $statusMessage; + public $insertTime; + public $httpErrorMessage; + public $progress; + public $clientOperationId; + public $endTime; + public $creationTimestamp; + public $id; + public $selfLink; + public $targetLink; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setStartTime($startTime) { + $this->startTime = $startTime; + } + public function getStartTime() { + return $this->startTime; + } + public function setHttpErrorStatusCode($httpErrorStatusCode) { + $this->httpErrorStatusCode = $httpErrorStatusCode; + } + public function getHttpErrorStatusCode() { + return $this->httpErrorStatusCode; + } + public function setUser($user) { + $this->user = $user; + } + public function getUser() { + return $this->user; + } + public function setError(Google_OperationError $error) { + $this->error = $error; + } + public function getError() { + return $this->error; + } + public function setTargetId($targetId) { + $this->targetId = $targetId; + } + public function getTargetId() { + return $this->targetId; + } + public function setOperationType($operationType) { + $this->operationType = $operationType; + } + public function getOperationType() { + return $this->operationType; + } + public function setStatusMessage($statusMessage) { + $this->statusMessage = $statusMessage; + } + public function getStatusMessage() { + return $this->statusMessage; + } + public function setInsertTime($insertTime) { + $this->insertTime = $insertTime; + } + public function getInsertTime() { + return $this->insertTime; + } + public function setHttpErrorMessage($httpErrorMessage) { + $this->httpErrorMessage = $httpErrorMessage; + } + public function getHttpErrorMessage() { + return $this->httpErrorMessage; + } + public function setProgress($progress) { + $this->progress = $progress; + } + public function getProgress() { + return $this->progress; + } + public function setClientOperationId($clientOperationId) { + $this->clientOperationId = $clientOperationId; + } + public function getClientOperationId() { + return $this->clientOperationId; + } + public function setEndTime($endTime) { + $this->endTime = $endTime; + } + public function getEndTime() { + return $this->endTime; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setTargetLink($targetLink) { + $this->targetLink = $targetLink; + } + public function getTargetLink() { + return $this->targetLink; + } +} + +class Google_OperationError extends Google_Model { + protected $__errorsType = 'Google_OperationErrorErrors'; + protected $__errorsDataType = 'array'; + public $errors; + public function setErrors($errors) { + $this->assertIsArray($errors, 'Google_OperationErrorErrors', __METHOD__); + $this->errors = $errors; + } + public function getErrors() { + return $this->errors; + } +} + +class Google_OperationErrorErrors extends Google_Model { + public $message; + public $code; + public $location; + public function setMessage($message) { + $this->message = $message; + } + public function getMessage() { + return $this->message; + } + public function setCode($code) { + $this->code = $code; + } + public function getCode() { + return $this->code; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } +} + +class Google_OperationList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Operation'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Operation', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Project extends Google_Model { + public $kind; + public $description; + protected $__commonInstanceMetadataType = 'Google_Metadata'; + protected $__commonInstanceMetadataDataType = ''; + public $commonInstanceMetadata; + public $externalIpAddresses; + protected $__quotasType = 'Google_ProjectQuotas'; + protected $__quotasDataType = 'array'; + public $quotas; + public $creationTimestamp; + public $id; + public $selfLink; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setCommonInstanceMetadata(Google_Metadata $commonInstanceMetadata) { + $this->commonInstanceMetadata = $commonInstanceMetadata; + } + public function getCommonInstanceMetadata() { + return $this->commonInstanceMetadata; + } + public function setExternalIpAddresses($externalIpAddresses) { + $this->externalIpAddresses = $externalIpAddresses; + } + public function getExternalIpAddresses() { + return $this->externalIpAddresses; + } + public function setQuotas($quotas) { + $this->assertIsArray($quotas, 'Google_ProjectQuotas', __METHOD__); + $this->quotas = $quotas; + } + public function getQuotas() { + return $this->quotas; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_ProjectQuotas extends Google_Model { + public $usage; + public $metric; + public $limit; + public function setUsage($usage) { + $this->usage = $usage; + } + public function getUsage() { + return $this->usage; + } + public function setMetric($metric) { + $this->metric = $metric; + } + public function getMetric() { + return $this->metric; + } + public function setLimit($limit) { + $this->limit = $limit; + } + public function getLimit() { + return $this->limit; + } +} + +class Google_ServiceAccount extends Google_Model { + public $scopes; + public $kind; + public $email; + public function setScopes($scopes) { + $this->scopes = $scopes; + } + public function getScopes() { + return $this->scopes; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } +} + +class Google_Snapshot extends Google_Model { + public $status; + public $kind; + public $description; + public $sourceDisk; + public $sourceDiskId; + public $diskSizeGb; + public $creationTimestamp; + public $id; + public $selfLink; + public $name; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setSourceDisk($sourceDisk) { + $this->sourceDisk = $sourceDisk; + } + public function getSourceDisk() { + return $this->sourceDisk; + } + public function setSourceDiskId($sourceDiskId) { + $this->sourceDiskId = $sourceDiskId; + } + public function getSourceDiskId() { + return $this->sourceDiskId; + } + public function setDiskSizeGb($diskSizeGb) { + $this->diskSizeGb = $diskSizeGb; + } + public function getDiskSizeGb() { + return $this->diskSizeGb; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_SnapshotList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Snapshot'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Snapshot', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Zone extends Google_Model { + public $status; + public $kind; + public $availableMachineType; + public $description; + protected $__maintenanceWindowsType = 'Google_ZoneMaintenanceWindows'; + protected $__maintenanceWindowsDataType = 'array'; + public $maintenanceWindows; + public $creationTimestamp; + public $id; + public $selfLink; + public $name; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAvailableMachineType($availableMachineType) { + $this->availableMachineType = $availableMachineType; + } + public function getAvailableMachineType() { + return $this->availableMachineType; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setMaintenanceWindows($maintenanceWindows) { + $this->assertIsArray($maintenanceWindows, 'Google_ZoneMaintenanceWindows', __METHOD__); + $this->maintenanceWindows = $maintenanceWindows; + } + public function getMaintenanceWindows() { + return $this->maintenanceWindows; + } + public function setCreationTimestamp($creationTimestamp) { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() { + return $this->creationTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_ZoneList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Zone'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Zone', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ZoneMaintenanceWindows extends Google_Model { + public $endTime; + public $beginTime; + public $name; + public $description; + public function setEndTime($endTime) { + $this->endTime = $endTime; + } + public function getEndTime() { + return $this->endTime; + } + public function setBeginTime($beginTime) { + $this->beginTime = $beginTime; + } + public function getBeginTime() { + return $this->beginTime; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } +} diff --git a/modules/oauth/src/google/contrib/Google_CustomsearchService.php b/modules/oauth/src/google/contrib/Google_CustomsearchService.php new file mode 100644 index 0000000..d482c3d --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_CustomsearchService.php @@ -0,0 +1,836 @@ + + * $customsearchService = new Google_CustomsearchService(...); + * $cse = $customsearchService->cse; + * + */ + class Google_CseServiceResource extends Google_ServiceResource { + + + /** + * Returns metadata about the search performed, metadata about the custom search engine used for the + * search, and the search results. (cse.list) + * + * @param string $q Query + * @param array $optParams Optional parameters. + * + * @opt_param string sort The sort expression to apply to the results + * @opt_param string orTerms Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms + * @opt_param string highRange Creates a range in form as_nlo value..as_nhi value and attempts to append it to query + * @opt_param string num Number of search results to return + * @opt_param string cr Country restrict(s). + * @opt_param string imgType Returns images of a type, which can be one of: clipart, face, lineart, news, and photo. + * @opt_param string gl Geolocation of end user. + * @opt_param string relatedSite Specifies that all search results should be pages that are related to the specified URL + * @opt_param string searchType Specifies the search type: image. + * @opt_param string fileType Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ... + * @opt_param string start The index of the first result to return + * @opt_param string imgDominantColor Returns images of a specific dominant color: yellow, green, teal, blue, purple, pink, white, gray, black and brown. + * @opt_param string lr The language restriction for the search results + * @opt_param string siteSearch Specifies all search results should be pages from a given site + * @opt_param string cref The URL of a linked custom search engine + * @opt_param string dateRestrict Specifies all search results are from a time period + * @opt_param string safe Search safety level + * @opt_param string c2coff Turns off the translation between zh-CN and zh-TW. + * @opt_param string googlehost The local Google domain to use to perform the search. + * @opt_param string hq Appends the extra query terms to the query. + * @opt_param string exactTerms Identifies a phrase that all documents in the search results must contain + * @opt_param string hl Sets the user interface language. + * @opt_param string lowRange Creates a range in form as_nlo value..as_nhi value and attempts to append it to query + * @opt_param string imgSize Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge. + * @opt_param string imgColorType Returns black and white, grayscale, or color images: mono, gray, and color. + * @opt_param string rights Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these. + * @opt_param string excludeTerms Identifies a word or phrase that should not appear in any documents in the search results + * @opt_param string filter Controls turning on or off the duplicate content filter. + * @opt_param string linkSite Specifies that all search results should contain a link to a particular URL + * @opt_param string cx The custom search engine ID to scope this search query + * @opt_param string siteSearchFilter Controls whether to include or exclude results from the site named in the as_sitesearch parameter + * @return Google_Search + */ + public function listCse($q, $optParams = array()) { + $params = array('q' => $q); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Search($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Customsearch (v1). + * + *

+ * Lets you search over a website or collection of websites + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_CustomsearchService extends Google_Service { + public $cse; + /** + * Constructs the internal representation of the Customsearch service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'customsearch/'; + $this->version = 'v1'; + $this->serviceName = 'customsearch'; + + $client->addService($this->serviceName, $this->version); + $this->cse = new Google_CseServiceResource($this, $this->serviceName, 'cse', json_decode('{"methods": {"list": {"httpMethod": "GET", "response": {"$ref": "Search"}, "id": "search.cse.list", "parameters": {"sort": {"type": "string", "location": "query"}, "orTerms": {"type": "string", "location": "query"}, "highRange": {"type": "string", "location": "query"}, "num": {"default": "10", "type": "integer", "location": "query", "format": "uint32"}, "cr": {"type": "string", "location": "query"}, "imgType": {"enum": ["clipart", "face", "lineart", "news", "photo"], "type": "string", "location": "query"}, "gl": {"type": "string", "location": "query"}, "q": {"required": true, "type": "string", "location": "query"}, "relatedSite": {"type": "string", "location": "query"}, "searchType": {"enum": ["image"], "type": "string", "location": "query"}, "fileType": {"type": "string", "location": "query"}, "start": {"type": "integer", "location": "query", "format": "uint32"}, "imgDominantColor": {"enum": ["black", "blue", "brown", "gray", "green", "pink", "purple", "teal", "white", "yellow"], "type": "string", "location": "query"}, "lr": {"enum": ["lang_ar", "lang_bg", "lang_ca", "lang_cs", "lang_da", "lang_de", "lang_el", "lang_en", "lang_es", "lang_et", "lang_fi", "lang_fr", "lang_hr", "lang_hu", "lang_id", "lang_is", "lang_it", "lang_iw", "lang_ja", "lang_ko", "lang_lt", "lang_lv", "lang_nl", "lang_no", "lang_pl", "lang_pt", "lang_ro", "lang_ru", "lang_sk", "lang_sl", "lang_sr", "lang_sv", "lang_tr", "lang_zh-CN", "lang_zh-TW"], "type": "string", "location": "query"}, "siteSearch": {"type": "string", "location": "query"}, "cref": {"type": "string", "location": "query"}, "dateRestrict": {"type": "string", "location": "query"}, "safe": {"default": "off", "enum": ["high", "medium", "off"], "type": "string", "location": "query"}, "c2coff": {"type": "string", "location": "query"}, "googlehost": {"type": "string", "location": "query"}, "hq": {"type": "string", "location": "query"}, "exactTerms": {"type": "string", "location": "query"}, "hl": {"type": "string", "location": "query"}, "lowRange": {"type": "string", "location": "query"}, "imgSize": {"enum": ["huge", "icon", "large", "medium", "small", "xlarge", "xxlarge"], "type": "string", "location": "query"}, "imgColorType": {"enum": ["color", "gray", "mono"], "type": "string", "location": "query"}, "rights": {"type": "string", "location": "query"}, "excludeTerms": {"type": "string", "location": "query"}, "filter": {"enum": ["0", "1"], "type": "string", "location": "query"}, "linkSite": {"type": "string", "location": "query"}, "cx": {"type": "string", "location": "query"}, "siteSearchFilter": {"enum": ["e", "i"], "type": "string", "location": "query"}}, "path": "v1"}}}', true)); + + } +} + +class Google_Context extends Google_Model { + protected $__facetsType = 'Google_ContextFacets'; + protected $__facetsDataType = 'array'; + public $facets; + public $title; + public function setFacets(/* array(Google_ContextFacets) */ $facets) { + $this->assertIsArray($facets, 'Google_ContextFacets', __METHOD__); + $this->facets = $facets; + } + public function getFacets() { + return $this->facets; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } +} + +class Google_ContextFacets extends Google_Model { + public $anchor; + public $label; + public function setAnchor($anchor) { + $this->anchor = $anchor; + } + public function getAnchor() { + return $this->anchor; + } + public function setLabel($label) { + $this->label = $label; + } + public function getLabel() { + return $this->label; + } +} + +class Google_Promotion extends Google_Model { + public $title; + public $displayLink; + public $htmlTitle; + public $link; + protected $__bodyLinesType = 'Google_PromotionBodyLines'; + protected $__bodyLinesDataType = 'array'; + public $bodyLines; + protected $__imageType = 'Google_PromotionImage'; + protected $__imageDataType = ''; + public $image; + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setDisplayLink($displayLink) { + $this->displayLink = $displayLink; + } + public function getDisplayLink() { + return $this->displayLink; + } + public function setHtmlTitle($htmlTitle) { + $this->htmlTitle = $htmlTitle; + } + public function getHtmlTitle() { + return $this->htmlTitle; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setBodyLines(/* array(Google_PromotionBodyLines) */ $bodyLines) { + $this->assertIsArray($bodyLines, 'Google_PromotionBodyLines', __METHOD__); + $this->bodyLines = $bodyLines; + } + public function getBodyLines() { + return $this->bodyLines; + } + public function setImage(Google_PromotionImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } +} + +class Google_PromotionBodyLines extends Google_Model { + public $url; + public $htmlTitle; + public $link; + public $title; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setHtmlTitle($htmlTitle) { + $this->htmlTitle = $htmlTitle; + } + public function getHtmlTitle() { + return $this->htmlTitle; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } +} + +class Google_PromotionImage extends Google_Model { + public $source; + public $width; + public $height; + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } +} + +class Google_Query extends Google_Model { + public $sort; + public $inputEncoding; + public $orTerms; + public $highRange; + public $cx; + public $startPage; + public $disableCnTwTranslation; + public $cr; + public $imgType; + public $gl; + public $relatedSite; + public $searchType; + public $title; + public $googleHost; + public $fileType; + public $imgDominantColor; + public $siteSearch; + public $cref; + public $dateRestrict; + public $safe; + public $outputEncoding; + public $hq; + public $searchTerms; + public $exactTerms; + public $language; + public $hl; + public $totalResults; + public $lowRange; + public $count; + public $imgSize; + public $imgColorType; + public $rights; + public $startIndex; + public $excludeTerms; + public $filter; + public $linkSite; + public $siteSearchFilter; + public function setSort($sort) { + $this->sort = $sort; + } + public function getSort() { + return $this->sort; + } + public function setInputEncoding($inputEncoding) { + $this->inputEncoding = $inputEncoding; + } + public function getInputEncoding() { + return $this->inputEncoding; + } + public function setOrTerms($orTerms) { + $this->orTerms = $orTerms; + } + public function getOrTerms() { + return $this->orTerms; + } + public function setHighRange($highRange) { + $this->highRange = $highRange; + } + public function getHighRange() { + return $this->highRange; + } + public function setCx($cx) { + $this->cx = $cx; + } + public function getCx() { + return $this->cx; + } + public function setStartPage($startPage) { + $this->startPage = $startPage; + } + public function getStartPage() { + return $this->startPage; + } + public function setDisableCnTwTranslation($disableCnTwTranslation) { + $this->disableCnTwTranslation = $disableCnTwTranslation; + } + public function getDisableCnTwTranslation() { + return $this->disableCnTwTranslation; + } + public function setCr($cr) { + $this->cr = $cr; + } + public function getCr() { + return $this->cr; + } + public function setImgType($imgType) { + $this->imgType = $imgType; + } + public function getImgType() { + return $this->imgType; + } + public function setGl($gl) { + $this->gl = $gl; + } + public function getGl() { + return $this->gl; + } + public function setRelatedSite($relatedSite) { + $this->relatedSite = $relatedSite; + } + public function getRelatedSite() { + return $this->relatedSite; + } + public function setSearchType($searchType) { + $this->searchType = $searchType; + } + public function getSearchType() { + return $this->searchType; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setGoogleHost($googleHost) { + $this->googleHost = $googleHost; + } + public function getGoogleHost() { + return $this->googleHost; + } + public function setFileType($fileType) { + $this->fileType = $fileType; + } + public function getFileType() { + return $this->fileType; + } + public function setImgDominantColor($imgDominantColor) { + $this->imgDominantColor = $imgDominantColor; + } + public function getImgDominantColor() { + return $this->imgDominantColor; + } + public function setSiteSearch($siteSearch) { + $this->siteSearch = $siteSearch; + } + public function getSiteSearch() { + return $this->siteSearch; + } + public function setCref($cref) { + $this->cref = $cref; + } + public function getCref() { + return $this->cref; + } + public function setDateRestrict($dateRestrict) { + $this->dateRestrict = $dateRestrict; + } + public function getDateRestrict() { + return $this->dateRestrict; + } + public function setSafe($safe) { + $this->safe = $safe; + } + public function getSafe() { + return $this->safe; + } + public function setOutputEncoding($outputEncoding) { + $this->outputEncoding = $outputEncoding; + } + public function getOutputEncoding() { + return $this->outputEncoding; + } + public function setHq($hq) { + $this->hq = $hq; + } + public function getHq() { + return $this->hq; + } + public function setSearchTerms($searchTerms) { + $this->searchTerms = $searchTerms; + } + public function getSearchTerms() { + return $this->searchTerms; + } + public function setExactTerms($exactTerms) { + $this->exactTerms = $exactTerms; + } + public function getExactTerms() { + return $this->exactTerms; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } + public function setHl($hl) { + $this->hl = $hl; + } + public function getHl() { + return $this->hl; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } + public function setLowRange($lowRange) { + $this->lowRange = $lowRange; + } + public function getLowRange() { + return $this->lowRange; + } + public function setCount($count) { + $this->count = $count; + } + public function getCount() { + return $this->count; + } + public function setImgSize($imgSize) { + $this->imgSize = $imgSize; + } + public function getImgSize() { + return $this->imgSize; + } + public function setImgColorType($imgColorType) { + $this->imgColorType = $imgColorType; + } + public function getImgColorType() { + return $this->imgColorType; + } + public function setRights($rights) { + $this->rights = $rights; + } + public function getRights() { + return $this->rights; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setExcludeTerms($excludeTerms) { + $this->excludeTerms = $excludeTerms; + } + public function getExcludeTerms() { + return $this->excludeTerms; + } + public function setFilter($filter) { + $this->filter = $filter; + } + public function getFilter() { + return $this->filter; + } + public function setLinkSite($linkSite) { + $this->linkSite = $linkSite; + } + public function getLinkSite() { + return $this->linkSite; + } + public function setSiteSearchFilter($siteSearchFilter) { + $this->siteSearchFilter = $siteSearchFilter; + } + public function getSiteSearchFilter() { + return $this->siteSearchFilter; + } +} + +class Google_Result extends Google_Model { + public $snippet; + public $kind; + protected $__labelsType = 'Google_ResultLabels'; + protected $__labelsDataType = 'array'; + public $labels; + public $title; + public $displayLink; + public $cacheId; + public $formattedUrl; + public $htmlFormattedUrl; + public $pagemap; + public $htmlTitle; + public $htmlSnippet; + public $link; + protected $__imageType = 'Google_ResultImage'; + protected $__imageDataType = ''; + public $image; + public $mime; + public $fileFormat; + public function setSnippet($snippet) { + $this->snippet = $snippet; + } + public function getSnippet() { + return $this->snippet; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLabels(/* array(Google_ResultLabels) */ $labels) { + $this->assertIsArray($labels, 'Google_ResultLabels', __METHOD__); + $this->labels = $labels; + } + public function getLabels() { + return $this->labels; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setDisplayLink($displayLink) { + $this->displayLink = $displayLink; + } + public function getDisplayLink() { + return $this->displayLink; + } + public function setCacheId($cacheId) { + $this->cacheId = $cacheId; + } + public function getCacheId() { + return $this->cacheId; + } + public function setFormattedUrl($formattedUrl) { + $this->formattedUrl = $formattedUrl; + } + public function getFormattedUrl() { + return $this->formattedUrl; + } + public function setHtmlFormattedUrl($htmlFormattedUrl) { + $this->htmlFormattedUrl = $htmlFormattedUrl; + } + public function getHtmlFormattedUrl() { + return $this->htmlFormattedUrl; + } + public function setPagemap($pagemap) { + $this->pagemap = $pagemap; + } + public function getPagemap() { + return $this->pagemap; + } + public function setHtmlTitle($htmlTitle) { + $this->htmlTitle = $htmlTitle; + } + public function getHtmlTitle() { + return $this->htmlTitle; + } + public function setHtmlSnippet($htmlSnippet) { + $this->htmlSnippet = $htmlSnippet; + } + public function getHtmlSnippet() { + return $this->htmlSnippet; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setImage(Google_ResultImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setMime($mime) { + $this->mime = $mime; + } + public function getMime() { + return $this->mime; + } + public function setFileFormat($fileFormat) { + $this->fileFormat = $fileFormat; + } + public function getFileFormat() { + return $this->fileFormat; + } +} + +class Google_ResultImage extends Google_Model { + public $thumbnailWidth; + public $byteSize; + public $height; + public $width; + public $contextLink; + public $thumbnailLink; + public $thumbnailHeight; + public function setThumbnailWidth($thumbnailWidth) { + $this->thumbnailWidth = $thumbnailWidth; + } + public function getThumbnailWidth() { + return $this->thumbnailWidth; + } + public function setByteSize($byteSize) { + $this->byteSize = $byteSize; + } + public function getByteSize() { + return $this->byteSize; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setContextLink($contextLink) { + $this->contextLink = $contextLink; + } + public function getContextLink() { + return $this->contextLink; + } + public function setThumbnailLink($thumbnailLink) { + $this->thumbnailLink = $thumbnailLink; + } + public function getThumbnailLink() { + return $this->thumbnailLink; + } + public function setThumbnailHeight($thumbnailHeight) { + $this->thumbnailHeight = $thumbnailHeight; + } + public function getThumbnailHeight() { + return $this->thumbnailHeight; + } +} + +class Google_ResultLabels extends Google_Model { + public $displayName; + public $name; + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_Search extends Google_Model { + protected $__promotionsType = 'Google_Promotion'; + protected $__promotionsDataType = 'array'; + public $promotions; + public $kind; + protected $__urlType = 'Google_SearchUrl'; + protected $__urlDataType = ''; + public $url; + protected $__itemsType = 'Google_Result'; + protected $__itemsDataType = 'array'; + public $items; + protected $__contextType = 'Google_Context'; + protected $__contextDataType = ''; + public $context; + protected $__queriesType = 'Google_Query'; + protected $__queriesDataType = 'map'; + public $queries; + protected $__spellingType = 'Google_SearchSpelling'; + protected $__spellingDataType = ''; + public $spelling; + protected $__searchInformationType = 'Google_SearchSearchInformation'; + protected $__searchInformationDataType = ''; + public $searchInformation; + public function setPromotions(/* array(Google_Promotion) */ $promotions) { + $this->assertIsArray($promotions, 'Google_Promotion', __METHOD__); + $this->promotions = $promotions; + } + public function getPromotions() { + return $this->promotions; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUrl(Google_SearchUrl $url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setItems(/* array(Google_Result) */ $items) { + $this->assertIsArray($items, 'Google_Result', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setContext(Google_Context $context) { + $this->context = $context; + } + public function getContext() { + return $this->context; + } + public function setQueries(Google_Query $queries) { + $this->queries = $queries; + } + public function getQueries() { + return $this->queries; + } + public function setSpelling(Google_SearchSpelling $spelling) { + $this->spelling = $spelling; + } + public function getSpelling() { + return $this->spelling; + } + public function setSearchInformation(Google_SearchSearchInformation $searchInformation) { + $this->searchInformation = $searchInformation; + } + public function getSearchInformation() { + return $this->searchInformation; + } +} + +class Google_SearchSearchInformation extends Google_Model { + public $formattedSearchTime; + public $formattedTotalResults; + public $totalResults; + public $searchTime; + public function setFormattedSearchTime($formattedSearchTime) { + $this->formattedSearchTime = $formattedSearchTime; + } + public function getFormattedSearchTime() { + return $this->formattedSearchTime; + } + public function setFormattedTotalResults($formattedTotalResults) { + $this->formattedTotalResults = $formattedTotalResults; + } + public function getFormattedTotalResults() { + return $this->formattedTotalResults; + } + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } + public function setSearchTime($searchTime) { + $this->searchTime = $searchTime; + } + public function getSearchTime() { + return $this->searchTime; + } +} + +class Google_SearchSpelling extends Google_Model { + public $correctedQuery; + public $htmlCorrectedQuery; + public function setCorrectedQuery($correctedQuery) { + $this->correctedQuery = $correctedQuery; + } + public function getCorrectedQuery() { + return $this->correctedQuery; + } + public function setHtmlCorrectedQuery($htmlCorrectedQuery) { + $this->htmlCorrectedQuery = $htmlCorrectedQuery; + } + public function getHtmlCorrectedQuery() { + return $this->htmlCorrectedQuery; + } +} + +class Google_SearchUrl extends Google_Model { + public $type; + public $template; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setTemplate($template) { + $this->template = $template; + } + public function getTemplate() { + return $this->template; + } +} diff --git a/modules/oauth/src/google/contrib/Google_DriveService.php b/modules/oauth/src/google/contrib/Google_DriveService.php new file mode 100644 index 0000000..8ffb603 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_DriveService.php @@ -0,0 +1,2157 @@ + + * $driveService = new Google_DriveService(...); + * $files = $driveService->files; + * + */ + class Google_FilesServiceResource extends Google_ServiceResource { + + + /** + * Insert a new file. (files.insert) + * + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert Whether to convert this file to the corresponding Google Docs format. + * @opt_param string targetLanguage Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language. + * @opt_param string sourceLanguage The language of the original file to be translated. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param bool pinned Whether to pin the head revision of the uploaded file. + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, or .gif uploads. + * @opt_param string timedTextTrackName The timed text track name. + * @opt_param string timedTextLanguage The language of the timed text. + * @return Google_DriveFile + */ + public function insert(Google_DriveFile $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Restores a file from the trash. (files.untrash) + * + * @param string $fileId The ID of the file to untrash. + * @param array $optParams Optional parameters. + * @return Google_DriveFile + */ + public function untrash($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('untrash', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Moves a file to the trash. (files.trash) + * + * @param string $fileId The ID of the file to trash. + * @param array $optParams Optional parameters. + * @return Google_DriveFile + */ + public function trash($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('trash', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Gets a file's metadata by ID. (files.get) + * + * @param string $fileId The ID for the file in question. + * @param array $optParams Optional parameters. + * + * @opt_param bool updateViewedDate Whether to update the view date after successfully retrieving the file. + * @opt_param string projection This parameter is deprecated and has no function. + * @return Google_DriveFile + */ + public function get($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Lists the user's files. (files.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string q Query string for searching files. + * @opt_param string pageToken Page token for files. + * @opt_param string projection This parameter is deprecated and has no function. + * @opt_param int maxResults Maximum number of files to return. + * @return Google_FileList + */ + public function listFiles($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_FileList($data); + } else { + return $data; + } + } + /** + * Updates file metadata and/or content (files.update) + * + * @param string $fileId The ID of the file to update. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert Whether to convert this file to the corresponding Google Docs format. + * @opt_param string targetLanguage Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language. + * @opt_param bool setModifiedDate Whether to set the modified date with the supplied modified date. + * @opt_param bool updateViewedDate Whether to update the view date after successfully updating the file. + * @opt_param string sourceLanguage The language of the original file to be translated. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param bool pinned Whether to pin the new revision. + * @opt_param bool newRevision Whether a blob upload should create a new revision. If false, the blob data in the current head revision will be replaced. + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, or .gif uploads. + * @opt_param string timedTextLanguage The language of the timed text. + * @opt_param string timedTextTrackName The timed text track name. + * @return Google_DriveFile + */ + public function update($fileId, Google_DriveFile $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Updates file metadata and/or content. This method supports patch semantics. (files.patch) + * + * @param string $fileId The ID of the file to update. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert Whether to convert this file to the corresponding Google Docs format. + * @opt_param string targetLanguage Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language. + * @opt_param bool setModifiedDate Whether to set the modified date with the supplied modified date. + * @opt_param bool updateViewedDate Whether to update the view date after successfully updating the file. + * @opt_param string sourceLanguage The language of the original file to be translated. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param bool pinned Whether to pin the new revision. + * @opt_param bool newRevision Whether a blob upload should create a new revision. If false, the blob data in the current head revision will be replaced. + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, or .gif uploads. + * @opt_param string timedTextLanguage The language of the timed text. + * @opt_param string timedTextTrackName The timed text track name. + * @return Google_DriveFile + */ + public function patch($fileId, Google_DriveFile $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Set the file's updated time to the current server time. (files.touch) + * + * @param string $fileId The ID of the file to update. + * @param array $optParams Optional parameters. + * @return Google_DriveFile + */ + public function touch($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('touch', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Creates a copy of the specified file. (files.copy) + * + * @param string $fileId The ID of the file to copy. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert Whether to convert this file to the corresponding Google Docs format. + * @opt_param string targetLanguage Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language. + * @opt_param string sourceLanguage The language of the original file to be translated. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param bool pinned Whether to pin the head revision of the new copy. + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, or .gif uploads. + * @opt_param string timedTextLanguage The language of the timed text. + * @opt_param string timedTextTrackName The timed text track name. + * @return Google_DriveFile + */ + public function copy($fileId, Google_DriveFile $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('copy', array($params)); + if ($this->useObjects()) { + return new Google_DriveFile($data); + } else { + return $data; + } + } + /** + * Permanently deletes a file by ID. Skips the trash. (files.delete) + * + * @param string $fileId The ID of the file to delete. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "about" collection of methods. + * Typical usage is: + * + * $driveService = new Google_DriveService(...); + * $about = $driveService->about; + * + */ + class Google_AboutServiceResource extends Google_ServiceResource { + + + /** + * Gets the information about the current user along with Drive API settings (about.get) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed Whether to include subscribed items when calculating the number of remaining change IDs + * @opt_param string maxChangeIdCount Maximum number of remaining change IDs to count + * @opt_param string startChangeId Change ID to start counting from when calculating number of remaining change IDs + * @return Google_About + */ + public function get($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_About($data); + } else { + return $data; + } + } + } + + /** + * The "apps" collection of methods. + * Typical usage is: + * + * $driveService = new Google_DriveService(...); + * $apps = $driveService->apps; + * + */ + class Google_AppsServiceResource extends Google_ServiceResource { + + + /** + * Lists a user's apps. (apps.list) + * + * @param array $optParams Optional parameters. + * @return Google_AppList + */ + public function listApps($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_AppList($data); + } else { + return $data; + } + } + /** + * Gets a specific app. (apps.get) + * + * @param string $appId The ID of the app. + * @param array $optParams Optional parameters. + * @return Google_App + */ + public function get($appId, $optParams = array()) { + $params = array('appId' => $appId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_App($data); + } else { + return $data; + } + } + } + + /** + * The "parents" collection of methods. + * Typical usage is: + * + * $driveService = new Google_DriveService(...); + * $parents = $driveService->parents; + * + */ + class Google_ParentsServiceResource extends Google_ServiceResource { + + + /** + * Adds a parent folder for a file. (parents.insert) + * + * @param string $fileId The ID of the file. + * @param Google_ParentReference $postBody + * @param array $optParams Optional parameters. + * @return Google_ParentReference + */ + public function insert($fileId, Google_ParentReference $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_ParentReference($data); + } else { + return $data; + } + } + /** + * Gets a specific parent reference. (parents.get) + * + * @param string $fileId The ID of the file. + * @param string $parentId The ID of the parent. + * @param array $optParams Optional parameters. + * @return Google_ParentReference + */ + public function get($fileId, $parentId, $optParams = array()) { + $params = array('fileId' => $fileId, 'parentId' => $parentId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_ParentReference($data); + } else { + return $data; + } + } + /** + * Lists a file's parents. (parents.list) + * + * @param string $fileId The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_ParentList + */ + public function listParents($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ParentList($data); + } else { + return $data; + } + } + /** + * Removes a parent from a file. (parents.delete) + * + * @param string $fileId The ID of the file. + * @param string $parentId The ID of the parent. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $parentId, $optParams = array()) { + $params = array('fileId' => $fileId, 'parentId' => $parentId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "revisions" collection of methods. + * Typical usage is: + * + * $driveService = new Google_DriveService(...); + * $revisions = $driveService->revisions; + * + */ + class Google_RevisionsServiceResource extends Google_ServiceResource { + + + /** + * Updates a revision. This method supports patch semantics. (revisions.patch) + * + * @param string $fileId The ID for the file. + * @param string $revisionId The ID for the revision. + * @param Google_Revision $postBody + * @param array $optParams Optional parameters. + * @return Google_Revision + */ + public function patch($fileId, $revisionId, Google_Revision $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Revision($data); + } else { + return $data; + } + } + /** + * Gets a specific revision. (revisions.get) + * + * @param string $fileId The ID of the file. + * @param string $revisionId The ID of the revision. + * @param array $optParams Optional parameters. + * @return Google_Revision + */ + public function get($fileId, $revisionId, $optParams = array()) { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Revision($data); + } else { + return $data; + } + } + /** + * Lists a file's revisions. (revisions.list) + * + * @param string $fileId The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_RevisionList + */ + public function listRevisions($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_RevisionList($data); + } else { + return $data; + } + } + /** + * Updates a revision. (revisions.update) + * + * @param string $fileId The ID for the file. + * @param string $revisionId The ID for the revision. + * @param Google_Revision $postBody + * @param array $optParams Optional parameters. + * @return Google_Revision + */ + public function update($fileId, $revisionId, Google_Revision $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Revision($data); + } else { + return $data; + } + } + /** + * Removes a revision. (revisions.delete) + * + * @param string $fileId The ID of the file. + * @param string $revisionId The ID of the revision. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $revisionId, $optParams = array()) { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "changes" collection of methods. + * Typical usage is: + * + * $driveService = new Google_DriveService(...); + * $changes = $driveService->changes; + * + */ + class Google_ChangesServiceResource extends Google_ServiceResource { + + + /** + * Lists the changes for a user. (changes.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed Whether to include subscribed items. + * @opt_param string startChangeId Change ID to start listing changes from. + * @opt_param bool includeDeleted Whether to include deleted items. + * @opt_param int maxResults Maximum number of changes to return. + * @opt_param string pageToken Page token for changes. + * @return Google_ChangeList + */ + public function listChanges($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ChangeList($data); + } else { + return $data; + } + } + /** + * Gets a specific change. (changes.get) + * + * @param string $changeId The ID of the change. + * @param array $optParams Optional parameters. + * @return Google_Change + */ + public function get($changeId, $optParams = array()) { + $params = array('changeId' => $changeId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Change($data); + } else { + return $data; + } + } + } + + /** + * The "children" collection of methods. + * Typical usage is: + * + * $driveService = new Google_DriveService(...); + * $children = $driveService->children; + * + */ + class Google_ChildrenServiceResource extends Google_ServiceResource { + + + /** + * Inserts a file into a folder. (children.insert) + * + * @param string $folderId The ID of the folder. + * @param Google_ChildReference $postBody + * @param array $optParams Optional parameters. + * @return Google_ChildReference + */ + public function insert($folderId, Google_ChildReference $postBody, $optParams = array()) { + $params = array('folderId' => $folderId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_ChildReference($data); + } else { + return $data; + } + } + /** + * Gets a specific child reference. (children.get) + * + * @param string $folderId The ID of the folder. + * @param string $childId The ID of the child. + * @param array $optParams Optional parameters. + * @return Google_ChildReference + */ + public function get($folderId, $childId, $optParams = array()) { + $params = array('folderId' => $folderId, 'childId' => $childId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_ChildReference($data); + } else { + return $data; + } + } + /** + * Lists a folder's children. (children.list) + * + * @param string $folderId The ID of the folder. + * @param array $optParams Optional parameters. + * + * @opt_param string q Query string for searching children. + * @opt_param string pageToken Page token for children. + * @opt_param int maxResults Maximum number of children to return. + * @return Google_ChildList + */ + public function listChildren($folderId, $optParams = array()) { + $params = array('folderId' => $folderId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ChildList($data); + } else { + return $data; + } + } + /** + * Removes a child from a folder. (children.delete) + * + * @param string $folderId The ID of the folder. + * @param string $childId The ID of the child. + * @param array $optParams Optional parameters. + */ + public function delete($folderId, $childId, $optParams = array()) { + $params = array('folderId' => $folderId, 'childId' => $childId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "permissions" collection of methods. + * Typical usage is: + * + * $driveService = new Google_DriveService(...); + * $permissions = $driveService->permissions; + * + */ + class Google_PermissionsServiceResource extends Google_ServiceResource { + + + /** + * Inserts a permission for a file. (permissions.insert) + * + * @param string $fileId The ID for the file. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotificationEmails Whether to send notification emails. + * @return Google_Permission + */ + public function insert($fileId, Google_Permission $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Permission($data); + } else { + return $data; + } + } + /** + * Gets a permission by ID. (permissions.get) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param array $optParams Optional parameters. + * @return Google_Permission + */ + public function get($fileId, $permissionId, $optParams = array()) { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Permission($data); + } else { + return $data; + } + } + /** + * Lists a file's permissions. (permissions.list) + * + * @param string $fileId The ID for the file. + * @param array $optParams Optional parameters. + * @return Google_PermissionList + */ + public function listPermissions($fileId, $optParams = array()) { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_PermissionList($data); + } else { + return $data; + } + } + /** + * Updates a permission. (permissions.update) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * @return Google_Permission + */ + public function update($fileId, $permissionId, Google_Permission $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Permission($data); + } else { + return $data; + } + } + /** + * Updates a permission. This method supports patch semantics. (permissions.patch) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * @return Google_Permission + */ + public function patch($fileId, $permissionId, Google_Permission $postBody, $optParams = array()) { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Permission($data); + } else { + return $data; + } + } + /** + * Deletes a permission from a file. (permissions.delete) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $permissionId, $optParams = array()) { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Drive (v2). + * + *

+ * The API to interact with Drive. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_DriveService extends Google_Service { + public $files; + public $about; + public $apps; + public $parents; + public $revisions; + public $changes; + public $children; + public $permissions; + /** + * Constructs the internal representation of the Drive service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'drive/v2/'; + $this->version = 'v2'; + $this->serviceName = 'drive'; + + $client->addService($this->serviceName, $this->version); + $this->files = new Google_FilesServiceResource($this, $this->serviceName, 'files', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"convert": {"default": "false", "type": "boolean", "location": "query"}, "targetLanguage": {"type": "string", "location": "query"}, "sourceLanguage": {"type": "string", "location": "query"}, "ocrLanguage": {"type": "string", "location": "query"}, "pinned": {"default": "false", "type": "boolean", "location": "query"}, "ocr": {"default": "false", "type": "boolean", "location": "query"}, "timedTextTrackName": {"type": "string", "location": "query"}, "timedTextLanguage": {"type": "string", "location": "query"}}, "supportsMediaUpload": true, "request": {"$ref": "File"}, "mediaUpload": {"maxSize": "10GB", "protocols": {"simple": {"path": "/upload/drive/v2/files", "multipart": true}, "resumable": {"path": "/resumable/upload/drive/v2/files", "multipart": true}}, "accept": ["*/*"]}, "response": {"$ref": "File"}, "httpMethod": "POST", "path": "files", "id": "drive.files.insert"}, "untrash": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.files.untrash", "httpMethod": "POST", "path": "files/{fileId}/untrash", "response": {"$ref": "File"}}, "trash": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.files.trash", "httpMethod": "POST", "path": "files/{fileId}/trash", "response": {"$ref": "File"}}, "get": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"updateViewedDate": {"default": "false", "type": "boolean", "location": "query"}, "projection": {"enum": ["BASIC", "FULL"], "type": "string", "location": "query"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.files.get", "httpMethod": "GET", "path": "files/{fileId}", "response": {"$ref": "File"}}, "list": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"q": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "projection": {"enum": ["BASIC", "FULL"], "type": "string", "location": "query"}, "maxResults": {"default": "100", "minimum": "0", "type": "integer", "location": "query", "format": "int32"}}, "response": {"$ref": "FileList"}, "httpMethod": "GET", "path": "files", "id": "drive.files.list"}, "update": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"convert": {"default": "false", "type": "boolean", "location": "query"}, "ocr": {"default": "false", "type": "boolean", "location": "query"}, "setModifiedDate": {"default": "false", "type": "boolean", "location": "query"}, "updateViewedDate": {"default": "true", "type": "boolean", "location": "query"}, "sourceLanguage": {"type": "string", "location": "query"}, "ocrLanguage": {"type": "string", "location": "query"}, "pinned": {"default": "false", "type": "boolean", "location": "query"}, "newRevision": {"default": "true", "type": "boolean", "location": "query"}, "targetLanguage": {"type": "string", "location": "query"}, "timedTextLanguage": {"type": "string", "location": "query"}, "timedTextTrackName": {"type": "string", "location": "query"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "supportsMediaUpload": true, "request": {"$ref": "File"}, "mediaUpload": {"maxSize": "10GB", "protocols": {"simple": {"path": "/upload/drive/v2/files/{fileId}", "multipart": true}, "resumable": {"path": "/resumable/upload/drive/v2/files/{fileId}", "multipart": true}}, "accept": ["*/*"]}, "response": {"$ref": "File"}, "httpMethod": "PUT", "path": "files/{fileId}", "id": "drive.files.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"convert": {"default": "false", "type": "boolean", "location": "query"}, "ocr": {"default": "false", "type": "boolean", "location": "query"}, "setModifiedDate": {"default": "false", "type": "boolean", "location": "query"}, "updateViewedDate": {"default": "true", "type": "boolean", "location": "query"}, "sourceLanguage": {"type": "string", "location": "query"}, "ocrLanguage": {"type": "string", "location": "query"}, "pinned": {"default": "false", "type": "boolean", "location": "query"}, "newRevision": {"default": "true", "type": "boolean", "location": "query"}, "targetLanguage": {"type": "string", "location": "query"}, "timedTextLanguage": {"type": "string", "location": "query"}, "timedTextTrackName": {"type": "string", "location": "query"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "File"}, "response": {"$ref": "File"}, "httpMethod": "PATCH", "path": "files/{fileId}", "id": "drive.files.patch"}, "touch": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.files.touch", "httpMethod": "POST", "path": "files/{fileId}/touch", "response": {"$ref": "File"}}, "copy": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"convert": {"default": "false", "type": "boolean", "location": "query"}, "ocr": {"default": "false", "type": "boolean", "location": "query"}, "sourceLanguage": {"type": "string", "location": "query"}, "ocrLanguage": {"type": "string", "location": "query"}, "pinned": {"default": "false", "type": "boolean", "location": "query"}, "targetLanguage": {"type": "string", "location": "query"}, "timedTextLanguage": {"type": "string", "location": "query"}, "timedTextTrackName": {"type": "string", "location": "query"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "File"}, "response": {"$ref": "File"}, "httpMethod": "POST", "path": "files/{fileId}/copy", "id": "drive.files.copy"}, "delete": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "path": "files/{fileId}", "id": "drive.files.delete", "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->about = new Google_AboutServiceResource($this, $this->serviceName, 'about', json_decode('{"methods": {"get": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"includeSubscribed": {"default": "true", "type": "boolean", "location": "query"}, "maxChangeIdCount": {"default": "1", "type": "string", "location": "query", "format": "int64"}, "startChangeId": {"type": "string", "location": "query", "format": "int64"}}, "response": {"$ref": "About"}, "httpMethod": "GET", "path": "about", "id": "drive.about.get"}}}', true)); + $this->apps = new Google_AppsServiceResource($this, $this->serviceName, 'apps', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/drive.apps.readonly"], "path": "apps", "response": {"$ref": "AppList"}, "id": "drive.apps.list", "httpMethod": "GET"}, "get": {"scopes": ["https://www.googleapis.com/auth/drive.apps.readonly"], "parameters": {"appId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.apps.get", "httpMethod": "GET", "path": "apps/{appId}", "response": {"$ref": "App"}}}}', true)); + $this->parents = new Google_ParentsServiceResource($this, $this->serviceName, 'parents', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "ParentReference"}, "response": {"$ref": "ParentReference"}, "httpMethod": "POST", "path": "files/{fileId}/parents", "id": "drive.parents.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"parentId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.parents.get", "httpMethod": "GET", "path": "files/{fileId}/parents/{parentId}", "response": {"$ref": "ParentReference"}}, "list": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.parents.list", "httpMethod": "GET", "path": "files/{fileId}/parents", "response": {"$ref": "ParentList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "path": "files/{fileId}/parents/{parentId}", "id": "drive.parents.delete", "parameters": {"parentId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->revisions = new Google_RevisionsServiceResource($this, $this->serviceName, 'revisions', json_decode('{"methods": {"patch": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"revisionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Revision"}, "response": {"$ref": "Revision"}, "httpMethod": "PATCH", "path": "files/{fileId}/revisions/{revisionId}", "id": "drive.revisions.patch"}, "get": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"revisionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.revisions.get", "httpMethod": "GET", "path": "files/{fileId}/revisions/{revisionId}", "response": {"$ref": "Revision"}}, "list": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.revisions.list", "httpMethod": "GET", "path": "files/{fileId}/revisions", "response": {"$ref": "RevisionList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"revisionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Revision"}, "response": {"$ref": "Revision"}, "httpMethod": "PUT", "path": "files/{fileId}/revisions/{revisionId}", "id": "drive.revisions.update"}, "delete": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "path": "files/{fileId}/revisions/{revisionId}", "id": "drive.revisions.delete", "parameters": {"revisionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->changes = new Google_ChangesServiceResource($this, $this->serviceName, 'changes', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"includeSubscribed": {"default": "true", "type": "boolean", "location": "query"}, "startChangeId": {"type": "string", "location": "query", "format": "int64"}, "includeDeleted": {"default": "true", "type": "boolean", "location": "query"}, "maxResults": {"default": "100", "minimum": "0", "type": "integer", "location": "query", "format": "int32"}, "pageToken": {"type": "string", "location": "query"}}, "response": {"$ref": "ChangeList"}, "httpMethod": "GET", "path": "changes", "id": "drive.changes.list"}, "get": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"changeId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.changes.get", "httpMethod": "GET", "path": "changes/{changeId}", "response": {"$ref": "Change"}}}}', true)); + $this->children = new Google_ChildrenServiceResource($this, $this->serviceName, 'children', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"folderId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "ChildReference"}, "response": {"$ref": "ChildReference"}, "httpMethod": "POST", "path": "files/{folderId}/children", "id": "drive.children.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"folderId": {"required": true, "type": "string", "location": "path"}, "childId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.children.get", "httpMethod": "GET", "path": "files/{folderId}/children/{childId}", "response": {"$ref": "ChildReference"}}, "list": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"q": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "folderId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"default": "100", "minimum": "0", "type": "integer", "location": "query", "format": "int32"}}, "id": "drive.children.list", "httpMethod": "GET", "path": "files/{folderId}/children", "response": {"$ref": "ChildList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "path": "files/{folderId}/children/{childId}", "id": "drive.children.delete", "parameters": {"folderId": {"required": true, "type": "string", "location": "path"}, "childId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->permissions = new Google_PermissionsServiceResource($this, $this->serviceName, 'permissions', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"sendNotificationEmails": {"default": "true", "type": "boolean", "location": "query"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Permission"}, "response": {"$ref": "Permission"}, "httpMethod": "POST", "path": "files/{fileId}/permissions", "id": "drive.permissions.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"permissionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.permissions.get", "httpMethod": "GET", "path": "files/{fileId}/permissions/{permissionId}", "response": {"$ref": "Permission"}}, "list": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.metadata.readonly", "https://www.googleapis.com/auth/drive.readonly"], "parameters": {"fileId": {"required": true, "type": "string", "location": "path"}}, "id": "drive.permissions.list", "httpMethod": "GET", "path": "files/{fileId}/permissions", "response": {"$ref": "PermissionList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"permissionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Permission"}, "response": {"$ref": "Permission"}, "httpMethod": "PUT", "path": "files/{fileId}/permissions/{permissionId}", "id": "drive.permissions.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "parameters": {"permissionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Permission"}, "response": {"$ref": "Permission"}, "httpMethod": "PATCH", "path": "files/{fileId}/permissions/{permissionId}", "id": "drive.permissions.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"], "path": "files/{fileId}/permissions/{permissionId}", "id": "drive.permissions.delete", "parameters": {"permissionId": {"required": true, "type": "string", "location": "path"}, "fileId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_About extends Google_Model { + public $kind; + protected $__featuresType = 'Google_AboutFeatures'; + protected $__featuresDataType = 'array'; + public $features; + public $quotaBytesUsed; + public $permissionId; + protected $__maxUploadSizesType = 'Google_AboutMaxUploadSizes'; + protected $__maxUploadSizesDataType = 'array'; + public $maxUploadSizes; + public $name; + public $remainingChangeIds; + protected $__additionalRoleInfoType = 'Google_AboutAdditionalRoleInfo'; + protected $__additionalRoleInfoDataType = 'array'; + public $additionalRoleInfo; + public $etag; + protected $__importFormatsType = 'Google_AboutImportFormats'; + protected $__importFormatsDataType = 'array'; + public $importFormats; + public $quotaBytesTotal; + public $rootFolderId; + public $largestChangeId; + public $quotaBytesUsedInTrash; + protected $__exportFormatsType = 'Google_AboutExportFormats'; + protected $__exportFormatsDataType = 'array'; + public $exportFormats; + public $domainSharingPolicy; + public $selfLink; + public $isCurrentAppInstalled; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setFeatures(/* array(Google_AboutFeatures) */ $features) { + $this->assertIsArray($features, 'Google_AboutFeatures', __METHOD__); + $this->features = $features; + } + public function getFeatures() { + return $this->features; + } + public function setQuotaBytesUsed($quotaBytesUsed) { + $this->quotaBytesUsed = $quotaBytesUsed; + } + public function getQuotaBytesUsed() { + return $this->quotaBytesUsed; + } + public function setPermissionId($permissionId) { + $this->permissionId = $permissionId; + } + public function getPermissionId() { + return $this->permissionId; + } + public function setMaxUploadSizes(/* array(Google_AboutMaxUploadSizes) */ $maxUploadSizes) { + $this->assertIsArray($maxUploadSizes, 'Google_AboutMaxUploadSizes', __METHOD__); + $this->maxUploadSizes = $maxUploadSizes; + } + public function getMaxUploadSizes() { + return $this->maxUploadSizes; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setRemainingChangeIds($remainingChangeIds) { + $this->remainingChangeIds = $remainingChangeIds; + } + public function getRemainingChangeIds() { + return $this->remainingChangeIds; + } + public function setAdditionalRoleInfo(/* array(Google_AboutAdditionalRoleInfo) */ $additionalRoleInfo) { + $this->assertIsArray($additionalRoleInfo, 'Google_AboutAdditionalRoleInfo', __METHOD__); + $this->additionalRoleInfo = $additionalRoleInfo; + } + public function getAdditionalRoleInfo() { + return $this->additionalRoleInfo; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setImportFormats(/* array(Google_AboutImportFormats) */ $importFormats) { + $this->assertIsArray($importFormats, 'Google_AboutImportFormats', __METHOD__); + $this->importFormats = $importFormats; + } + public function getImportFormats() { + return $this->importFormats; + } + public function setQuotaBytesTotal($quotaBytesTotal) { + $this->quotaBytesTotal = $quotaBytesTotal; + } + public function getQuotaBytesTotal() { + return $this->quotaBytesTotal; + } + public function setRootFolderId($rootFolderId) { + $this->rootFolderId = $rootFolderId; + } + public function getRootFolderId() { + return $this->rootFolderId; + } + public function setLargestChangeId($largestChangeId) { + $this->largestChangeId = $largestChangeId; + } + public function getLargestChangeId() { + return $this->largestChangeId; + } + public function setQuotaBytesUsedInTrash($quotaBytesUsedInTrash) { + $this->quotaBytesUsedInTrash = $quotaBytesUsedInTrash; + } + public function getQuotaBytesUsedInTrash() { + return $this->quotaBytesUsedInTrash; + } + public function setExportFormats(/* array(Google_AboutExportFormats) */ $exportFormats) { + $this->assertIsArray($exportFormats, 'Google_AboutExportFormats', __METHOD__); + $this->exportFormats = $exportFormats; + } + public function getExportFormats() { + return $this->exportFormats; + } + public function setDomainSharingPolicy($domainSharingPolicy) { + $this->domainSharingPolicy = $domainSharingPolicy; + } + public function getDomainSharingPolicy() { + return $this->domainSharingPolicy; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setIsCurrentAppInstalled($isCurrentAppInstalled) { + $this->isCurrentAppInstalled = $isCurrentAppInstalled; + } + public function getIsCurrentAppInstalled() { + return $this->isCurrentAppInstalled; + } +} + +class Google_AboutAdditionalRoleInfo extends Google_Model { + protected $__roleSetsType = 'Google_AboutAdditionalRoleInfoRoleSets'; + protected $__roleSetsDataType = 'array'; + public $roleSets; + public $type; + public function setRoleSets(/* array(Google_AboutAdditionalRoleInfoRoleSets) */ $roleSets) { + $this->assertIsArray($roleSets, 'Google_AboutAdditionalRoleInfoRoleSets', __METHOD__); + $this->roleSets = $roleSets; + } + public function getRoleSets() { + return $this->roleSets; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_AboutAdditionalRoleInfoRoleSets extends Google_Model { + public $primaryRole; + public $additionalRoles; + public function setPrimaryRole($primaryRole) { + $this->primaryRole = $primaryRole; + } + public function getPrimaryRole() { + return $this->primaryRole; + } + public function setAdditionalRoles(/* array(Google_string) */ $additionalRoles) { + $this->assertIsArray($additionalRoles, 'Google_string', __METHOD__); + $this->additionalRoles = $additionalRoles; + } + public function getAdditionalRoles() { + return $this->additionalRoles; + } +} + +class Google_AboutExportFormats extends Google_Model { + public $source; + public $targets; + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setTargets(/* array(Google_string) */ $targets) { + $this->assertIsArray($targets, 'Google_string', __METHOD__); + $this->targets = $targets; + } + public function getTargets() { + return $this->targets; + } +} + +class Google_AboutFeatures extends Google_Model { + public $featureName; + public $featureRate; + public function setFeatureName($featureName) { + $this->featureName = $featureName; + } + public function getFeatureName() { + return $this->featureName; + } + public function setFeatureRate($featureRate) { + $this->featureRate = $featureRate; + } + public function getFeatureRate() { + return $this->featureRate; + } +} + +class Google_AboutImportFormats extends Google_Model { + public $source; + public $targets; + public function setSource($source) { + $this->source = $source; + } + public function getSource() { + return $this->source; + } + public function setTargets(/* array(Google_string) */ $targets) { + $this->assertIsArray($targets, 'Google_string', __METHOD__); + $this->targets = $targets; + } + public function getTargets() { + return $this->targets; + } +} + +class Google_AboutMaxUploadSizes extends Google_Model { + public $type; + public $size; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setSize($size) { + $this->size = $size; + } + public function getSize() { + return $this->size; + } +} + +class Google_App extends Google_Model { + public $kind; + public $primaryFileExtensions; + public $useByDefault; + public $name; + protected $__iconsType = 'Google_AppIcons'; + protected $__iconsDataType = 'array'; + public $icons; + public $secondaryFileExtensions; + public $installed; + public $productUrl; + public $secondaryMimeTypes; + public $authorized; + public $supportsCreate; + public $supportsImport; + public $primaryMimeTypes; + public $id; + public $objectType; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setPrimaryFileExtensions(/* array(Google_string) */ $primaryFileExtensions) { + $this->assertIsArray($primaryFileExtensions, 'Google_string', __METHOD__); + $this->primaryFileExtensions = $primaryFileExtensions; + } + public function getPrimaryFileExtensions() { + return $this->primaryFileExtensions; + } + public function setUseByDefault($useByDefault) { + $this->useByDefault = $useByDefault; + } + public function getUseByDefault() { + return $this->useByDefault; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setIcons(/* array(Google_AppIcons) */ $icons) { + $this->assertIsArray($icons, 'Google_AppIcons', __METHOD__); + $this->icons = $icons; + } + public function getIcons() { + return $this->icons; + } + public function setSecondaryFileExtensions(/* array(Google_string) */ $secondaryFileExtensions) { + $this->assertIsArray($secondaryFileExtensions, 'Google_string', __METHOD__); + $this->secondaryFileExtensions = $secondaryFileExtensions; + } + public function getSecondaryFileExtensions() { + return $this->secondaryFileExtensions; + } + public function setInstalled($installed) { + $this->installed = $installed; + } + public function getInstalled() { + return $this->installed; + } + public function setProductUrl($productUrl) { + $this->productUrl = $productUrl; + } + public function getProductUrl() { + return $this->productUrl; + } + public function setSecondaryMimeTypes(/* array(Google_string) */ $secondaryMimeTypes) { + $this->assertIsArray($secondaryMimeTypes, 'Google_string', __METHOD__); + $this->secondaryMimeTypes = $secondaryMimeTypes; + } + public function getSecondaryMimeTypes() { + return $this->secondaryMimeTypes; + } + public function setAuthorized($authorized) { + $this->authorized = $authorized; + } + public function getAuthorized() { + return $this->authorized; + } + public function setSupportsCreate($supportsCreate) { + $this->supportsCreate = $supportsCreate; + } + public function getSupportsCreate() { + return $this->supportsCreate; + } + public function setSupportsImport($supportsImport) { + $this->supportsImport = $supportsImport; + } + public function getSupportsImport() { + return $this->supportsImport; + } + public function setPrimaryMimeTypes(/* array(Google_string) */ $primaryMimeTypes) { + $this->assertIsArray($primaryMimeTypes, 'Google_string', __METHOD__); + $this->primaryMimeTypes = $primaryMimeTypes; + } + public function getPrimaryMimeTypes() { + return $this->primaryMimeTypes; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setObjectType($objectType) { + $this->objectType = $objectType; + } + public function getObjectType() { + return $this->objectType; + } +} + +class Google_AppIcons extends Google_Model { + public $category; + public $iconUrl; + public $size; + public function setCategory($category) { + $this->category = $category; + } + public function getCategory() { + return $this->category; + } + public function setIconUrl($iconUrl) { + $this->iconUrl = $iconUrl; + } + public function getIconUrl() { + return $this->iconUrl; + } + public function setSize($size) { + $this->size = $size; + } + public function getSize() { + return $this->size; + } +} + +class Google_AppList extends Google_Model { + protected $__itemsType = 'Google_App'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public $selfLink; + public function setItems(/* array(Google_App) */ $items) { + $this->assertIsArray($items, 'Google_App', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Change extends Google_Model { + public $kind; + public $deleted; + protected $__fileType = 'Google_DriveFile'; + protected $__fileDataType = ''; + public $file; + public $id; + public $selfLink; + public $fileId; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDeleted($deleted) { + $this->deleted = $deleted; + } + public function getDeleted() { + return $this->deleted; + } + public function setFile(Google_DriveFile $file) { + $this->file = $file; + } + public function getFile() { + return $this->file; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setFileId($fileId) { + $this->fileId = $fileId; + } + public function getFileId() { + return $this->fileId; + } +} + +class Google_ChangeList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_Change'; + protected $__itemsDataType = 'array'; + public $items; + public $nextLink; + public $etag; + public $largestChangeId; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_Change) */ $items) { + $this->assertIsArray($items, 'Google_Change', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setLargestChangeId($largestChangeId) { + $this->largestChangeId = $largestChangeId; + } + public function getLargestChangeId() { + return $this->largestChangeId; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ChildList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_ChildReference'; + protected $__itemsDataType = 'array'; + public $items; + public $nextLink; + public $etag; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_ChildReference) */ $items) { + $this->assertIsArray($items, 'Google_ChildReference', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ChildReference extends Google_Model { + public $kind; + public $childLink; + public $id; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setChildLink($childLink) { + $this->childLink = $childLink; + } + public function getChildLink() { + return $this->childLink; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_DriveFile extends Google_Model { + public $mimeType; + public $thumbnailLink; + protected $__labelsType = 'Google_DriveFileLabels'; + protected $__labelsDataType = ''; + public $labels; + protected $__indexableTextType = 'Google_DriveFileIndexableText'; + protected $__indexableTextDataType = ''; + public $indexableText; + public $explicitlyTrashed; + public $etag; + public $lastModifyingUserName; + public $writersCanShare; + public $id; + public $title; + public $ownerNames; + public $sharedWithMeDate; + public $lastViewedByMeDate; + protected $__parentsType = 'Google_ParentReference'; + protected $__parentsDataType = 'array'; + public $parents; + public $exportLinks; + public $originalFilename; + public $description; + public $webContentLink; + public $editable; + public $kind; + public $quotaBytesUsed; + public $fileSize; + public $createdDate; + public $md5Checksum; + protected $__imageMediaMetadataType = 'Google_DriveFileImageMediaMetadata'; + protected $__imageMediaMetadataDataType = ''; + public $imageMediaMetadata; + public $embedLink; + public $alternateLink; + public $modifiedByMeDate; + public $downloadUrl; + protected $__userPermissionType = 'Google_Permission'; + protected $__userPermissionDataType = ''; + public $userPermission; + public $fileExtension; + public $selfLink; + public $modifiedDate; + public function setMimeType($mimeType) { + $this->mimeType = $mimeType; + } + public function getMimeType() { + return $this->mimeType; + } + public function setThumbnailLink($thumbnailLink) { + $this->thumbnailLink = $thumbnailLink; + } + public function getThumbnailLink() { + return $this->thumbnailLink; + } + public function setLabels(Google_DriveFileLabels $labels) { + $this->labels = $labels; + } + public function getLabels() { + return $this->labels; + } + public function setIndexableText(Google_DriveFileIndexableText $indexableText) { + $this->indexableText = $indexableText; + } + public function getIndexableText() { + return $this->indexableText; + } + public function setExplicitlyTrashed($explicitlyTrashed) { + $this->explicitlyTrashed = $explicitlyTrashed; + } + public function getExplicitlyTrashed() { + return $this->explicitlyTrashed; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setLastModifyingUserName($lastModifyingUserName) { + $this->lastModifyingUserName = $lastModifyingUserName; + } + public function getLastModifyingUserName() { + return $this->lastModifyingUserName; + } + public function setWritersCanShare($writersCanShare) { + $this->writersCanShare = $writersCanShare; + } + public function getWritersCanShare() { + return $this->writersCanShare; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setOwnerNames(/* array(Google_string) */ $ownerNames) { + $this->assertIsArray($ownerNames, 'Google_string', __METHOD__); + $this->ownerNames = $ownerNames; + } + public function getOwnerNames() { + return $this->ownerNames; + } + public function setSharedWithMeDate($sharedWithMeDate) { + $this->sharedWithMeDate = $sharedWithMeDate; + } + public function getSharedWithMeDate() { + return $this->sharedWithMeDate; + } + public function setLastViewedByMeDate($lastViewedByMeDate) { + $this->lastViewedByMeDate = $lastViewedByMeDate; + } + public function getLastViewedByMeDate() { + return $this->lastViewedByMeDate; + } + public function setParents(/* array(Google_ParentReference) */ $parents) { + $this->assertIsArray($parents, 'Google_ParentReference', __METHOD__); + $this->parents = $parents; + } + public function getParents() { + return $this->parents; + } + public function setExportLinks($exportLinks) { + $this->exportLinks = $exportLinks; + } + public function getExportLinks() { + return $this->exportLinks; + } + public function setOriginalFilename($originalFilename) { + $this->originalFilename = $originalFilename; + } + public function getOriginalFilename() { + return $this->originalFilename; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setWebContentLink($webContentLink) { + $this->webContentLink = $webContentLink; + } + public function getWebContentLink() { + return $this->webContentLink; + } + public function setEditable($editable) { + $this->editable = $editable; + } + public function getEditable() { + return $this->editable; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setQuotaBytesUsed($quotaBytesUsed) { + $this->quotaBytesUsed = $quotaBytesUsed; + } + public function getQuotaBytesUsed() { + return $this->quotaBytesUsed; + } + public function setFileSize($fileSize) { + $this->fileSize = $fileSize; + } + public function getFileSize() { + return $this->fileSize; + } + public function setCreatedDate($createdDate) { + $this->createdDate = $createdDate; + } + public function getCreatedDate() { + return $this->createdDate; + } + public function setMd5Checksum($md5Checksum) { + $this->md5Checksum = $md5Checksum; + } + public function getMd5Checksum() { + return $this->md5Checksum; + } + public function setImageMediaMetadata(Google_DriveFileImageMediaMetadata $imageMediaMetadata) { + $this->imageMediaMetadata = $imageMediaMetadata; + } + public function getImageMediaMetadata() { + return $this->imageMediaMetadata; + } + public function setEmbedLink($embedLink) { + $this->embedLink = $embedLink; + } + public function getEmbedLink() { + return $this->embedLink; + } + public function setAlternateLink($alternateLink) { + $this->alternateLink = $alternateLink; + } + public function getAlternateLink() { + return $this->alternateLink; + } + public function setModifiedByMeDate($modifiedByMeDate) { + $this->modifiedByMeDate = $modifiedByMeDate; + } + public function getModifiedByMeDate() { + return $this->modifiedByMeDate; + } + public function setDownloadUrl($downloadUrl) { + $this->downloadUrl = $downloadUrl; + } + public function getDownloadUrl() { + return $this->downloadUrl; + } + public function setUserPermission(Google_Permission $userPermission) { + $this->userPermission = $userPermission; + } + public function getUserPermission() { + return $this->userPermission; + } + public function setFileExtension($fileExtension) { + $this->fileExtension = $fileExtension; + } + public function getFileExtension() { + return $this->fileExtension; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setModifiedDate($modifiedDate) { + $this->modifiedDate = $modifiedDate; + } + public function getModifiedDate() { + return $this->modifiedDate; + } +} + +class Google_DriveFileImageMediaMetadata extends Google_Model { + public $width; + public $rotation; + protected $__locationType = 'Google_DriveFileImageMediaMetadataLocation'; + protected $__locationDataType = ''; + public $location; + public $height; + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setRotation($rotation) { + $this->rotation = $rotation; + } + public function getRotation() { + return $this->rotation; + } + public function setLocation(Google_DriveFileImageMediaMetadataLocation $location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } +} + +class Google_DriveFileImageMediaMetadataLocation extends Google_Model { + public $latitude; + public $altitude; + public $longitude; + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setAltitude($altitude) { + $this->altitude = $altitude; + } + public function getAltitude() { + return $this->altitude; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } +} + +class Google_DriveFileIndexableText extends Google_Model { + public $text; + public function setText($text) { + $this->text = $text; + } + public function getText() { + return $this->text; + } +} + +class Google_DriveFileLabels extends Google_Model { + public $restricted; + public $hidden; + public $viewed; + public $starred; + public $trashed; + public function setRestricted($restricted) { + $this->restricted = $restricted; + } + public function getRestricted() { + return $this->restricted; + } + public function setHidden($hidden) { + $this->hidden = $hidden; + } + public function getHidden() { + return $this->hidden; + } + public function setViewed($viewed) { + $this->viewed = $viewed; + } + public function getViewed() { + return $this->viewed; + } + public function setStarred($starred) { + $this->starred = $starred; + } + public function getStarred() { + return $this->starred; + } + public function setTrashed($trashed) { + $this->trashed = $trashed; + } + public function getTrashed() { + return $this->trashed; + } +} + +class Google_FileList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_DriveFile'; + protected $__itemsDataType = 'array'; + public $items; + public $nextLink; + public $etag; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_DriveFile) */ $items) { + $this->assertIsArray($items, 'Google_DriveFile', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ParentList extends Google_Model { + protected $__itemsType = 'Google_ParentReference'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public $selfLink; + public function setItems(/* array(Google_ParentReference) */ $items) { + $this->assertIsArray($items, 'Google_ParentReference', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ParentReference extends Google_Model { + public $selfLink; + public $kind; + public $id; + public $isRoot; + public $parentLink; + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setIsRoot($isRoot) { + $this->isRoot = $isRoot; + } + public function getIsRoot() { + return $this->isRoot; + } + public function setParentLink($parentLink) { + $this->parentLink = $parentLink; + } + public function getParentLink() { + return $this->parentLink; + } +} + +class Google_Permission extends Google_Model { + public $withLink; + public $kind; + public $name; + public $value; + public $id; + public $authKey; + public $etag; + public $role; + public $photoLink; + public $type; + public $additionalRoles; + public $selfLink; + public function setWithLink($withLink) { + $this->withLink = $withLink; + } + public function getWithLink() { + return $this->withLink; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAuthKey($authKey) { + $this->authKey = $authKey; + } + public function getAuthKey() { + return $this->authKey; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setRole($role) { + $this->role = $role; + } + public function getRole() { + return $this->role; + } + public function setPhotoLink($photoLink) { + $this->photoLink = $photoLink; + } + public function getPhotoLink() { + return $this->photoLink; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setAdditionalRoles(/* array(Google_string) */ $additionalRoles) { + $this->assertIsArray($additionalRoles, 'Google_string', __METHOD__); + $this->additionalRoles = $additionalRoles; + } + public function getAdditionalRoles() { + return $this->additionalRoles; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_PermissionList extends Google_Model { + protected $__itemsType = 'Google_Permission'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public $selfLink; + public function setItems(/* array(Google_Permission) */ $items) { + $this->assertIsArray($items, 'Google_Permission', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Revision extends Google_Model { + public $mimeType; + public $pinned; + public $kind; + public $publishedLink; + public $publishedOutsideDomain; + public $publishAuto; + public $published; + public $downloadUrl; + public $selfLink; + public $etag; + public $fileSize; + public $exportLinks; + public $lastModifyingUserName; + public $originalFilename; + public $id; + public $md5Checksum; + public $modifiedDate; + public function setMimeType($mimeType) { + $this->mimeType = $mimeType; + } + public function getMimeType() { + return $this->mimeType; + } + public function setPinned($pinned) { + $this->pinned = $pinned; + } + public function getPinned() { + return $this->pinned; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setPublishedLink($publishedLink) { + $this->publishedLink = $publishedLink; + } + public function getPublishedLink() { + return $this->publishedLink; + } + public function setPublishedOutsideDomain($publishedOutsideDomain) { + $this->publishedOutsideDomain = $publishedOutsideDomain; + } + public function getPublishedOutsideDomain() { + return $this->publishedOutsideDomain; + } + public function setPublishAuto($publishAuto) { + $this->publishAuto = $publishAuto; + } + public function getPublishAuto() { + return $this->publishAuto; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setDownloadUrl($downloadUrl) { + $this->downloadUrl = $downloadUrl; + } + public function getDownloadUrl() { + return $this->downloadUrl; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setFileSize($fileSize) { + $this->fileSize = $fileSize; + } + public function getFileSize() { + return $this->fileSize; + } + public function setExportLinks($exportLinks) { + $this->exportLinks = $exportLinks; + } + public function getExportLinks() { + return $this->exportLinks; + } + public function setLastModifyingUserName($lastModifyingUserName) { + $this->lastModifyingUserName = $lastModifyingUserName; + } + public function getLastModifyingUserName() { + return $this->lastModifyingUserName; + } + public function setOriginalFilename($originalFilename) { + $this->originalFilename = $originalFilename; + } + public function getOriginalFilename() { + return $this->originalFilename; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setMd5Checksum($md5Checksum) { + $this->md5Checksum = $md5Checksum; + } + public function getMd5Checksum() { + return $this->md5Checksum; + } + public function setModifiedDate($modifiedDate) { + $this->modifiedDate = $modifiedDate; + } + public function getModifiedDate() { + return $this->modifiedDate; + } +} + +class Google_RevisionList extends Google_Model { + protected $__itemsType = 'Google_Revision'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public $selfLink; + public function setItems(/* array(Google_Revision) */ $items) { + $this->assertIsArray($items, 'Google_Revision', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} diff --git a/modules/oauth/src/google/contrib/Google_FreebaseService.php b/modules/oauth/src/google/contrib/Google_FreebaseService.php new file mode 100644 index 0000000..8a02cd1 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_FreebaseService.php @@ -0,0 +1,89 @@ + + * $freebaseService = new Google_FreebaseService(...); + * $text = $freebaseService->text; + * + */ + class Google_TextServiceResource extends Google_ServiceResource { + + + /** + * Returns blob attached to node at specified id as HTML (text.get) + * + * @param string $id The id of the item that you want data about + * @param array $optParams Optional parameters. + * + * @opt_param string maxlength The max number of characters to return. Valid only for 'plain' format. + * @opt_param string format Sanitizing transformation. + * @return Google_ContentserviceGet + */ + public function get($id, $optParams = array()) { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_ContentserviceGet($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Freebase (v1). + * + *

+ * Lets you access the Freebase repository of open data. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_FreebaseService extends Google_Service { + public $text; + /** + * Constructs the internal representation of the Freebase service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'freebase/v1/'; + $this->version = 'v1'; + $this->serviceName = 'freebase'; + + $client->addService($this->serviceName, $this->version); + $this->text = new Google_TextServiceResource($this, $this->serviceName, 'text', json_decode('{"methods": {"get": {"httpMethod": "GET", "response": {"$ref": "ContentserviceGet"}, "id": "freebase.text.get", "parameters": {"maxlength": {"type": "integer", "location": "query", "format": "uint32"}, "id": {"repeated": true, "required": true, "type": "string", "location": "path"}, "format": {"default": "plain", "enum": ["html", "plain", "raw"], "type": "string", "location": "query"}}, "path": "text{/id*}"}}}', true)); + } +} + +class Google_ContentserviceGet extends Google_Model { + public $result; + public function setResult($result) { + $this->result = $result; + } + public function getResult() { + return $this->result; + } +} diff --git a/modules/oauth/src/google/contrib/Google_FusiontablesService.php b/modules/oauth/src/google/contrib/Google_FusiontablesService.php new file mode 100644 index 0000000..d38aef0 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_FusiontablesService.php @@ -0,0 +1,1326 @@ + + * $fusiontablesService = new Google_FusiontablesService(...); + * $column = $fusiontablesService->column; + * + */ + class Google_ColumnServiceResource extends Google_ServiceResource { + + + /** + * Adds a new column to the table. (column.insert) + * + * @param string $tableId Table for which a new column is being added. + * @param Google_Column $postBody + * @param array $optParams Optional parameters. + * @return Google_Column + */ + public function insert($tableId, Google_Column $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Column($data); + } else { + return $data; + } + } + /** + * Retrieves a specific column by its id. (column.get) + * + * @param string $tableId Table to which the column belongs. + * @param string $columnId Name or identifier for the column that is being requested. + * @param array $optParams Optional parameters. + * @return Google_Column + */ + public function get($tableId, $columnId, $optParams = array()) { + $params = array('tableId' => $tableId, 'columnId' => $columnId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Column($data); + } else { + return $data; + } + } + /** + * Retrieves a list of columns. (column.list) + * + * @param string $tableId Table whose columns are being listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token specifying which result page to return. Optional. + * @opt_param string maxResults Maximum number of columns to return. Optional. Default is 5. + * @return Google_ColumnList + */ + public function listColumn($tableId, $optParams = array()) { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ColumnList($data); + } else { + return $data; + } + } + /** + * Updates the name or type of an existing column. (column.update) + * + * @param string $tableId Table for which the column is being updated. + * @param string $columnId Name or identifier for the column that is being updated. + * @param Google_Column $postBody + * @param array $optParams Optional parameters. + * @return Google_Column + */ + public function update($tableId, $columnId, Google_Column $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'columnId' => $columnId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Column($data); + } else { + return $data; + } + } + /** + * Updates the name or type of an existing column. This method supports patch semantics. + * (column.patch) + * + * @param string $tableId Table for which the column is being updated. + * @param string $columnId Name or identifier for the column that is being updated. + * @param Google_Column $postBody + * @param array $optParams Optional parameters. + * @return Google_Column + */ + public function patch($tableId, $columnId, Google_Column $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'columnId' => $columnId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Column($data); + } else { + return $data; + } + } + /** + * Deletes the column. (column.delete) + * + * @param string $tableId Table from which the column is being deleted. + * @param string $columnId Name or identifier for the column being deleted. + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $columnId, $optParams = array()) { + $params = array('tableId' => $tableId, 'columnId' => $columnId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "query" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_FusiontablesService(...); + * $query = $fusiontablesService->query; + * + */ + class Google_QueryServiceResource extends Google_ServiceResource { + + + /** + * Executes an SQL SELECT/SHOW/DESCRIBE statement. (query.sqlGet) + * + * @param string $sql An SQL SELECT/SHOW/DESCRIBE statement. + * @param array $optParams Optional parameters. + * + * @opt_param bool typed Should typed values be returned in the (JSON) response -- numbers for numeric values and parsed geometries for KML values? Default is true. + * @opt_param bool hdrs Should column names be included (in the first row)?. Default is true. + * @return Google_Sqlresponse + */ + public function sqlGet($sql, $optParams = array()) { + $params = array('sql' => $sql); + $params = array_merge($params, $optParams); + $data = $this->__call('sqlGet', array($params)); + if ($this->useObjects()) { + return new Google_Sqlresponse($data); + } else { + return $data; + } + } + /** + * Executes an SQL SELECT/INSERT/UPDATE/DELETE/SHOW/DESCRIBE statement. (query.sql) + * + * @param string $sql An SQL SELECT/SHOW/DESCRIBE/INSERT/UPDATE/DELETE statement. + * @param array $optParams Optional parameters. + * + * @opt_param bool typed Should typed values be returned in the (JSON) response -- numbers for numeric values and parsed geometries for KML values? Default is true. + * @opt_param bool hdrs Should column names be included (in the first row)?. Default is true. + * @return Google_Sqlresponse + */ + public function sql($sql, $optParams = array()) { + $params = array('sql' => $sql); + $params = array_merge($params, $optParams); + $data = $this->__call('sql', array($params)); + if ($this->useObjects()) { + return new Google_Sqlresponse($data); + } else { + return $data; + } + } + } + + /** + * The "style" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_FusiontablesService(...); + * $style = $fusiontablesService->style; + * + */ + class Google_StyleServiceResource extends Google_ServiceResource { + + + /** + * Adds a new style for the table. (style.insert) + * + * @param string $tableId Table for which a new style is being added + * @param Google_StyleSetting $postBody + * @param array $optParams Optional parameters. + * @return Google_StyleSetting + */ + public function insert($tableId, Google_StyleSetting $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_StyleSetting($data); + } else { + return $data; + } + } + /** + * Gets a specific style. (style.get) + * + * @param string $tableId Table to which the requested style belongs + * @param int $styleId Identifier (integer) for a specific style in a table + * @param array $optParams Optional parameters. + * @return Google_StyleSetting + */ + public function get($tableId, $styleId, $optParams = array()) { + $params = array('tableId' => $tableId, 'styleId' => $styleId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_StyleSetting($data); + } else { + return $data; + } + } + /** + * Retrieves a list of styles. (style.list) + * + * @param string $tableId Table whose styles are being listed + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token specifying which result page to return. Optional. + * @opt_param string maxResults Maximum number of styles to return. Optional. Default is 5. + * @return Google_StyleSettingList + */ + public function listStyle($tableId, $optParams = array()) { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_StyleSettingList($data); + } else { + return $data; + } + } + /** + * Updates an existing style. (style.update) + * + * @param string $tableId Table whose style is being updated. + * @param int $styleId Identifier (within a table) for the style being updated. + * @param Google_StyleSetting $postBody + * @param array $optParams Optional parameters. + * @return Google_StyleSetting + */ + public function update($tableId, $styleId, Google_StyleSetting $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'styleId' => $styleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_StyleSetting($data); + } else { + return $data; + } + } + /** + * Updates an existing style. This method supports patch semantics. (style.patch) + * + * @param string $tableId Table whose style is being updated. + * @param int $styleId Identifier (within a table) for the style being updated. + * @param Google_StyleSetting $postBody + * @param array $optParams Optional parameters. + * @return Google_StyleSetting + */ + public function patch($tableId, $styleId, Google_StyleSetting $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'styleId' => $styleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_StyleSetting($data); + } else { + return $data; + } + } + /** + * Deletes a style. (style.delete) + * + * @param string $tableId Table from which the style is being deleted + * @param int $styleId Identifier (within a table) for the style being deleted + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $styleId, $optParams = array()) { + $params = array('tableId' => $tableId, 'styleId' => $styleId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "template" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_FusiontablesService(...); + * $template = $fusiontablesService->template; + * + */ + class Google_TemplateServiceResource extends Google_ServiceResource { + + + /** + * Creates a new template for the table. (template.insert) + * + * @param string $tableId Table for which a new template is being created + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + * @return Google_Template + */ + public function insert($tableId, Google_Template $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Template($data); + } else { + return $data; + } + } + /** + * Retrieves a specific template by its id (template.get) + * + * @param string $tableId Table to which the template belongs + * @param int $templateId Identifier for the template that is being requested + * @param array $optParams Optional parameters. + * @return Google_Template + */ + public function get($tableId, $templateId, $optParams = array()) { + $params = array('tableId' => $tableId, 'templateId' => $templateId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Template($data); + } else { + return $data; + } + } + /** + * Retrieves a list of templates. (template.list) + * + * @param string $tableId Identifier for the table whose templates are being requested + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token specifying which results page to return. Optional. + * @opt_param string maxResults Maximum number of templates to return. Optional. Default is 5. + * @return Google_TemplateList + */ + public function listTemplate($tableId, $optParams = array()) { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TemplateList($data); + } else { + return $data; + } + } + /** + * Updates an existing template (template.update) + * + * @param string $tableId Table to which the updated template belongs + * @param int $templateId Identifier for the template that is being updated + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + * @return Google_Template + */ + public function update($tableId, $templateId, Google_Template $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'templateId' => $templateId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Template($data); + } else { + return $data; + } + } + /** + * Updates an existing template. This method supports patch semantics. (template.patch) + * + * @param string $tableId Table to which the updated template belongs + * @param int $templateId Identifier for the template that is being updated + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + * @return Google_Template + */ + public function patch($tableId, $templateId, Google_Template $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'templateId' => $templateId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Template($data); + } else { + return $data; + } + } + /** + * Deletes a template (template.delete) + * + * @param string $tableId Table from which the template is being deleted + * @param int $templateId Identifier for the template which is being deleted + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $templateId, $optParams = array()) { + $params = array('tableId' => $tableId, 'templateId' => $templateId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "table" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_FusiontablesService(...); + * $table = $fusiontablesService->table; + * + */ + class Google_TableServiceResource extends Google_ServiceResource { + + + /** + * Creates a new table. (table.insert) + * + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Table + */ + public function insert(Google_Table $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Retrieves a specific table by its id. (table.get) + * + * @param string $tableId Identifier(ID) for the table being requested. + * @param array $optParams Optional parameters. + * @return Google_Table + */ + public function get($tableId, $optParams = array()) { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Retrieves a list of tables a user owns. (table.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token specifying which result page to return. Optional. + * @opt_param string maxResults Maximum number of styles to return. Optional. Default is 5. + * @return Google_TableList + */ + public function listTable($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TableList($data); + } else { + return $data; + } + } + /** + * Updates an existing table. Unless explicitly requested, only the name, description, and + * attribution will be updated. (table.update) + * + * @param string $tableId Id of the table that is being updated. + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool replaceViewDefinition Should the view definition also be updated? The specified view definition replaces the existing one. Only a view can be updated with a new definition. + * @return Google_Table + */ + public function update($tableId, Google_Table $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Updates an existing table. Unless explicitly requested, only the name, description, and + * attribution will be updated. This method supports patch semantics. (table.patch) + * + * @param string $tableId Id of the table that is being updated. + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool replaceViewDefinition Should the view definition also be updated? The specified view definition replaces the existing one. Only a view can be updated with a new definition. + * @return Google_Table + */ + public function patch($tableId, Google_Table $postBody, $optParams = array()) { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Table($data); + } else { + return $data; + } + } + /** + * Deletes a table. (table.delete) + * + * @param string $tableId Id of the table that is being deleted. + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $optParams = array()) { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Fusiontables (v1). + * + *

+ * API for working with Fusion Tables data. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_FusiontablesService extends Google_Service { + public $column; + public $query; + public $style; + public $template; + public $table; + /** + * Constructs the internal representation of the Fusiontables service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'fusiontables/v1/'; + $this->version = 'v1'; + $this->serviceName = 'fusiontables'; + + $client->addService($this->serviceName, $this->version); + $this->column = new Google_ColumnServiceResource($this, $this->serviceName, 'column', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Column"}, "response": {"$ref": "Column"}, "httpMethod": "POST", "path": "tables/{tableId}/columns", "id": "fusiontables.column.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "columnId": {"required": true, "type": "string", "location": "path"}}, "id": "fusiontables.column.get", "httpMethod": "GET", "path": "tables/{tableId}/columns/{columnId}", "response": {"$ref": "Column"}}, "list": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "tableId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}}, "id": "fusiontables.column.list", "httpMethod": "GET", "path": "tables/{tableId}/columns", "response": {"$ref": "ColumnList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "columnId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Column"}, "response": {"$ref": "Column"}, "httpMethod": "PUT", "path": "tables/{tableId}/columns/{columnId}", "id": "fusiontables.column.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "columnId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Column"}, "response": {"$ref": "Column"}, "httpMethod": "PATCH", "path": "tables/{tableId}/columns/{columnId}", "id": "fusiontables.column.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "path": "tables/{tableId}/columns/{columnId}", "id": "fusiontables.column.delete", "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "columnId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->query = new Google_QueryServiceResource($this, $this->serviceName, 'query', json_decode('{"methods": {"sqlGet": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"typed": {"type": "boolean", "location": "query"}, "hdrs": {"type": "boolean", "location": "query"}, "sql": {"required": true, "type": "string", "location": "query"}}, "id": "fusiontables.query.sqlGet", "httpMethod": "GET", "path": "query", "response": {"$ref": "Sqlresponse"}}, "sql": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"typed": {"type": "boolean", "location": "query"}, "hdrs": {"type": "boolean", "location": "query"}, "sql": {"required": true, "type": "string", "location": "query"}}, "id": "fusiontables.query.sql", "httpMethod": "POST", "path": "query", "response": {"$ref": "Sqlresponse"}}}}', true)); + $this->style = new Google_StyleServiceResource($this, $this->serviceName, 'style', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "StyleSetting"}, "response": {"$ref": "StyleSetting"}, "httpMethod": "POST", "path": "tables/{tableId}/styles", "id": "fusiontables.style.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "styleId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "id": "fusiontables.style.get", "httpMethod": "GET", "path": "tables/{tableId}/styles/{styleId}", "response": {"$ref": "StyleSetting"}}, "list": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "tableId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}}, "id": "fusiontables.style.list", "httpMethod": "GET", "path": "tables/{tableId}/styles", "response": {"$ref": "StyleSettingList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "styleId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "StyleSetting"}, "response": {"$ref": "StyleSetting"}, "httpMethod": "PUT", "path": "tables/{tableId}/styles/{styleId}", "id": "fusiontables.style.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "styleId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "StyleSetting"}, "response": {"$ref": "StyleSetting"}, "httpMethod": "PATCH", "path": "tables/{tableId}/styles/{styleId}", "id": "fusiontables.style.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "path": "tables/{tableId}/styles/{styleId}", "id": "fusiontables.style.delete", "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "styleId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "httpMethod": "DELETE"}}}', true)); + $this->template = new Google_TemplateServiceResource($this, $this->serviceName, 'template', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Template"}, "response": {"$ref": "Template"}, "httpMethod": "POST", "path": "tables/{tableId}/templates", "id": "fusiontables.template.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "templateId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "id": "fusiontables.template.get", "httpMethod": "GET", "path": "tables/{tableId}/templates/{templateId}", "response": {"$ref": "Template"}}, "list": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "tableId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}}, "id": "fusiontables.template.list", "httpMethod": "GET", "path": "tables/{tableId}/templates", "response": {"$ref": "TemplateList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "templateId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "Template"}, "response": {"$ref": "Template"}, "httpMethod": "PUT", "path": "tables/{tableId}/templates/{templateId}", "id": "fusiontables.template.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "templateId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "Template"}, "response": {"$ref": "Template"}, "httpMethod": "PATCH", "path": "tables/{tableId}/templates/{templateId}", "id": "fusiontables.template.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "path": "tables/{tableId}/templates/{templateId}", "id": "fusiontables.template.delete", "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}, "templateId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "httpMethod": "DELETE"}}}', true)); + $this->table = new Google_TableServiceResource($this, $this->serviceName, 'table', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "request": {"$ref": "Table"}, "response": {"$ref": "Table"}, "httpMethod": "POST", "path": "tables", "id": "fusiontables.table.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}}, "id": "fusiontables.table.get", "httpMethod": "GET", "path": "tables/{tableId}", "response": {"$ref": "Table"}}, "list": {"scopes": ["https://www.googleapis.com/auth/fusiontables", "https://www.googleapis.com/auth/fusiontables.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}}, "response": {"$ref": "TableList"}, "httpMethod": "GET", "path": "tables", "id": "fusiontables.table.list"}, "update": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"replaceViewDefinition": {"type": "boolean", "location": "query"}, "tableId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Table"}, "response": {"$ref": "Table"}, "httpMethod": "PUT", "path": "tables/{tableId}", "id": "fusiontables.table.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "parameters": {"replaceViewDefinition": {"type": "boolean", "location": "query"}, "tableId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Table"}, "response": {"$ref": "Table"}, "httpMethod": "PATCH", "path": "tables/{tableId}", "id": "fusiontables.table.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/fusiontables"], "path": "tables/{tableId}", "id": "fusiontables.table.delete", "parameters": {"tableId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_Bucket extends Google_Model { + public $opacity; + public $weight; + public $min; + public $color; + public $max; + public $icon; + public function setOpacity($opacity) { + $this->opacity = $opacity; + } + public function getOpacity() { + return $this->opacity; + } + public function setWeight($weight) { + $this->weight = $weight; + } + public function getWeight() { + return $this->weight; + } + public function setMin($min) { + $this->min = $min; + } + public function getMin() { + return $this->min; + } + public function setColor($color) { + $this->color = $color; + } + public function getColor() { + return $this->color; + } + public function setMax($max) { + $this->max = $max; + } + public function getMax() { + return $this->max; + } + public function setIcon($icon) { + $this->icon = $icon; + } + public function getIcon() { + return $this->icon; + } +} + +class Google_Column extends Google_Model { + public $kind; + public $type; + public $columnId; + public $name; + protected $__baseColumnType = 'Google_ColumnBaseColumn'; + protected $__baseColumnDataType = ''; + public $baseColumn; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setColumnId($columnId) { + $this->columnId = $columnId; + } + public function getColumnId() { + return $this->columnId; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setBaseColumn(Google_ColumnBaseColumn $baseColumn) { + $this->baseColumn = $baseColumn; + } + public function getBaseColumn() { + return $this->baseColumn; + } +} + +class Google_ColumnBaseColumn extends Google_Model { + public $tableIndex; + public $columnId; + public function setTableIndex($tableIndex) { + $this->tableIndex = $tableIndex; + } + public function getTableIndex() { + return $this->tableIndex; + } + public function setColumnId($columnId) { + $this->columnId = $columnId; + } + public function getColumnId() { + return $this->columnId; + } +} + +class Google_ColumnList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Column'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Column) */ $items) { + $this->assertIsArray($items, 'Google_Column', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} + +class Google_Geometry extends Google_Model { + public $geometry; + public $type; + public $geometries; + public function setGeometry($geometry) { + $this->geometry = $geometry; + } + public function getGeometry() { + return $this->geometry; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setGeometries(/* array(Google_object) */ $geometries) { + $this->assertIsArray($geometries, 'Google_object', __METHOD__); + $this->geometries = $geometries; + } + public function getGeometries() { + return $this->geometries; + } +} + +class Google_Line extends Google_Model { + public $type; + public $coordinates; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setCoordinates(/* array(Google_double) */ $coordinates) { + $this->assertIsArray($coordinates, 'Google_double', __METHOD__); + $this->coordinates = $coordinates; + } + public function getCoordinates() { + return $this->coordinates; + } +} + +class Google_LineStyle extends Google_Model { + public $strokeWeight; + protected $__strokeWeightStylerType = 'Google_StyleFunction'; + protected $__strokeWeightStylerDataType = ''; + public $strokeWeightStyler; + public $strokeColor; + public $strokeOpacity; + protected $__strokeColorStylerType = 'Google_StyleFunction'; + protected $__strokeColorStylerDataType = ''; + public $strokeColorStyler; + public function setStrokeWeight($strokeWeight) { + $this->strokeWeight = $strokeWeight; + } + public function getStrokeWeight() { + return $this->strokeWeight; + } + public function setStrokeWeightStyler(Google_StyleFunction $strokeWeightStyler) { + $this->strokeWeightStyler = $strokeWeightStyler; + } + public function getStrokeWeightStyler() { + return $this->strokeWeightStyler; + } + public function setStrokeColor($strokeColor) { + $this->strokeColor = $strokeColor; + } + public function getStrokeColor() { + return $this->strokeColor; + } + public function setStrokeOpacity($strokeOpacity) { + $this->strokeOpacity = $strokeOpacity; + } + public function getStrokeOpacity() { + return $this->strokeOpacity; + } + public function setStrokeColorStyler(Google_StyleFunction $strokeColorStyler) { + $this->strokeColorStyler = $strokeColorStyler; + } + public function getStrokeColorStyler() { + return $this->strokeColorStyler; + } +} + +class Google_Point extends Google_Model { + public $type; + public $coordinates; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setCoordinates(/* array(Google_double) */ $coordinates) { + $this->assertIsArray($coordinates, 'Google_double', __METHOD__); + $this->coordinates = $coordinates; + } + public function getCoordinates() { + return $this->coordinates; + } +} + +class Google_PointStyle extends Google_Model { + protected $__iconStylerType = 'Google_StyleFunction'; + protected $__iconStylerDataType = ''; + public $iconStyler; + public $iconName; + public function setIconStyler(Google_StyleFunction $iconStyler) { + $this->iconStyler = $iconStyler; + } + public function getIconStyler() { + return $this->iconStyler; + } + public function setIconName($iconName) { + $this->iconName = $iconName; + } + public function getIconName() { + return $this->iconName; + } +} + +class Google_Polygon extends Google_Model { + public $type; + public $coordinates; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setCoordinates(/* array(Google_double) */ $coordinates) { + $this->assertIsArray($coordinates, 'Google_double', __METHOD__); + $this->coordinates = $coordinates; + } + public function getCoordinates() { + return $this->coordinates; + } +} + +class Google_PolygonStyle extends Google_Model { + protected $__strokeColorStylerType = 'Google_StyleFunction'; + protected $__strokeColorStylerDataType = ''; + public $strokeColorStyler; + public $strokeWeight; + public $strokeOpacity; + protected $__strokeWeightStylerType = 'Google_StyleFunction'; + protected $__strokeWeightStylerDataType = ''; + public $strokeWeightStyler; + protected $__fillColorStylerType = 'Google_StyleFunction'; + protected $__fillColorStylerDataType = ''; + public $fillColorStyler; + public $fillColor; + public $strokeColor; + public $fillOpacity; + public function setStrokeColorStyler(Google_StyleFunction $strokeColorStyler) { + $this->strokeColorStyler = $strokeColorStyler; + } + public function getStrokeColorStyler() { + return $this->strokeColorStyler; + } + public function setStrokeWeight($strokeWeight) { + $this->strokeWeight = $strokeWeight; + } + public function getStrokeWeight() { + return $this->strokeWeight; + } + public function setStrokeOpacity($strokeOpacity) { + $this->strokeOpacity = $strokeOpacity; + } + public function getStrokeOpacity() { + return $this->strokeOpacity; + } + public function setStrokeWeightStyler(Google_StyleFunction $strokeWeightStyler) { + $this->strokeWeightStyler = $strokeWeightStyler; + } + public function getStrokeWeightStyler() { + return $this->strokeWeightStyler; + } + public function setFillColorStyler(Google_StyleFunction $fillColorStyler) { + $this->fillColorStyler = $fillColorStyler; + } + public function getFillColorStyler() { + return $this->fillColorStyler; + } + public function setFillColor($fillColor) { + $this->fillColor = $fillColor; + } + public function getFillColor() { + return $this->fillColor; + } + public function setStrokeColor($strokeColor) { + $this->strokeColor = $strokeColor; + } + public function getStrokeColor() { + return $this->strokeColor; + } + public function setFillOpacity($fillOpacity) { + $this->fillOpacity = $fillOpacity; + } + public function getFillOpacity() { + return $this->fillOpacity; + } +} + +class Google_Sqlresponse extends Google_Model { + public $kind; + public $rows; + public $columns; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setRows(/* array(Google_object) */ $rows) { + $this->assertIsArray($rows, 'Google_object', __METHOD__); + $this->rows = $rows; + } + public function getRows() { + return $this->rows; + } + public function setColumns(/* array(Google_string) */ $columns) { + $this->assertIsArray($columns, 'Google_string', __METHOD__); + $this->columns = $columns; + } + public function getColumns() { + return $this->columns; + } +} + +class Google_StyleFunction extends Google_Model { + protected $__gradientType = 'Google_StyleFunctionGradient'; + protected $__gradientDataType = ''; + public $gradient; + public $columnName; + protected $__bucketsType = 'Google_Bucket'; + protected $__bucketsDataType = 'array'; + public $buckets; + public $kind; + public function setGradient(Google_StyleFunctionGradient $gradient) { + $this->gradient = $gradient; + } + public function getGradient() { + return $this->gradient; + } + public function setColumnName($columnName) { + $this->columnName = $columnName; + } + public function getColumnName() { + return $this->columnName; + } + public function setBuckets(/* array(Google_Bucket) */ $buckets) { + $this->assertIsArray($buckets, 'Google_Bucket', __METHOD__); + $this->buckets = $buckets; + } + public function getBuckets() { + return $this->buckets; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_StyleFunctionGradient extends Google_Model { + public $max; + protected $__colorsType = 'Google_StyleFunctionGradientColors'; + protected $__colorsDataType = 'array'; + public $colors; + public $min; + public function setMax($max) { + $this->max = $max; + } + public function getMax() { + return $this->max; + } + public function setColors(/* array(Google_StyleFunctionGradientColors) */ $colors) { + $this->assertIsArray($colors, 'Google_StyleFunctionGradientColors', __METHOD__); + $this->colors = $colors; + } + public function getColors() { + return $this->colors; + } + public function setMin($min) { + $this->min = $min; + } + public function getMin() { + return $this->min; + } +} + +class Google_StyleFunctionGradientColors extends Google_Model { + public $color; + public $opacity; + public function setColor($color) { + $this->color = $color; + } + public function getColor() { + return $this->color; + } + public function setOpacity($opacity) { + $this->opacity = $opacity; + } + public function getOpacity() { + return $this->opacity; + } +} + +class Google_StyleSetting extends Google_Model { + protected $__markerOptionsType = 'Google_PointStyle'; + protected $__markerOptionsDataType = ''; + public $markerOptions; + public $kind; + public $name; + protected $__polygonOptionsType = 'Google_PolygonStyle'; + protected $__polygonOptionsDataType = ''; + public $polygonOptions; + public $isDefaultForTable; + protected $__polylineOptionsType = 'Google_LineStyle'; + protected $__polylineOptionsDataType = ''; + public $polylineOptions; + public $tableId; + public $styleId; + public function setMarkerOptions(Google_PointStyle $markerOptions) { + $this->markerOptions = $markerOptions; + } + public function getMarkerOptions() { + return $this->markerOptions; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setPolygonOptions(Google_PolygonStyle $polygonOptions) { + $this->polygonOptions = $polygonOptions; + } + public function getPolygonOptions() { + return $this->polygonOptions; + } + public function setIsDefaultForTable($isDefaultForTable) { + $this->isDefaultForTable = $isDefaultForTable; + } + public function getIsDefaultForTable() { + return $this->isDefaultForTable; + } + public function setPolylineOptions(Google_LineStyle $polylineOptions) { + $this->polylineOptions = $polylineOptions; + } + public function getPolylineOptions() { + return $this->polylineOptions; + } + public function setTableId($tableId) { + $this->tableId = $tableId; + } + public function getTableId() { + return $this->tableId; + } + public function setStyleId($styleId) { + $this->styleId = $styleId; + } + public function getStyleId() { + return $this->styleId; + } +} + +class Google_StyleSettingList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_StyleSetting'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_StyleSetting) */ $items) { + $this->assertIsArray($items, 'Google_StyleSetting', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} + +class Google_Table extends Google_Model { + public $kind; + public $attribution; + public $description; + public $isExportable; + public $baseTableIds; + public $attributionLink; + public $sql; + public $tableId; + protected $__columnsType = 'Google_Column'; + protected $__columnsDataType = 'array'; + public $columns; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAttribution($attribution) { + $this->attribution = $attribution; + } + public function getAttribution() { + return $this->attribution; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setIsExportable($isExportable) { + $this->isExportable = $isExportable; + } + public function getIsExportable() { + return $this->isExportable; + } + public function setBaseTableIds(/* array(Google_string) */ $baseTableIds) { + $this->assertIsArray($baseTableIds, 'Google_string', __METHOD__); + $this->baseTableIds = $baseTableIds; + } + public function getBaseTableIds() { + return $this->baseTableIds; + } + public function setAttributionLink($attributionLink) { + $this->attributionLink = $attributionLink; + } + public function getAttributionLink() { + return $this->attributionLink; + } + public function setSql($sql) { + $this->sql = $sql; + } + public function getSql() { + return $this->sql; + } + public function setTableId($tableId) { + $this->tableId = $tableId; + } + public function getTableId() { + return $this->tableId; + } + public function setColumns(/* array(Google_Column) */ $columns) { + $this->assertIsArray($columns, 'Google_Column', __METHOD__); + $this->columns = $columns; + } + public function getColumns() { + return $this->columns; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_TableList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Table'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Table) */ $items) { + $this->assertIsArray($items, 'Google_Table', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Template extends Google_Model { + public $body; + public $kind; + public $name; + public $automaticColumnNames; + public $isDefaultForTable; + public $tableId; + public $templateId; + public function setBody($body) { + $this->body = $body; + } + public function getBody() { + return $this->body; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setAutomaticColumnNames(/* array(Google_string) */ $automaticColumnNames) { + $this->assertIsArray($automaticColumnNames, 'Google_string', __METHOD__); + $this->automaticColumnNames = $automaticColumnNames; + } + public function getAutomaticColumnNames() { + return $this->automaticColumnNames; + } + public function setIsDefaultForTable($isDefaultForTable) { + $this->isDefaultForTable = $isDefaultForTable; + } + public function getIsDefaultForTable() { + return $this->isDefaultForTable; + } + public function setTableId($tableId) { + $this->tableId = $tableId; + } + public function getTableId() { + return $this->tableId; + } + public function setTemplateId($templateId) { + $this->templateId = $templateId; + } + public function getTemplateId() { + return $this->templateId; + } +} + +class Google_TemplateList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Template'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Template) */ $items) { + $this->assertIsArray($items, 'Google_Template', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} diff --git a/modules/oauth/src/google/contrib/Google_GanService.php b/modules/oauth/src/google/contrib/Google_GanService.php new file mode 100644 index 0000000..89ced72 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_GanService.php @@ -0,0 +1,1605 @@ + + * $ganService = new Google_GanService(...); + * $advertisers = $ganService->advertisers; + * + */ + class Google_AdvertisersServiceResource extends Google_ServiceResource { + + + /** + * Retrieves data about all advertisers that the requesting advertiser/publisher has access to. + * (advertisers.list) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param array $optParams Optional parameters. + * + * @opt_param string relationshipStatus Filters out all advertisers for which do not have the given relationship status with the requesting publisher. + * @opt_param double minSevenDayEpc Filters out all advertisers that have a seven day EPC average lower than the given value (inclusive). Min value: 0.0. Optional. + * @opt_param string advertiserCategory Caret(^) delimted list of advertiser categories. Valid categories are defined here: http://www.google.com/support/affiliatenetwork/advertiser/bin/answer.py?hl=en=107581. Filters out all advertisers not in one of the given advertiser categories. Optional. + * @opt_param double minNinetyDayEpc Filters out all advertisers that have a ninety day EPC average lower than the given value (inclusive). Min value: 0.0. Optional. + * @opt_param string pageToken The value of 'nextPageToken' from the previous page. Optional. + * @opt_param string maxResults Max number of items to return in this page. Optional. Defaults to 20. + * @opt_param int minPayoutRank A value between 1 and 4, where 1 represents the quartile of advertisers with the lowest ranks and 4 represents the quartile of advertisers with the highest ranks. Filters out all advertisers with a lower rank than the given quartile. For example if a 2 was given only advertisers with a payout rank of 25 or higher would be included. Optional. + * @return Google_Advertisers + */ + public function listAdvertisers($role, $roleId, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Advertisers($data); + } else { + return $data; + } + } + /** + * Retrieves data about a single advertiser if that the requesting advertiser/publisher has access + * to it. Only publishers can lookup advertisers. Advertisers can request information about + * themselves by omitting the advertiserId query parameter. (advertisers.get) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param array $optParams Optional parameters. + * + * @opt_param string advertiserId The ID of the advertiser to look up. Optional. + * @return Google_Advertiser + */ + public function get($role, $roleId, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Advertiser($data); + } else { + return $data; + } + } + } + + /** + * The "ccOffers" collection of methods. + * Typical usage is: + * + * $ganService = new Google_GanService(...); + * $ccOffers = $ganService->ccOffers; + * + */ + class Google_CcOffersServiceResource extends Google_ServiceResource { + + + /** + * Retrieves credit card offers for the given publisher. (ccOffers.list) + * + * @param string $publisher The ID of the publisher in question. + * @param array $optParams Optional parameters. + * + * @opt_param string advertiser The advertiser ID of a card issuer whose offers to include. Optional, may be repeated. + * @opt_param string projection The set of fields to return. + * @return Google_CcOffers + */ + public function listCcOffers($publisher, $optParams = array()) { + $params = array('publisher' => $publisher); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CcOffers($data); + } else { + return $data; + } + } + } + + /** + * The "events" collection of methods. + * Typical usage is: + * + * $ganService = new Google_GanService(...); + * $events = $ganService->events; + * + */ + class Google_EventsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves event data for a given advertiser/publisher. (events.list) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param array $optParams Optional parameters. + * + * @opt_param string orderId Caret(^) delimited list of order IDs. Filters out all events that do not reference one of the given order IDs. Optional. + * @opt_param string sku Caret(^) delimited list of SKUs. Filters out all events that do not reference one of the given SKU. Optional. + * @opt_param string eventDateMax Filters out all events later than given date. Optional. Defaults to 24 hours after eventMin. + * @opt_param string type Filters out all events that are not of the given type. Valid values: 'action', 'transaction', 'charge'. Optional. + * @opt_param string linkId Caret(^) delimited list of link IDs. Filters out all events that do not reference one of the given link IDs. Optional. + * @opt_param string modifyDateMin Filters out all events modified earlier than given date. Optional. Defaults to 24 hours before the current modifyDateMax, if modifyDateMax is explicitly set. + * @opt_param string eventDateMin Filters out all events earlier than given date. Optional. Defaults to 24 hours from current date/time. + * @opt_param string memberId Caret(^) delimited list of member IDs. Filters out all events that do not reference one of the given member IDs. Optional. + * @opt_param string maxResults Max number of offers to return in this page. Optional. Defaults to 20. + * @opt_param string advertiserId Caret(^) delimited list of advertiser IDs. Filters out all events that do not reference one of the given advertiser IDs. Only used when under publishers role. Optional. + * @opt_param string pageToken The value of 'nextPageToken' from the previous page. Optional. + * @opt_param string productCategory Caret(^) delimited list of product categories. Filters out all events that do not reference a product in one of the given product categories. Optional. + * @opt_param string chargeType Filters out all charge events that are not of the given charge type. Valid values: 'other', 'slotting_fee', 'monthly_minimum', 'tier_bonus', 'credit', 'debit'. Optional. + * @opt_param string modifyDateMax Filters out all events modified later than given date. Optional. Defaults to 24 hours after modifyDateMin, if modifyDateMin is explicitly set. + * @opt_param string status Filters out all events that do not have the given status. Valid values: 'active', 'canceled'. Optional. + * @opt_param string publisherId Caret(^) delimited list of publisher IDs. Filters out all events that do not reference one of the given publishers IDs. Only used when under advertiser role. Optional. + * @return Google_Events + */ + public function listEvents($role, $roleId, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Events($data); + } else { + return $data; + } + } + } + + /** + * The "links" collection of methods. + * Typical usage is: + * + * $ganService = new Google_GanService(...); + * $links = $ganService->links; + * + */ + class Google_LinksServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new link. (links.insert) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param Google_Link $postBody + * @param array $optParams Optional parameters. + * @return Google_Link + */ + public function insert($role, $roleId, Google_Link $postBody, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Link($data); + } else { + return $data; + } + } + /** + * Retrieves all links that match the query parameters. (links.list) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param array $optParams Optional parameters. + * + * @opt_param string linkType The type of the link. + * @opt_param string startDateMin The beginning of the start date range. + * @opt_param string assetSize The size of the given asset. + * @opt_param string relationshipStatus The status of the relationship. + * @opt_param string advertiserCategory The advertiser's primary vertical. + * @opt_param string maxResults Max number of items to return in this page. Optional. Defaults to 20. + * @opt_param string advertiserId Limits the resulting links to the ones belonging to the listed advertisers. + * @opt_param string pageToken The value of 'nextPageToken' from the previous page. Optional. + * @opt_param string startDateMax The end of the start date range. + * @opt_param string promotionType The promotion type. + * @opt_param string authorship The role of the author of the link. + * @return Google_Links + */ + public function listLinks($role, $roleId, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Links($data); + } else { + return $data; + } + } + /** + * Retrieves data about a single link if the requesting advertiser/publisher has access to it. + * Advertisers can look up their own links. Publishers can look up visible links or links belonging + * to advertisers they are in a relationship with. (links.get) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param string $linkId The ID of the link to look up. + * @param array $optParams Optional parameters. + * @return Google_Link + */ + public function get($role, $roleId, $linkId, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId, 'linkId' => $linkId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Link($data); + } else { + return $data; + } + } + } + + /** + * The "publishers" collection of methods. + * Typical usage is: + * + * $ganService = new Google_GanService(...); + * $publishers = $ganService->publishers; + * + */ + class Google_PublishersServiceResource extends Google_ServiceResource { + + + /** + * Retrieves data about all publishers that the requesting advertiser/publisher has access to. + * (publishers.list) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param array $optParams Optional parameters. + * + * @opt_param string publisherCategory Caret(^) delimted list of publisher categories. Valid categories: (unclassified|community_and_content|shopping_and_promotion|loyalty_and_rewards|network|search_specialist|comparison_shopping|email). Filters out all publishers not in one of the given advertiser categories. Optional. + * @opt_param string relationshipStatus Filters out all publishers for which do not have the given relationship status with the requesting publisher. + * @opt_param double minSevenDayEpc Filters out all publishers that have a seven day EPC average lower than the given value (inclusive). Min value 0.0. Optional. + * @opt_param double minNinetyDayEpc Filters out all publishers that have a ninety day EPC average lower than the given value (inclusive). Min value: 0.0. Optional. + * @opt_param string pageToken The value of 'nextPageToken' from the previous page. Optional. + * @opt_param string maxResults Max number of items to return in this page. Optional. Defaults to 20. + * @opt_param int minPayoutRank A value between 1 and 4, where 1 represents the quartile of publishers with the lowest ranks and 4 represents the quartile of publishers with the highest ranks. Filters out all publishers with a lower rank than the given quartile. For example if a 2 was given only publishers with a payout rank of 25 or higher would be included. Optional. + * @return Google_Publishers + */ + public function listPublishers($role, $roleId, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Publishers($data); + } else { + return $data; + } + } + /** + * Retrieves data about a single advertiser if that the requesting advertiser/publisher has access + * to it. Only advertisers can look up publishers. Publishers can request information about + * themselves by omitting the publisherId query parameter. (publishers.get) + * + * @param string $role The role of the requester. Valid values: 'advertisers' or 'publishers'. + * @param string $roleId The ID of the requesting advertiser or publisher. + * @param array $optParams Optional parameters. + * + * @opt_param string publisherId The ID of the publisher to look up. Optional. + * @return Google_Publisher + */ + public function get($role, $roleId, $optParams = array()) { + $params = array('role' => $role, 'roleId' => $roleId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Publisher($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Gan (v1beta1). + * + *

+ * Lets you have programmatic access to your Google Affiliate Network data. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_GanService extends Google_Service { + public $advertisers; + public $ccOffers; + public $events; + public $links; + public $publishers; + /** + * Constructs the internal representation of the Gan service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'gan/v1beta1/'; + $this->version = 'v1beta1'; + $this->serviceName = 'gan'; + + $client->addService($this->serviceName, $this->version); + $this->advertisers = new Google_AdvertisersServiceResource($this, $this->serviceName, 'advertisers', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"relationshipStatus": {"enum": ["approved", "available", "deactivated", "declined", "pending"], "type": "string", "location": "query"}, "minSevenDayEpc": {"type": "number", "location": "query", "format": "double"}, "advertiserCategory": {"type": "string", "location": "query"}, "minNinetyDayEpc": {"type": "number", "location": "query", "format": "double"}, "pageToken": {"type": "string", "location": "query"}, "role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "100", "format": "uint32"}, "roleId": {"required": true, "type": "string", "location": "path"}, "minPayoutRank": {"location": "query", "minimum": "1", "type": "integer", "maximum": "4", "format": "int32"}}, "id": "gan.advertisers.list", "httpMethod": "GET", "path": "{role}/{roleId}/advertisers", "response": {"$ref": "Advertisers"}}, "get": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"advertiserId": {"type": "string", "location": "query"}, "roleId": {"required": true, "type": "string", "location": "path"}, "role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}}, "id": "gan.advertisers.get", "httpMethod": "GET", "path": "{role}/{roleId}/advertiser", "response": {"$ref": "Advertiser"}}}}', true)); + $this->ccOffers = new Google_CcOffersServiceResource($this, $this->serviceName, 'ccOffers', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"advertiser": {"repeated": true, "type": "string", "location": "query"}, "projection": {"enum": ["full", "summary"], "type": "string", "location": "query"}, "publisher": {"required": true, "type": "string", "location": "path"}}, "id": "gan.ccOffers.list", "httpMethod": "GET", "path": "publishers/{publisher}/ccOffers", "response": {"$ref": "CcOffers"}}}}', true)); + $this->events = new Google_EventsServiceResource($this, $this->serviceName, 'events', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"orderId": {"type": "string", "location": "query"}, "sku": {"type": "string", "location": "query"}, "eventDateMax": {"type": "string", "location": "query"}, "type": {"enum": ["action", "charge", "transaction"], "type": "string", "location": "query"}, "roleId": {"required": true, "type": "string", "location": "path"}, "linkId": {"type": "string", "location": "query"}, "status": {"enum": ["active", "canceled"], "type": "string", "location": "query"}, "eventDateMin": {"type": "string", "location": "query"}, "memberId": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "100", "format": "uint32"}, "advertiserId": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}, "productCategory": {"type": "string", "location": "query"}, "chargeType": {"enum": ["credit", "debit", "monthly_minimum", "other", "slotting_fee", "tier_bonus"], "type": "string", "location": "query"}, "modifyDateMin": {"type": "string", "location": "query"}, "modifyDateMax": {"type": "string", "location": "query"}, "publisherId": {"type": "string", "location": "query"}}, "id": "gan.events.list", "httpMethod": "GET", "path": "{role}/{roleId}/events", "response": {"$ref": "Events"}}}}', true)); + $this->links = new Google_LinksServiceResource($this, $this->serviceName, 'links', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/gan"], "parameters": {"roleId": {"required": true, "type": "string", "location": "path"}, "role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}}, "request": {"$ref": "Link"}, "response": {"$ref": "Link"}, "httpMethod": "POST", "path": "{role}/{roleId}/link", "id": "gan.links.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"linkType": {"enum": ["banner", "text"], "type": "string", "location": "query"}, "startDateMin": {"type": "string", "location": "query"}, "assetSize": {"repeated": true, "type": "string", "location": "query"}, "roleId": {"required": true, "type": "string", "location": "path"}, "relationshipStatus": {"enum": ["approved", "available"], "type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "100", "format": "uint32"}, "advertiserCategory": {"repeated": true, "enum": ["apparel_accessories", "appliances_electronics", "auto_dealer", "automotive", "babies_kids", "blogs_personal_sites", "books_magazines", "computers", "dating", "department_stores", "education", "employment", "financial_credit_cards", "financial_other", "flowers_gifts", "grocery", "health_beauty", "home_garden", "hosting_domain", "internet_providers", "legal", "media_entertainment", "medical", "movies_games", "music", "nonprofit", "office_supplies", "online_games", "outdoor", "pets", "real_estate", "restaurants", "sport_fitness", "telecom", "ticketing", "toys_hobbies", "travel", "utilities", "wholesale_relationship", "wine_spirits"], "type": "string", "location": "query"}, "advertiserId": {"repeated": true, "type": "string", "location": "query", "format": "int64"}, "pageToken": {"type": "string", "location": "query"}, "role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}, "startDateMax": {"type": "string", "location": "query"}, "promotionType": {"repeated": true, "enum": ["buy_get", "coupon", "free_gift", "free_gift_wrap", "free_shipping", "none", "ongoing", "percent_off", "price_cut", "product_promotion", "sale", "sweepstakes"], "type": "string", "location": "query"}, "authorship": {"enum": ["advertiser", "publisher"], "type": "string", "location": "query"}}, "id": "gan.links.list", "httpMethod": "GET", "path": "{role}/{roleId}/links", "response": {"$ref": "Links"}}, "get": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"linkId": {"required": true, "type": "string", "location": "path", "format": "int64"}, "role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}, "roleId": {"required": true, "type": "string", "location": "path"}}, "id": "gan.links.get", "httpMethod": "GET", "path": "{role}/{roleId}/link/{linkId}", "response": {"$ref": "Link"}}}}', true)); + $this->publishers = new Google_PublishersServiceResource($this, $this->serviceName, 'publishers', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"publisherCategory": {"type": "string", "location": "query"}, "relationshipStatus": {"enum": ["approved", "available", "deactivated", "declined", "pending"], "type": "string", "location": "query"}, "minSevenDayEpc": {"type": "number", "location": "query", "format": "double"}, "minNinetyDayEpc": {"type": "number", "location": "query", "format": "double"}, "pageToken": {"type": "string", "location": "query"}, "role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}, "maxResults": {"location": "query", "minimum": "0", "type": "integer", "maximum": "100", "format": "uint32"}, "roleId": {"required": true, "type": "string", "location": "path"}, "minPayoutRank": {"location": "query", "minimum": "1", "type": "integer", "maximum": "4", "format": "int32"}}, "id": "gan.publishers.list", "httpMethod": "GET", "path": "{role}/{roleId}/publishers", "response": {"$ref": "Publishers"}}, "get": {"scopes": ["https://www.googleapis.com/auth/gan", "https://www.googleapis.com/auth/gan.readonly"], "parameters": {"role": {"required": true, "type": "string", "location": "path", "enum": ["advertisers", "publishers"]}, "publisherId": {"type": "string", "location": "query"}, "roleId": {"required": true, "type": "string", "location": "path"}}, "id": "gan.publishers.get", "httpMethod": "GET", "path": "{role}/{roleId}/publisher", "response": {"$ref": "Publisher"}}}}', true)); + + } +} + +class Google_Advertiser extends Google_Model { + public $category; + public $contactEmail; + public $kind; + public $siteUrl; + public $contactPhone; + public $description; + public $payoutRank; + public $defaultLinkId; + protected $__epcSevenDayAverageType = 'Google_Money'; + protected $__epcSevenDayAverageDataType = ''; + public $epcSevenDayAverage; + public $commissionDuration; + public $status; + protected $__epcNinetyDayAverageType = 'Google_Money'; + protected $__epcNinetyDayAverageDataType = ''; + public $epcNinetyDayAverage; + public $allowPublisherCreatedLinks; + protected $__itemType = 'Google_Advertiser'; + protected $__itemDataType = ''; + public $item; + public $joinDate; + public $logoUrl; + public $id; + public $productFeedsEnabled; + public $name; + public function setCategory($category) { + $this->category = $category; + } + public function getCategory() { + return $this->category; + } + public function setContactEmail($contactEmail) { + $this->contactEmail = $contactEmail; + } + public function getContactEmail() { + return $this->contactEmail; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setSiteUrl($siteUrl) { + $this->siteUrl = $siteUrl; + } + public function getSiteUrl() { + return $this->siteUrl; + } + public function setContactPhone($contactPhone) { + $this->contactPhone = $contactPhone; + } + public function getContactPhone() { + return $this->contactPhone; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setPayoutRank($payoutRank) { + $this->payoutRank = $payoutRank; + } + public function getPayoutRank() { + return $this->payoutRank; + } + public function setDefaultLinkId($defaultLinkId) { + $this->defaultLinkId = $defaultLinkId; + } + public function getDefaultLinkId() { + return $this->defaultLinkId; + } + public function setEpcSevenDayAverage(Google_Money $epcSevenDayAverage) { + $this->epcSevenDayAverage = $epcSevenDayAverage; + } + public function getEpcSevenDayAverage() { + return $this->epcSevenDayAverage; + } + public function setCommissionDuration($commissionDuration) { + $this->commissionDuration = $commissionDuration; + } + public function getCommissionDuration() { + return $this->commissionDuration; + } + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setEpcNinetyDayAverage(Google_Money $epcNinetyDayAverage) { + $this->epcNinetyDayAverage = $epcNinetyDayAverage; + } + public function getEpcNinetyDayAverage() { + return $this->epcNinetyDayAverage; + } + public function setAllowPublisherCreatedLinks($allowPublisherCreatedLinks) { + $this->allowPublisherCreatedLinks = $allowPublisherCreatedLinks; + } + public function getAllowPublisherCreatedLinks() { + return $this->allowPublisherCreatedLinks; + } + public function setItem(Google_Advertiser $item) { + $this->item = $item; + } + public function getItem() { + return $this->item; + } + public function setJoinDate($joinDate) { + $this->joinDate = $joinDate; + } + public function getJoinDate() { + return $this->joinDate; + } + public function setLogoUrl($logoUrl) { + $this->logoUrl = $logoUrl; + } + public function getLogoUrl() { + return $this->logoUrl; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setProductFeedsEnabled($productFeedsEnabled) { + $this->productFeedsEnabled = $productFeedsEnabled; + } + public function getProductFeedsEnabled() { + return $this->productFeedsEnabled; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_Advertisers extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Advertiser'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Advertiser', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_CcOffer extends Google_Model { + public $luggageInsurance; + public $creditLimitMin; + public $cardName; + public $creditLimitMax; + public $gracePeriodDisplay; + public $offerId; + public $rewardUnit; + public $minPurchaseRate; + public $cardBenefits; + protected $__rewardsType = 'Google_CcOfferRewards'; + protected $__rewardsDataType = 'array'; + public $rewards; + public $offersImmediateCashReward; + public $travelInsurance; + public $returnedPaymentFee; + public $kind; + public $issuer; + public $maxPurchaseRate; + public $minimumFinanceCharge; + public $existingCustomerOnly; + public $annualFeeDisplay; + public $initialSetupAndProcessingFee; + public $issuerId; + public $purchaseRateAdditionalDetails; + public $prohibitedCategories; + public $fraudLiability; + public $cashAdvanceTerms; + public $landingPageUrl; + public $introCashAdvanceTerms; + public $rewardsExpire; + public $introPurchaseTerms; + protected $__defaultFeesType = 'Google_CcOfferDefaultFees'; + protected $__defaultFeesDataType = 'array'; + public $defaultFees; + public $extendedWarranty; + public $emergencyInsurance; + public $firstYearAnnualFee; + public $trackingUrl; + public $latePaymentFee; + public $overLimitFee; + public $cardType; + public $approvedCategories; + public $rewardPartner; + public $introBalanceTransferTerms; + public $foreignCurrencyTransactionFee; + public $annualFee; + public $issuerWebsite; + public $variableRatesUpdateFrequency; + public $carRentalInsurance; + public $additionalCardBenefits; + public $ageMinimum; + public $balanceComputationMethod; + public $aprDisplay; + public $additionalCardHolderFee; + public $variableRatesLastUpdated; + public $network; + public $purchaseRateType; + public $statementCopyFee; + public $rewardsHaveBlackoutDates; + public $creditRatingDisplay; + public $flightAccidentInsurance; + public $annualRewardMaximum; + public $balanceTransferTerms; + protected $__bonusRewardsType = 'Google_CcOfferBonusRewards'; + protected $__bonusRewardsDataType = 'array'; + public $bonusRewards; + public $imageUrl; + public $ageMinimumDetails; + public $disclaimer; + public function setLuggageInsurance($luggageInsurance) { + $this->luggageInsurance = $luggageInsurance; + } + public function getLuggageInsurance() { + return $this->luggageInsurance; + } + public function setCreditLimitMin($creditLimitMin) { + $this->creditLimitMin = $creditLimitMin; + } + public function getCreditLimitMin() { + return $this->creditLimitMin; + } + public function setCardName($cardName) { + $this->cardName = $cardName; + } + public function getCardName() { + return $this->cardName; + } + public function setCreditLimitMax($creditLimitMax) { + $this->creditLimitMax = $creditLimitMax; + } + public function getCreditLimitMax() { + return $this->creditLimitMax; + } + public function setGracePeriodDisplay($gracePeriodDisplay) { + $this->gracePeriodDisplay = $gracePeriodDisplay; + } + public function getGracePeriodDisplay() { + return $this->gracePeriodDisplay; + } + public function setOfferId($offerId) { + $this->offerId = $offerId; + } + public function getOfferId() { + return $this->offerId; + } + public function setRewardUnit($rewardUnit) { + $this->rewardUnit = $rewardUnit; + } + public function getRewardUnit() { + return $this->rewardUnit; + } + public function setMinPurchaseRate($minPurchaseRate) { + $this->minPurchaseRate = $minPurchaseRate; + } + public function getMinPurchaseRate() { + return $this->minPurchaseRate; + } + public function setCardBenefits($cardBenefits) { + $this->cardBenefits = $cardBenefits; + } + public function getCardBenefits() { + return $this->cardBenefits; + } + public function setRewards($rewards) { + $this->assertIsArray($rewards, 'Google_CcOfferRewards', __METHOD__); + $this->rewards = $rewards; + } + public function getRewards() { + return $this->rewards; + } + public function setOffersImmediateCashReward($offersImmediateCashReward) { + $this->offersImmediateCashReward = $offersImmediateCashReward; + } + public function getOffersImmediateCashReward() { + return $this->offersImmediateCashReward; + } + public function setTravelInsurance($travelInsurance) { + $this->travelInsurance = $travelInsurance; + } + public function getTravelInsurance() { + return $this->travelInsurance; + } + public function setReturnedPaymentFee($returnedPaymentFee) { + $this->returnedPaymentFee = $returnedPaymentFee; + } + public function getReturnedPaymentFee() { + return $this->returnedPaymentFee; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setIssuer($issuer) { + $this->issuer = $issuer; + } + public function getIssuer() { + return $this->issuer; + } + public function setMaxPurchaseRate($maxPurchaseRate) { + $this->maxPurchaseRate = $maxPurchaseRate; + } + public function getMaxPurchaseRate() { + return $this->maxPurchaseRate; + } + public function setMinimumFinanceCharge($minimumFinanceCharge) { + $this->minimumFinanceCharge = $minimumFinanceCharge; + } + public function getMinimumFinanceCharge() { + return $this->minimumFinanceCharge; + } + public function setExistingCustomerOnly($existingCustomerOnly) { + $this->existingCustomerOnly = $existingCustomerOnly; + } + public function getExistingCustomerOnly() { + return $this->existingCustomerOnly; + } + public function setAnnualFeeDisplay($annualFeeDisplay) { + $this->annualFeeDisplay = $annualFeeDisplay; + } + public function getAnnualFeeDisplay() { + return $this->annualFeeDisplay; + } + public function setInitialSetupAndProcessingFee($initialSetupAndProcessingFee) { + $this->initialSetupAndProcessingFee = $initialSetupAndProcessingFee; + } + public function getInitialSetupAndProcessingFee() { + return $this->initialSetupAndProcessingFee; + } + public function setIssuerId($issuerId) { + $this->issuerId = $issuerId; + } + public function getIssuerId() { + return $this->issuerId; + } + public function setPurchaseRateAdditionalDetails($purchaseRateAdditionalDetails) { + $this->purchaseRateAdditionalDetails = $purchaseRateAdditionalDetails; + } + public function getPurchaseRateAdditionalDetails() { + return $this->purchaseRateAdditionalDetails; + } + public function setProhibitedCategories($prohibitedCategories) { + $this->prohibitedCategories = $prohibitedCategories; + } + public function getProhibitedCategories() { + return $this->prohibitedCategories; + } + public function setFraudLiability($fraudLiability) { + $this->fraudLiability = $fraudLiability; + } + public function getFraudLiability() { + return $this->fraudLiability; + } + public function setCashAdvanceTerms($cashAdvanceTerms) { + $this->cashAdvanceTerms = $cashAdvanceTerms; + } + public function getCashAdvanceTerms() { + return $this->cashAdvanceTerms; + } + public function setLandingPageUrl($landingPageUrl) { + $this->landingPageUrl = $landingPageUrl; + } + public function getLandingPageUrl() { + return $this->landingPageUrl; + } + public function setIntroCashAdvanceTerms($introCashAdvanceTerms) { + $this->introCashAdvanceTerms = $introCashAdvanceTerms; + } + public function getIntroCashAdvanceTerms() { + return $this->introCashAdvanceTerms; + } + public function setRewardsExpire($rewardsExpire) { + $this->rewardsExpire = $rewardsExpire; + } + public function getRewardsExpire() { + return $this->rewardsExpire; + } + public function setIntroPurchaseTerms($introPurchaseTerms) { + $this->introPurchaseTerms = $introPurchaseTerms; + } + public function getIntroPurchaseTerms() { + return $this->introPurchaseTerms; + } + public function setDefaultFees($defaultFees) { + $this->assertIsArray($defaultFees, 'Google_CcOfferDefaultFees', __METHOD__); + $this->defaultFees = $defaultFees; + } + public function getDefaultFees() { + return $this->defaultFees; + } + public function setExtendedWarranty($extendedWarranty) { + $this->extendedWarranty = $extendedWarranty; + } + public function getExtendedWarranty() { + return $this->extendedWarranty; + } + public function setEmergencyInsurance($emergencyInsurance) { + $this->emergencyInsurance = $emergencyInsurance; + } + public function getEmergencyInsurance() { + return $this->emergencyInsurance; + } + public function setFirstYearAnnualFee($firstYearAnnualFee) { + $this->firstYearAnnualFee = $firstYearAnnualFee; + } + public function getFirstYearAnnualFee() { + return $this->firstYearAnnualFee; + } + public function setTrackingUrl($trackingUrl) { + $this->trackingUrl = $trackingUrl; + } + public function getTrackingUrl() { + return $this->trackingUrl; + } + public function setLatePaymentFee($latePaymentFee) { + $this->latePaymentFee = $latePaymentFee; + } + public function getLatePaymentFee() { + return $this->latePaymentFee; + } + public function setOverLimitFee($overLimitFee) { + $this->overLimitFee = $overLimitFee; + } + public function getOverLimitFee() { + return $this->overLimitFee; + } + public function setCardType($cardType) { + $this->cardType = $cardType; + } + public function getCardType() { + return $this->cardType; + } + public function setApprovedCategories($approvedCategories) { + $this->approvedCategories = $approvedCategories; + } + public function getApprovedCategories() { + return $this->approvedCategories; + } + public function setRewardPartner($rewardPartner) { + $this->rewardPartner = $rewardPartner; + } + public function getRewardPartner() { + return $this->rewardPartner; + } + public function setIntroBalanceTransferTerms($introBalanceTransferTerms) { + $this->introBalanceTransferTerms = $introBalanceTransferTerms; + } + public function getIntroBalanceTransferTerms() { + return $this->introBalanceTransferTerms; + } + public function setForeignCurrencyTransactionFee($foreignCurrencyTransactionFee) { + $this->foreignCurrencyTransactionFee = $foreignCurrencyTransactionFee; + } + public function getForeignCurrencyTransactionFee() { + return $this->foreignCurrencyTransactionFee; + } + public function setAnnualFee($annualFee) { + $this->annualFee = $annualFee; + } + public function getAnnualFee() { + return $this->annualFee; + } + public function setIssuerWebsite($issuerWebsite) { + $this->issuerWebsite = $issuerWebsite; + } + public function getIssuerWebsite() { + return $this->issuerWebsite; + } + public function setVariableRatesUpdateFrequency($variableRatesUpdateFrequency) { + $this->variableRatesUpdateFrequency = $variableRatesUpdateFrequency; + } + public function getVariableRatesUpdateFrequency() { + return $this->variableRatesUpdateFrequency; + } + public function setCarRentalInsurance($carRentalInsurance) { + $this->carRentalInsurance = $carRentalInsurance; + } + public function getCarRentalInsurance() { + return $this->carRentalInsurance; + } + public function setAdditionalCardBenefits($additionalCardBenefits) { + $this->additionalCardBenefits = $additionalCardBenefits; + } + public function getAdditionalCardBenefits() { + return $this->additionalCardBenefits; + } + public function setAgeMinimum($ageMinimum) { + $this->ageMinimum = $ageMinimum; + } + public function getAgeMinimum() { + return $this->ageMinimum; + } + public function setBalanceComputationMethod($balanceComputationMethod) { + $this->balanceComputationMethod = $balanceComputationMethod; + } + public function getBalanceComputationMethod() { + return $this->balanceComputationMethod; + } + public function setAprDisplay($aprDisplay) { + $this->aprDisplay = $aprDisplay; + } + public function getAprDisplay() { + return $this->aprDisplay; + } + public function setAdditionalCardHolderFee($additionalCardHolderFee) { + $this->additionalCardHolderFee = $additionalCardHolderFee; + } + public function getAdditionalCardHolderFee() { + return $this->additionalCardHolderFee; + } + public function setVariableRatesLastUpdated($variableRatesLastUpdated) { + $this->variableRatesLastUpdated = $variableRatesLastUpdated; + } + public function getVariableRatesLastUpdated() { + return $this->variableRatesLastUpdated; + } + public function setNetwork($network) { + $this->network = $network; + } + public function getNetwork() { + return $this->network; + } + public function setPurchaseRateType($purchaseRateType) { + $this->purchaseRateType = $purchaseRateType; + } + public function getPurchaseRateType() { + return $this->purchaseRateType; + } + public function setStatementCopyFee($statementCopyFee) { + $this->statementCopyFee = $statementCopyFee; + } + public function getStatementCopyFee() { + return $this->statementCopyFee; + } + public function setRewardsHaveBlackoutDates($rewardsHaveBlackoutDates) { + $this->rewardsHaveBlackoutDates = $rewardsHaveBlackoutDates; + } + public function getRewardsHaveBlackoutDates() { + return $this->rewardsHaveBlackoutDates; + } + public function setCreditRatingDisplay($creditRatingDisplay) { + $this->creditRatingDisplay = $creditRatingDisplay; + } + public function getCreditRatingDisplay() { + return $this->creditRatingDisplay; + } + public function setFlightAccidentInsurance($flightAccidentInsurance) { + $this->flightAccidentInsurance = $flightAccidentInsurance; + } + public function getFlightAccidentInsurance() { + return $this->flightAccidentInsurance; + } + public function setAnnualRewardMaximum($annualRewardMaximum) { + $this->annualRewardMaximum = $annualRewardMaximum; + } + public function getAnnualRewardMaximum() { + return $this->annualRewardMaximum; + } + public function setBalanceTransferTerms($balanceTransferTerms) { + $this->balanceTransferTerms = $balanceTransferTerms; + } + public function getBalanceTransferTerms() { + return $this->balanceTransferTerms; + } + public function setBonusRewards($bonusRewards) { + $this->assertIsArray($bonusRewards, 'Google_CcOfferBonusRewards', __METHOD__); + $this->bonusRewards = $bonusRewards; + } + public function getBonusRewards() { + return $this->bonusRewards; + } + public function setImageUrl($imageUrl) { + $this->imageUrl = $imageUrl; + } + public function getImageUrl() { + return $this->imageUrl; + } + public function setAgeMinimumDetails($ageMinimumDetails) { + $this->ageMinimumDetails = $ageMinimumDetails; + } + public function getAgeMinimumDetails() { + return $this->ageMinimumDetails; + } + public function setDisclaimer($disclaimer) { + $this->disclaimer = $disclaimer; + } + public function getDisclaimer() { + return $this->disclaimer; + } +} + +class Google_CcOfferBonusRewards extends Google_Model { + public $amount; + public $details; + public function setAmount($amount) { + $this->amount = $amount; + } + public function getAmount() { + return $this->amount; + } + public function setDetails($details) { + $this->details = $details; + } + public function getDetails() { + return $this->details; + } +} + +class Google_CcOfferDefaultFees extends Google_Model { + public $category; + public $maxRate; + public $minRate; + public $rateType; + public function setCategory($category) { + $this->category = $category; + } + public function getCategory() { + return $this->category; + } + public function setMaxRate($maxRate) { + $this->maxRate = $maxRate; + } + public function getMaxRate() { + return $this->maxRate; + } + public function setMinRate($minRate) { + $this->minRate = $minRate; + } + public function getMinRate() { + return $this->minRate; + } + public function setRateType($rateType) { + $this->rateType = $rateType; + } + public function getRateType() { + return $this->rateType; + } +} + +class Google_CcOfferRewards extends Google_Model { + public $category; + public $minRewardTier; + public $maxRewardTier; + public $expirationMonths; + public $amount; + public $additionalDetails; + public function setCategory($category) { + $this->category = $category; + } + public function getCategory() { + return $this->category; + } + public function setMinRewardTier($minRewardTier) { + $this->minRewardTier = $minRewardTier; + } + public function getMinRewardTier() { + return $this->minRewardTier; + } + public function setMaxRewardTier($maxRewardTier) { + $this->maxRewardTier = $maxRewardTier; + } + public function getMaxRewardTier() { + return $this->maxRewardTier; + } + public function setExpirationMonths($expirationMonths) { + $this->expirationMonths = $expirationMonths; + } + public function getExpirationMonths() { + return $this->expirationMonths; + } + public function setAmount($amount) { + $this->amount = $amount; + } + public function getAmount() { + return $this->amount; + } + public function setAdditionalDetails($additionalDetails) { + $this->additionalDetails = $additionalDetails; + } + public function getAdditionalDetails() { + return $this->additionalDetails; + } +} + +class Google_CcOffers extends Google_Model { + protected $__itemsType = 'Google_CcOffer'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems($items) { + $this->assertIsArray($items, 'Google_CcOffer', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Event extends Google_Model { + protected $__networkFeeType = 'Google_Money'; + protected $__networkFeeDataType = ''; + public $networkFee; + public $advertiserName; + public $kind; + public $modifyDate; + public $type; + public $orderId; + public $publisherName; + public $memberId; + public $advertiserId; + public $status; + public $chargeId; + protected $__productsType = 'Google_EventProducts'; + protected $__productsDataType = 'array'; + public $products; + protected $__earningsType = 'Google_Money'; + protected $__earningsDataType = ''; + public $earnings; + public $chargeType; + protected $__publisherFeeType = 'Google_Money'; + protected $__publisherFeeDataType = ''; + public $publisherFee; + protected $__commissionableSalesType = 'Google_Money'; + protected $__commissionableSalesDataType = ''; + public $commissionableSales; + public $publisherId; + public $eventDate; + public function setNetworkFee(Google_Money $networkFee) { + $this->networkFee = $networkFee; + } + public function getNetworkFee() { + return $this->networkFee; + } + public function setAdvertiserName($advertiserName) { + $this->advertiserName = $advertiserName; + } + public function getAdvertiserName() { + return $this->advertiserName; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setModifyDate($modifyDate) { + $this->modifyDate = $modifyDate; + } + public function getModifyDate() { + return $this->modifyDate; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setOrderId($orderId) { + $this->orderId = $orderId; + } + public function getOrderId() { + return $this->orderId; + } + public function setPublisherName($publisherName) { + $this->publisherName = $publisherName; + } + public function getPublisherName() { + return $this->publisherName; + } + public function setMemberId($memberId) { + $this->memberId = $memberId; + } + public function getMemberId() { + return $this->memberId; + } + public function setAdvertiserId($advertiserId) { + $this->advertiserId = $advertiserId; + } + public function getAdvertiserId() { + return $this->advertiserId; + } + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setChargeId($chargeId) { + $this->chargeId = $chargeId; + } + public function getChargeId() { + return $this->chargeId; + } + public function setProducts($products) { + $this->assertIsArray($products, 'Google_EventProducts', __METHOD__); + $this->products = $products; + } + public function getProducts() { + return $this->products; + } + public function setEarnings(Google_Money $earnings) { + $this->earnings = $earnings; + } + public function getEarnings() { + return $this->earnings; + } + public function setChargeType($chargeType) { + $this->chargeType = $chargeType; + } + public function getChargeType() { + return $this->chargeType; + } + public function setPublisherFee(Google_Money $publisherFee) { + $this->publisherFee = $publisherFee; + } + public function getPublisherFee() { + return $this->publisherFee; + } + public function setCommissionableSales(Google_Money $commissionableSales) { + $this->commissionableSales = $commissionableSales; + } + public function getCommissionableSales() { + return $this->commissionableSales; + } + public function setPublisherId($publisherId) { + $this->publisherId = $publisherId; + } + public function getPublisherId() { + return $this->publisherId; + } + public function setEventDate($eventDate) { + $this->eventDate = $eventDate; + } + public function getEventDate() { + return $this->eventDate; + } +} + +class Google_EventProducts extends Google_Model { + protected $__networkFeeType = 'Google_Money'; + protected $__networkFeeDataType = ''; + public $networkFee; + public $sku; + public $categoryName; + public $skuName; + protected $__publisherFeeType = 'Google_Money'; + protected $__publisherFeeDataType = ''; + public $publisherFee; + protected $__earningsType = 'Google_Money'; + protected $__earningsDataType = ''; + public $earnings; + protected $__unitPriceType = 'Google_Money'; + protected $__unitPriceDataType = ''; + public $unitPrice; + public $categoryId; + public $quantity; + public function setNetworkFee(Google_Money $networkFee) { + $this->networkFee = $networkFee; + } + public function getNetworkFee() { + return $this->networkFee; + } + public function setSku($sku) { + $this->sku = $sku; + } + public function getSku() { + return $this->sku; + } + public function setCategoryName($categoryName) { + $this->categoryName = $categoryName; + } + public function getCategoryName() { + return $this->categoryName; + } + public function setSkuName($skuName) { + $this->skuName = $skuName; + } + public function getSkuName() { + return $this->skuName; + } + public function setPublisherFee(Google_Money $publisherFee) { + $this->publisherFee = $publisherFee; + } + public function getPublisherFee() { + return $this->publisherFee; + } + public function setEarnings(Google_Money $earnings) { + $this->earnings = $earnings; + } + public function getEarnings() { + return $this->earnings; + } + public function setUnitPrice(Google_Money $unitPrice) { + $this->unitPrice = $unitPrice; + } + public function getUnitPrice() { + return $this->unitPrice; + } + public function setCategoryId($categoryId) { + $this->categoryId = $categoryId; + } + public function getCategoryId() { + return $this->categoryId; + } + public function setQuantity($quantity) { + $this->quantity = $quantity; + } + public function getQuantity() { + return $this->quantity; + } +} + +class Google_Events extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Event'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Event', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Link extends Google_Model { + public $isActive; + public $linkType; + public $kind; + public $endDate; + public $description; + public $name; + public $startDate; + public $createDate; + public $imageAltText; + public $id; + public $advertiserId; + public $impressionTrackingUrl; + public $promotionType; + public $duration; + public $authorship; + public $availability; + public $clickTrackingUrl; + public $destinationUrl; + public function setIsActive($isActive) { + $this->isActive = $isActive; + } + public function getIsActive() { + return $this->isActive; + } + public function setLinkType($linkType) { + $this->linkType = $linkType; + } + public function getLinkType() { + return $this->linkType; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEndDate($endDate) { + $this->endDate = $endDate; + } + public function getEndDate() { + return $this->endDate; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setStartDate($startDate) { + $this->startDate = $startDate; + } + public function getStartDate() { + return $this->startDate; + } + public function setCreateDate($createDate) { + $this->createDate = $createDate; + } + public function getCreateDate() { + return $this->createDate; + } + public function setImageAltText($imageAltText) { + $this->imageAltText = $imageAltText; + } + public function getImageAltText() { + return $this->imageAltText; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAdvertiserId($advertiserId) { + $this->advertiserId = $advertiserId; + } + public function getAdvertiserId() { + return $this->advertiserId; + } + public function setImpressionTrackingUrl($impressionTrackingUrl) { + $this->impressionTrackingUrl = $impressionTrackingUrl; + } + public function getImpressionTrackingUrl() { + return $this->impressionTrackingUrl; + } + public function setPromotionType($promotionType) { + $this->promotionType = $promotionType; + } + public function getPromotionType() { + return $this->promotionType; + } + public function setDuration($duration) { + $this->duration = $duration; + } + public function getDuration() { + return $this->duration; + } + public function setAuthorship($authorship) { + $this->authorship = $authorship; + } + public function getAuthorship() { + return $this->authorship; + } + public function setAvailability($availability) { + $this->availability = $availability; + } + public function getAvailability() { + return $this->availability; + } + public function setClickTrackingUrl($clickTrackingUrl) { + $this->clickTrackingUrl = $clickTrackingUrl; + } + public function getClickTrackingUrl() { + return $this->clickTrackingUrl; + } + public function setDestinationUrl($destinationUrl) { + $this->destinationUrl = $destinationUrl; + } + public function getDestinationUrl() { + return $this->destinationUrl; + } +} + +class Google_Links extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Link'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Link', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Money extends Google_Model { + public $amount; + public $currencyCode; + public function setAmount($amount) { + $this->amount = $amount; + } + public function getAmount() { + return $this->amount; + } + public function setCurrencyCode($currencyCode) { + $this->currencyCode = $currencyCode; + } + public function getCurrencyCode() { + return $this->currencyCode; + } +} + +class Google_Publisher extends Google_Model { + public $status; + public $kind; + public $name; + public $classification; + protected $__epcSevenDayAverageType = 'Google_Money'; + protected $__epcSevenDayAverageDataType = ''; + public $epcSevenDayAverage; + public $payoutRank; + protected $__epcNinetyDayAverageType = 'Google_Money'; + protected $__epcNinetyDayAverageDataType = ''; + public $epcNinetyDayAverage; + protected $__itemType = 'Google_Publisher'; + protected $__itemDataType = ''; + public $item; + public $joinDate; + public $sites; + public $id; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setClassification($classification) { + $this->classification = $classification; + } + public function getClassification() { + return $this->classification; + } + public function setEpcSevenDayAverage(Google_Money $epcSevenDayAverage) { + $this->epcSevenDayAverage = $epcSevenDayAverage; + } + public function getEpcSevenDayAverage() { + return $this->epcSevenDayAverage; + } + public function setPayoutRank($payoutRank) { + $this->payoutRank = $payoutRank; + } + public function getPayoutRank() { + return $this->payoutRank; + } + public function setEpcNinetyDayAverage(Google_Money $epcNinetyDayAverage) { + $this->epcNinetyDayAverage = $epcNinetyDayAverage; + } + public function getEpcNinetyDayAverage() { + return $this->epcNinetyDayAverage; + } + public function setItem(Google_Publisher $item) { + $this->item = $item; + } + public function getItem() { + return $this->item; + } + public function setJoinDate($joinDate) { + $this->joinDate = $joinDate; + } + public function getJoinDate() { + return $this->joinDate; + } + public function setSites($sites) { + $this->sites = $sites; + } + public function getSites() { + return $this->sites; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_Publishers extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Publisher'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Publisher', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} diff --git a/modules/oauth/src/google/contrib/Google_LatitudeService.php b/modules/oauth/src/google/contrib/Google_LatitudeService.php new file mode 100644 index 0000000..21cd03c --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_LatitudeService.php @@ -0,0 +1,283 @@ + + * $latitudeService = new Google_LatitudeService(...); + * $currentLocation = $latitudeService->currentLocation; + * + */ + class Google_CurrentLocationServiceResource extends Google_ServiceResource { + + + /** + * Updates or creates the user's current location. (currentLocation.insert) + * + * @param Google_Location $postBody + * @param array $optParams Optional parameters. + * @return Google_Location + */ + public function insert(Google_Location $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Location($data); + } else { + return $data; + } + } + /** + * Returns the authenticated user's current location. (currentLocation.get) + * + * @param array $optParams Optional parameters. + * + * @opt_param string granularity Granularity of the requested location. + * @return Google_Location + */ + public function get($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Location($data); + } else { + return $data; + } + } + /** + * Deletes the authenticated user's current location. (currentLocation.delete) + * + * @param array $optParams Optional parameters. + */ + public function delete($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "location" collection of methods. + * Typical usage is: + * + * $latitudeService = new Google_LatitudeService(...); + * $location = $latitudeService->location; + * + */ + class Google_LocationServiceResource extends Google_ServiceResource { + + + /** + * Inserts or updates a location in the user's location history. (location.insert) + * + * @param Google_Location $postBody + * @param array $optParams Optional parameters. + * @return Google_Location + */ + public function insert(Google_Location $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Location($data); + } else { + return $data; + } + } + /** + * Reads a location from the user's location history. (location.get) + * + * @param string $locationId Timestamp of the location to read (ms since epoch). + * @param array $optParams Optional parameters. + * + * @opt_param string granularity Granularity of the location to return. + * @return Google_Location + */ + public function get($locationId, $optParams = array()) { + $params = array('locationId' => $locationId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Location($data); + } else { + return $data; + } + } + /** + * Lists the user's location history. (location.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of locations to return. + * @opt_param string max-time Maximum timestamp of locations to return (ms since epoch). + * @opt_param string min-time Minimum timestamp of locations to return (ms since epoch). + * @opt_param string granularity Granularity of the requested locations. + * @return Google_LocationFeed + */ + public function listLocation($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_LocationFeed($data); + } else { + return $data; + } + } + /** + * Deletes a location from the user's location history. (location.delete) + * + * @param string $locationId Timestamp of the location to delete (ms since epoch). + * @param array $optParams Optional parameters. + */ + public function delete($locationId, $optParams = array()) { + $params = array('locationId' => $locationId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Latitude (v1). + * + *

+ * Lets you read and update your current location and work with your location history + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_LatitudeService extends Google_Service { + public $currentLocation; + public $location; + /** + * Constructs the internal representation of the Latitude service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'latitude/v1/'; + $this->version = 'v1'; + $this->serviceName = 'latitude'; + + $client->addService($this->serviceName, $this->version); + $this->currentLocation = new Google_CurrentLocationServiceResource($this, $this->serviceName, 'currentLocation', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/latitude.all.best", "https://www.googleapis.com/auth/latitude.all.city", "https://www.googleapis.com/auth/latitude.current.best", "https://www.googleapis.com/auth/latitude.current.city"], "request": {"$ref": "LatitudeCurrentlocationResourceJson"}, "response": {"$ref": "LatitudeCurrentlocationResourceJson"}, "httpMethod": "POST", "path": "currentLocation", "id": "latitude.currentLocation.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/latitude.all.best", "https://www.googleapis.com/auth/latitude.all.city", "https://www.googleapis.com/auth/latitude.current.best", "https://www.googleapis.com/auth/latitude.current.city"], "parameters": {"granularity": {"default": "city", "enum": ["best", "city"], "type": "string", "location": "query"}}, "response": {"$ref": "LatitudeCurrentlocationResourceJson"}, "httpMethod": "GET", "path": "currentLocation", "id": "latitude.currentLocation.get"}, "delete": {"path": "currentLocation", "scopes": ["https://www.googleapis.com/auth/latitude.all.best", "https://www.googleapis.com/auth/latitude.all.city", "https://www.googleapis.com/auth/latitude.current.best", "https://www.googleapis.com/auth/latitude.current.city"], "id": "latitude.currentLocation.delete", "httpMethod": "DELETE"}}}', true)); + $this->location = new Google_LocationServiceResource($this, $this->serviceName, 'location', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/latitude.all.best", "https://www.googleapis.com/auth/latitude.all.city"], "request": {"$ref": "Location"}, "response": {"$ref": "Location"}, "httpMethod": "POST", "path": "location", "id": "latitude.location.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/latitude.all.best", "https://www.googleapis.com/auth/latitude.all.city"], "parameters": {"locationId": {"required": true, "type": "string", "location": "path"}, "granularity": {"default": "city", "enum": ["best", "city"], "type": "string", "location": "query"}}, "id": "latitude.location.get", "httpMethod": "GET", "path": "location/{locationId}", "response": {"$ref": "Location"}}, "list": {"scopes": ["https://www.googleapis.com/auth/latitude.all.best", "https://www.googleapis.com/auth/latitude.all.city"], "parameters": {"max-results": {"type": "string", "location": "query"}, "max-time": {"type": "string", "location": "query"}, "min-time": {"type": "string", "location": "query"}, "granularity": {"default": "city", "enum": ["best", "city"], "type": "string", "location": "query"}}, "response": {"$ref": "LocationFeed"}, "httpMethod": "GET", "path": "location", "id": "latitude.location.list"}, "delete": {"scopes": ["https://www.googleapis.com/auth/latitude.all.best", "https://www.googleapis.com/auth/latitude.all.city"], "path": "location/{locationId}", "id": "latitude.location.delete", "parameters": {"locationId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_Location extends Google_Model { + public $kind; + public $altitude; + public $longitude; + public $activityId; + public $latitude; + public $altitudeAccuracy; + public $timestampMs; + public $speed; + public $heading; + public $accuracy; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAltitude($altitude) { + $this->altitude = $altitude; + } + public function getAltitude() { + return $this->altitude; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } + public function setActivityId($activityId) { + $this->activityId = $activityId; + } + public function getActivityId() { + return $this->activityId; + } + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setAltitudeAccuracy($altitudeAccuracy) { + $this->altitudeAccuracy = $altitudeAccuracy; + } + public function getAltitudeAccuracy() { + return $this->altitudeAccuracy; + } + public function setTimestampMs($timestampMs) { + $this->timestampMs = $timestampMs; + } + public function getTimestampMs() { + return $this->timestampMs; + } + public function setSpeed($speed) { + $this->speed = $speed; + } + public function getSpeed() { + return $this->speed; + } + public function setHeading($heading) { + $this->heading = $heading; + } + public function getHeading() { + return $this->heading; + } + public function setAccuracy($accuracy) { + $this->accuracy = $accuracy; + } + public function getAccuracy() { + return $this->accuracy; + } +} + +class Google_LocationFeed extends Google_Model { + protected $__itemsType = 'Google_Location'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Location) */ $items) { + $this->assertIsArray($items, 'Google_Location', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} diff --git a/modules/oauth/src/google/contrib/Google_LicensingService.php b/modules/oauth/src/google/contrib/Google_LicensingService.php new file mode 100644 index 0000000..768d1de --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_LicensingService.php @@ -0,0 +1,285 @@ + + * $licensingService = new Google_LicensingService(...); + * $licenseAssignments = $licensingService->licenseAssignments; + * + */ + class Google_LicenseAssignmentsServiceResource extends Google_ServiceResource { + + + /** + * Assign License. (licenseAssignments.insert) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param Google_LicenseAssignmentInsert $postBody + * @param array $optParams Optional parameters. + * @return Google_LicenseAssignment + */ + public function insert($productId, $skuId, Google_LicenseAssignmentInsert $postBody, $optParams = array()) { + $params = array('productId' => $productId, 'skuId' => $skuId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_LicenseAssignment($data); + } else { + return $data; + } + } + /** + * Get license assignment of a particular product and sku for a user (licenseAssignments.get) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param string $userId email id or unique Id of the user + * @param array $optParams Optional parameters. + * @return Google_LicenseAssignment + */ + public function get($productId, $skuId, $userId, $optParams = array()) { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_LicenseAssignment($data); + } else { + return $data; + } + } + /** + * List license assignments for given product and sku of the customer. + * (licenseAssignments.listForProductAndSku) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param string $customerId CustomerId represents the customer for whom licenseassignments are queried + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token to fetch the next page.Optional. By default server will return first page + * @opt_param string maxResults Maximum number of campaigns to return at one time. Must be positive. Optional. Default value is 100. + * @return Google_LicenseAssignmentList + */ + public function listForProductAndSku($productId, $skuId, $customerId, $optParams = array()) { + $params = array('productId' => $productId, 'skuId' => $skuId, 'customerId' => $customerId); + $params = array_merge($params, $optParams); + $data = $this->__call('listForProductAndSku', array($params)); + if ($this->useObjects()) { + return new Google_LicenseAssignmentList($data); + } else { + return $data; + } + } + /** + * List license assignments for given product of the customer. (licenseAssignments.listForProduct) + * + * @param string $productId Name for product + * @param string $customerId CustomerId represents the customer for whom licenseassignments are queried + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token to fetch the next page.Optional. By default server will return first page + * @opt_param string maxResults Maximum number of campaigns to return at one time. Must be positive. Optional. Default value is 100. + * @return Google_LicenseAssignmentList + */ + public function listForProduct($productId, $customerId, $optParams = array()) { + $params = array('productId' => $productId, 'customerId' => $customerId); + $params = array_merge($params, $optParams); + $data = $this->__call('listForProduct', array($params)); + if ($this->useObjects()) { + return new Google_LicenseAssignmentList($data); + } else { + return $data; + } + } + /** + * Assign License. (licenseAssignments.update) + * + * @param string $productId Name for product + * @param string $skuId Name for sku for which license would be revoked + * @param string $userId email id or unique Id of the user + * @param Google_LicenseAssignment $postBody + * @param array $optParams Optional parameters. + * @return Google_LicenseAssignment + */ + public function update($productId, $skuId, $userId, Google_LicenseAssignment $postBody, $optParams = array()) { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_LicenseAssignment($data); + } else { + return $data; + } + } + /** + * Assign License. This method supports patch semantics. (licenseAssignments.patch) + * + * @param string $productId Name for product + * @param string $skuId Name for sku for which license would be revoked + * @param string $userId email id or unique Id of the user + * @param Google_LicenseAssignment $postBody + * @param array $optParams Optional parameters. + * @return Google_LicenseAssignment + */ + public function patch($productId, $skuId, $userId, Google_LicenseAssignment $postBody, $optParams = array()) { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_LicenseAssignment($data); + } else { + return $data; + } + } + /** + * Revoke License. (licenseAssignments.delete) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param string $userId email id or unique Id of the user + * @param array $optParams Optional parameters. + */ + public function delete($productId, $skuId, $userId, $optParams = array()) { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Licensing (v1). + * + *

+ * Licensing API to view and manage license for your domain. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_LicensingService extends Google_Service { + public $licenseAssignments; + /** + * Constructs the internal representation of the Licensing service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'apps/licensing/v1/product/'; + $this->version = 'v1'; + $this->serviceName = 'licensing'; + + $client->addService($this->serviceName, $this->version); + $this->licenseAssignments = new Google_LicenseAssignmentsServiceResource($this, $this->serviceName, 'licenseAssignments', json_decode('{"methods": {"insert": {"parameters": {"skuId": {"required": true, "type": "string", "location": "path"}, "productId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "LicenseAssignmentInsert"}, "id": "licensing.licenseAssignments.insert", "httpMethod": "POST", "path": "{productId}/sku/{skuId}/user", "response": {"$ref": "LicenseAssignment"}}, "get": {"httpMethod": "GET", "response": {"$ref": "LicenseAssignment"}, "id": "licensing.licenseAssignments.get", "parameters": {"skuId": {"required": true, "type": "string", "location": "path"}, "userId": {"required": true, "type": "string", "location": "path"}, "productId": {"required": true, "type": "string", "location": "path"}}, "path": "{productId}/sku/{skuId}/user/{userId}"}, "listForProductAndSku": {"httpMethod": "GET", "response": {"$ref": "LicenseAssignmentList"}, "id": "licensing.licenseAssignments.listForProductAndSku", "parameters": {"pageToken": {"default": "", "type": "string", "location": "query"}, "skuId": {"required": true, "type": "string", "location": "path"}, "customerId": {"required": true, "type": "string", "location": "query"}, "maxResults": {"format": "uint32", "default": "100", "maximum": "1000", "minimum": "1", "location": "query", "type": "integer"}, "productId": {"required": true, "type": "string", "location": "path"}}, "path": "{productId}/sku/{skuId}/users"}, "listForProduct": {"httpMethod": "GET", "response": {"$ref": "LicenseAssignmentList"}, "id": "licensing.licenseAssignments.listForProduct", "parameters": {"pageToken": {"default": "", "type": "string", "location": "query"}, "customerId": {"required": true, "type": "string", "location": "query"}, "maxResults": {"format": "uint32", "default": "100", "maximum": "1000", "minimum": "1", "location": "query", "type": "integer"}, "productId": {"required": true, "type": "string", "location": "path"}}, "path": "{productId}/users"}, "update": {"parameters": {"skuId": {"required": true, "type": "string", "location": "path"}, "userId": {"required": true, "type": "string", "location": "path"}, "productId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "LicenseAssignment"}, "id": "licensing.licenseAssignments.update", "httpMethod": "PUT", "path": "{productId}/sku/{skuId}/user/{userId}", "response": {"$ref": "LicenseAssignment"}}, "patch": {"parameters": {"skuId": {"required": true, "type": "string", "location": "path"}, "userId": {"required": true, "type": "string", "location": "path"}, "productId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "LicenseAssignment"}, "id": "licensing.licenseAssignments.patch", "httpMethod": "PATCH", "path": "{productId}/sku/{skuId}/user/{userId}", "response": {"$ref": "LicenseAssignment"}}, "delete": {"httpMethod": "DELETE", "id": "licensing.licenseAssignments.delete", "parameters": {"skuId": {"required": true, "type": "string", "location": "path"}, "userId": {"required": true, "type": "string", "location": "path"}, "productId": {"required": true, "type": "string", "location": "path"}}, "path": "{productId}/sku/{skuId}/user/{userId}"}}}', true)); + + } +} + +class Google_LicenseAssignment extends Google_Model { + public $skuId; + public $kind; + public $userId; + public $etags; + public $selfLink; + public $productId; + public function setSkuId($skuId) { + $this->skuId = $skuId; + } + public function getSkuId() { + return $this->skuId; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUserId($userId) { + $this->userId = $userId; + } + public function getUserId() { + return $this->userId; + } + public function setEtags($etags) { + $this->etags = $etags; + } + public function getEtags() { + return $this->etags; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setProductId($productId) { + $this->productId = $productId; + } + public function getProductId() { + return $this->productId; + } +} + +class Google_LicenseAssignmentInsert extends Google_Model { + public $userId; + public function setUserId($userId) { + $this->userId = $userId; + } + public function getUserId() { + return $this->userId; + } +} + +class Google_LicenseAssignmentList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_LicenseAssignment'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_LicenseAssignment) */ $items) { + $this->assertIsArray($items, 'Google_LicenseAssignment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} diff --git a/modules/oauth/src/google/contrib/Google_ModeratorService.php b/modules/oauth/src/google/contrib/Google_ModeratorService.php new file mode 100644 index 0000000..b5a0be6 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_ModeratorService.php @@ -0,0 +1,1888 @@ + + * $moderatorService = new Google_ModeratorService(...); + * $votes = $moderatorService->votes; + * + */ + class Google_VotesServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new vote by the authenticated user for the specified submission within the specified + * series. (votes.insert) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param Google_Vote $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string unauthToken User identifier for unauthenticated usage mode + * @return Google_Vote + */ + public function insert($seriesId, $submissionId, Google_Vote $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Vote($data); + } else { + return $data; + } + } + /** + * Updates the votes by the authenticated user for the specified submission within the specified + * series. This method supports patch semantics. (votes.patch) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param Google_Vote $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string userId + * @opt_param string unauthToken User identifier for unauthenticated usage mode + * @return Google_Vote + */ + public function patch($seriesId, $submissionId, Google_Vote $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Vote($data); + } else { + return $data; + } + } + /** + * Lists the votes by the authenticated user for the given series. (votes.list) + * + * @param string $seriesId The decimal ID of the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of results to return. + * @opt_param string start-index Index of the first result to be retrieved. + * @return Google_VoteList + */ + public function listVotes($seriesId, $optParams = array()) { + $params = array('seriesId' => $seriesId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_VoteList($data); + } else { + return $data; + } + } + /** + * Updates the votes by the authenticated user for the specified submission within the specified + * series. (votes.update) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param Google_Vote $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string userId + * @opt_param string unauthToken User identifier for unauthenticated usage mode + * @return Google_Vote + */ + public function update($seriesId, $submissionId, Google_Vote $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Vote($data); + } else { + return $data; + } + } + /** + * Returns the votes by the authenticated user for the specified submission within the specified + * series. (votes.get) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string userId + * @opt_param string unauthToken User identifier for unauthenticated usage mode + * @return Google_Vote + */ + public function get($seriesId, $submissionId, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Vote($data); + } else { + return $data; + } + } + } + + /** + * The "responses" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $responses = $moderatorService->responses; + * + */ + class Google_ResponsesServiceResource extends Google_ServiceResource { + + + /** + * Inserts a response for the specified submission in the specified topic within the specified + * series. (responses.insert) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $topicId The decimal ID of the Topic within the Series. + * @param string $parentSubmissionId The decimal ID of the parent Submission within the Series. + * @param Google_Submission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string unauthToken User identifier for unauthenticated usage mode + * @opt_param bool anonymous Set to true to mark the new submission as anonymous. + * @return Google_Submission + */ + public function insert($seriesId, $topicId, $parentSubmissionId, Google_Submission $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'topicId' => $topicId, 'parentSubmissionId' => $parentSubmissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Submission($data); + } else { + return $data; + } + } + /** + * Lists or searches the responses for the specified submission within the specified series and + * returns the search results. (responses.list) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of results to return. + * @opt_param string sort Sort order. + * @opt_param string author Restricts the results to submissions by a specific author. + * @opt_param string start-index Index of the first result to be retrieved. + * @opt_param string q Search query. + * @opt_param bool hasAttachedVideo Specifies whether to restrict to submissions that have videos attached. + * @return Google_SubmissionList + */ + public function listResponses($seriesId, $submissionId, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SubmissionList($data); + } else { + return $data; + } + } + } + + /** + * The "tags" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $tags = $moderatorService->tags; + * + */ + class Google_TagsServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new tag for the specified submission within the specified series. (tags.insert) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param Google_Tag $postBody + * @param array $optParams Optional parameters. + * @return Google_Tag + */ + public function insert($seriesId, $submissionId, Google_Tag $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Tag($data); + } else { + return $data; + } + } + /** + * Lists all tags for the specified submission within the specified series. (tags.list) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param array $optParams Optional parameters. + * @return Google_TagList + */ + public function listTags($seriesId, $submissionId, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TagList($data); + } else { + return $data; + } + } + /** + * Deletes the specified tag from the specified submission within the specified series. + * (tags.delete) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param string $tagId + * @param array $optParams Optional parameters. + */ + public function delete($seriesId, $submissionId, $tagId, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId, 'tagId' => $tagId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "series" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $series = $moderatorService->series; + * + */ + class Google_SeriesServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new series. (series.insert) + * + * @param Google_Series $postBody + * @param array $optParams Optional parameters. + * @return Google_Series + */ + public function insert(Google_Series $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Series($data); + } else { + return $data; + } + } + /** + * Updates the specified series. This method supports patch semantics. (series.patch) + * + * @param string $seriesId The decimal ID of the Series. + * @param Google_Series $postBody + * @param array $optParams Optional parameters. + * @return Google_Series + */ + public function patch($seriesId, Google_Series $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Series($data); + } else { + return $data; + } + } + /** + * Searches the series and returns the search results. (series.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of results to return. + * @opt_param string q Search query. + * @opt_param string start-index Index of the first result to be retrieved. + * @return Google_SeriesList + */ + public function listSeries($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SeriesList($data); + } else { + return $data; + } + } + /** + * Updates the specified series. (series.update) + * + * @param string $seriesId The decimal ID of the Series. + * @param Google_Series $postBody + * @param array $optParams Optional parameters. + * @return Google_Series + */ + public function update($seriesId, Google_Series $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Series($data); + } else { + return $data; + } + } + /** + * Returns the specified series. (series.get) + * + * @param string $seriesId The decimal ID of the Series. + * @param array $optParams Optional parameters. + * @return Google_Series + */ + public function get($seriesId, $optParams = array()) { + $params = array('seriesId' => $seriesId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Series($data); + } else { + return $data; + } + } + } + + /** + * The "submissions" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $submissions = $moderatorService->submissions; + * + */ + class Google_SeriesSubmissionsServiceResource extends Google_ServiceResource { + + + /** + * Searches the submissions for the specified series and returns the search results. + * (submissions.list) + * + * @param string $seriesId The decimal ID of the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string lang The language code for the language the client prefers resuls in. + * @opt_param string max-results Maximum number of results to return. + * @opt_param bool includeVotes Specifies whether to include the current user's vote + * @opt_param string start-index Index of the first result to be retrieved. + * @opt_param string author Restricts the results to submissions by a specific author. + * @opt_param string sort Sort order. + * @opt_param string q Search query. + * @opt_param bool hasAttachedVideo Specifies whether to restrict to submissions that have videos attached. + * @return Google_SubmissionList + */ + public function listSeriesSubmissions($seriesId, $optParams = array()) { + $params = array('seriesId' => $seriesId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SubmissionList($data); + } else { + return $data; + } + } + } + /** + * The "responses" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $responses = $moderatorService->responses; + * + */ + class Google_SeriesResponsesServiceResource extends Google_ServiceResource { + + + /** + * Searches the responses for the specified series and returns the search results. (responses.list) + * + * @param string $seriesId The decimal ID of the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of results to return. + * @opt_param string sort Sort order. + * @opt_param string author Restricts the results to submissions by a specific author. + * @opt_param string start-index Index of the first result to be retrieved. + * @opt_param string q Search query. + * @opt_param bool hasAttachedVideo Specifies whether to restrict to submissions that have videos attached. + * @return Google_SeriesList + */ + public function listSeriesResponses($seriesId, $optParams = array()) { + $params = array('seriesId' => $seriesId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SeriesList($data); + } else { + return $data; + } + } + } + + /** + * The "topics" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $topics = $moderatorService->topics; + * + */ + class Google_TopicsServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new topic into the specified series. (topics.insert) + * + * @param string $seriesId The decimal ID of the Series. + * @param Google_Topic $postBody + * @param array $optParams Optional parameters. + * @return Google_Topic + */ + public function insert($seriesId, Google_Topic $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Topic($data); + } else { + return $data; + } + } + /** + * Searches the topics within the specified series and returns the search results. (topics.list) + * + * @param string $seriesId The decimal ID of the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of results to return. + * @opt_param string q Search query. + * @opt_param string start-index Index of the first result to be retrieved. + * @opt_param string mode + * @return Google_TopicList + */ + public function listTopics($seriesId, $optParams = array()) { + $params = array('seriesId' => $seriesId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TopicList($data); + } else { + return $data; + } + } + /** + * Updates the specified topic within the specified series. (topics.update) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $topicId The decimal ID of the Topic within the Series. + * @param Google_Topic $postBody + * @param array $optParams Optional parameters. + * @return Google_Topic + */ + public function update($seriesId, $topicId, Google_Topic $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'topicId' => $topicId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Topic($data); + } else { + return $data; + } + } + /** + * Returns the specified topic from the specified series. (topics.get) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $topicId The decimal ID of the Topic within the Series. + * @param array $optParams Optional parameters. + * @return Google_Topic + */ + public function get($seriesId, $topicId, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Topic($data); + } else { + return $data; + } + } + } + + /** + * The "submissions" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $submissions = $moderatorService->submissions; + * + */ + class Google_TopicsSubmissionsServiceResource extends Google_ServiceResource { + + + /** + * Searches the submissions for the specified topic within the specified series and returns the + * search results. (submissions.list) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $topicId The decimal ID of the Topic within the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of results to return. + * @opt_param bool includeVotes Specifies whether to include the current user's vote + * @opt_param string start-index Index of the first result to be retrieved. + * @opt_param string author Restricts the results to submissions by a specific author. + * @opt_param string sort Sort order. + * @opt_param string q Search query. + * @opt_param bool hasAttachedVideo Specifies whether to restrict to submissions that have videos attached. + * @return Google_SubmissionList + */ + public function listTopicsSubmissions($seriesId, $topicId, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SubmissionList($data); + } else { + return $data; + } + } + } + + /** + * The "global" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $global = $moderatorService->global; + * + */ + class Google_ModeratorGlobalServiceResource extends Google_ServiceResource { + + + } + + /** + * The "series" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $series = $moderatorService->series; + * + */ + class Google_ModeratorGlobalSeriesServiceResource extends Google_ServiceResource { + + + /** + * Searches the public series and returns the search results. (series.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of results to return. + * @opt_param string q Search query. + * @opt_param string start-index Index of the first result to be retrieved. + * @return Google_SeriesList + */ + public function listModeratorGlobalSeries($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SeriesList($data); + } else { + return $data; + } + } + } + + /** + * The "profiles" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $profiles = $moderatorService->profiles; + * + */ + class Google_ProfilesServiceResource extends Google_ServiceResource { + + + /** + * Updates the profile information for the authenticated user. This method supports patch semantics. + * (profiles.patch) + * + * @param Google_Profile $postBody + * @param array $optParams Optional parameters. + * @return Google_Profile + */ + public function patch(Google_Profile $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Profile($data); + } else { + return $data; + } + } + /** + * Updates the profile information for the authenticated user. (profiles.update) + * + * @param Google_Profile $postBody + * @param array $optParams Optional parameters. + * @return Google_Profile + */ + public function update(Google_Profile $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Profile($data); + } else { + return $data; + } + } + /** + * Returns the profile information for the authenticated user. (profiles.get) + * + * @param array $optParams Optional parameters. + * @return Google_Profile + */ + public function get($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Profile($data); + } else { + return $data; + } + } + } + + /** + * The "featured" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $featured = $moderatorService->featured; + * + */ + class Google_FeaturedServiceResource extends Google_ServiceResource { + + + } + + /** + * The "series" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $series = $moderatorService->series; + * + */ + class Google_FeaturedSeriesServiceResource extends Google_ServiceResource { + + + /** + * Lists the featured series. (series.list) + * + * @param array $optParams Optional parameters. + * @return Google_SeriesList + */ + public function listFeaturedSeries($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SeriesList($data); + } else { + return $data; + } + } + } + + /** + * The "myrecent" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $myrecent = $moderatorService->myrecent; + * + */ + class Google_MyrecentServiceResource extends Google_ServiceResource { + + + } + + /** + * The "series" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $series = $moderatorService->series; + * + */ + class Google_MyrecentSeriesServiceResource extends Google_ServiceResource { + + + /** + * Lists the series the authenticated user has visited. (series.list) + * + * @param array $optParams Optional parameters. + * @return Google_SeriesList + */ + public function listMyrecentSeries($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SeriesList($data); + } else { + return $data; + } + } + } + + /** + * The "my" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $my = $moderatorService->my; + * + */ + class Google_MyServiceResource extends Google_ServiceResource { + + + } + + /** + * The "series" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $series = $moderatorService->series; + * + */ + class Google_MySeriesServiceResource extends Google_ServiceResource { + + + /** + * Lists all series created by the authenticated user. (series.list) + * + * @param array $optParams Optional parameters. + * @return Google_SeriesList + */ + public function listMySeries($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SeriesList($data); + } else { + return $data; + } + } + } + + /** + * The "submissions" collection of methods. + * Typical usage is: + * + * $moderatorService = new Google_ModeratorService(...); + * $submissions = $moderatorService->submissions; + * + */ + class Google_SubmissionsServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new submission in the specified topic within the specified series. (submissions.insert) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $topicId The decimal ID of the Topic within the Series. + * @param Google_Submission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string unauthToken User identifier for unauthenticated usage mode + * @opt_param bool anonymous Set to true to mark the new submission as anonymous. + * @return Google_Submission + */ + public function insert($seriesId, $topicId, Google_Submission $postBody, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'topicId' => $topicId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Submission($data); + } else { + return $data; + } + } + /** + * Returns the specified submission within the specified series. (submissions.get) + * + * @param string $seriesId The decimal ID of the Series. + * @param string $submissionId The decimal ID of the Submission within the Series. + * @param array $optParams Optional parameters. + * + * @opt_param string lang The language code for the language the client prefers resuls in. + * @opt_param bool includeVotes Specifies whether to include the current user's vote + * @return Google_Submission + */ + public function get($seriesId, $submissionId, $optParams = array()) { + $params = array('seriesId' => $seriesId, 'submissionId' => $submissionId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Submission($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Moderator (v1). + * + *

+ * Moderator API + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_ModeratorService extends Google_Service { + public $votes; + public $responses; + public $tags; + public $series; + public $series_submissions; + public $series_responses; + public $topics; + public $topics_submissions; + public $global_series; + public $profiles; + public $featured_series; + public $myrecent_series; + public $my_series; + public $submissions; + /** + * Constructs the internal representation of the Moderator service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'moderator/v1/'; + $this->version = 'v1'; + $this->serviceName = 'moderator'; + + $client->addService($this->serviceName, $this->version); + $this->votes = new Google_VotesServiceResource($this, $this->serviceName, 'votes', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "unauthToken": {"type": "string", "location": "query"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Vote"}, "response": {"$ref": "Vote"}, "httpMethod": "POST", "path": "series/{seriesId}/submissions/{submissionId}/votes/@me", "id": "moderator.votes.insert"}, "patch": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "userId": {"type": "string", "location": "query"}, "unauthToken": {"type": "string", "location": "query"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Vote"}, "response": {"$ref": "Vote"}, "httpMethod": "PATCH", "path": "series/{seriesId}/submissions/{submissionId}/votes/@me", "id": "moderator.votes.patch"}, "list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "uint32"}, "seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}}, "id": "moderator.votes.list", "httpMethod": "GET", "path": "series/{seriesId}/votes/@me", "response": {"$ref": "VoteList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "userId": {"type": "string", "location": "query"}, "unauthToken": {"type": "string", "location": "query"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Vote"}, "response": {"$ref": "Vote"}, "httpMethod": "PUT", "path": "series/{seriesId}/submissions/{submissionId}/votes/@me", "id": "moderator.votes.update"}, "get": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "userId": {"type": "string", "location": "query"}, "unauthToken": {"type": "string", "location": "query"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "id": "moderator.votes.get", "httpMethod": "GET", "path": "series/{seriesId}/submissions/{submissionId}/votes/@me", "response": {"$ref": "Vote"}}}}', true)); + $this->responses = new Google_ResponsesServiceResource($this, $this->serviceName, 'responses', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "parentSubmissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "unauthToken": {"type": "string", "location": "query"}, "anonymous": {"type": "boolean", "location": "query"}, "topicId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Submission"}, "response": {"$ref": "Submission"}, "httpMethod": "POST", "path": "series/{seriesId}/topics/{topicId}/submissions/{parentSubmissionId}/responses", "id": "moderator.responses.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "uint32"}, "sort": {"type": "string", "location": "query"}, "seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "author": {"type": "string", "location": "query"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "q": {"type": "string", "location": "query"}, "hasAttachedVideo": {"type": "boolean", "location": "query"}}, "id": "moderator.responses.list", "httpMethod": "GET", "path": "series/{seriesId}/submissions/{submissionId}/responses", "response": {"$ref": "SubmissionList"}}}}', true)); + $this->tags = new Google_TagsServiceResource($this, $this->serviceName, 'tags', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Tag"}, "response": {"$ref": "Tag"}, "httpMethod": "POST", "path": "series/{seriesId}/submissions/{submissionId}/tags", "id": "moderator.tags.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "id": "moderator.tags.list", "httpMethod": "GET", "path": "series/{seriesId}/submissions/{submissionId}/tags", "response": {"$ref": "TagList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/moderator"], "path": "series/{seriesId}/submissions/{submissionId}/tags/{tagId}", "id": "moderator.tags.delete", "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "tagId": {"required": true, "type": "string", "location": "path"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "httpMethod": "DELETE"}}}', true)); + $this->series = new Google_SeriesServiceResource($this, $this->serviceName, 'series', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/moderator"], "request": {"$ref": "Series"}, "response": {"$ref": "Series"}, "httpMethod": "POST", "path": "series", "id": "moderator.series.insert"}, "patch": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Series"}, "response": {"$ref": "Series"}, "httpMethod": "PATCH", "path": "series/{seriesId}", "id": "moderator.series.patch"}, "list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "uint32"}, "q": {"type": "string", "location": "query"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}}, "response": {"$ref": "SeriesList"}, "httpMethod": "GET", "path": "series", "id": "moderator.series.list"}, "update": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Series"}, "response": {"$ref": "Series"}, "httpMethod": "PUT", "path": "series/{seriesId}", "id": "moderator.series.update"}, "get": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "id": "moderator.series.get", "httpMethod": "GET", "path": "series/{seriesId}", "response": {"$ref": "Series"}}}}', true)); + $this->series_submissions = new Google_SeriesSubmissionsServiceResource($this, $this->serviceName, 'submissions', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"lang": {"type": "string", "location": "query"}, "max-results": {"type": "integer", "location": "query", "format": "uint32"}, "seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "includeVotes": {"type": "boolean", "location": "query"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}, "author": {"type": "string", "location": "query"}, "sort": {"type": "string", "location": "query"}, "q": {"type": "string", "location": "query"}, "hasAttachedVideo": {"type": "boolean", "location": "query"}}, "id": "moderator.series.submissions.list", "httpMethod": "GET", "path": "series/{seriesId}/submissions", "response": {"$ref": "SubmissionList"}}}}', true)); + $this->series_responses = new Google_SeriesResponsesServiceResource($this, $this->serviceName, 'responses', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "uint32"}, "sort": {"type": "string", "location": "query"}, "seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "author": {"type": "string", "location": "query"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}, "q": {"type": "string", "location": "query"}, "hasAttachedVideo": {"type": "boolean", "location": "query"}}, "id": "moderator.series.responses.list", "httpMethod": "GET", "path": "series/{seriesId}/responses", "response": {"$ref": "SeriesList"}}}}', true)); + $this->topics = new Google_TopicsServiceResource($this, $this->serviceName, 'topics', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Topic"}, "response": {"$ref": "Topic"}, "httpMethod": "POST", "path": "series/{seriesId}/topics", "id": "moderator.topics.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "uint32"}, "q": {"type": "string", "location": "query"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}, "mode": {"type": "string", "location": "query"}, "seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "id": "moderator.topics.list", "httpMethod": "GET", "path": "series/{seriesId}/topics", "response": {"$ref": "TopicList"}}, "update": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "topicId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "request": {"$ref": "Topic"}, "response": {"$ref": "Topic"}, "httpMethod": "PUT", "path": "series/{seriesId}/topics/{topicId}", "id": "moderator.topics.update"}, "get": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "topicId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "id": "moderator.topics.get", "httpMethod": "GET", "path": "series/{seriesId}/topics/{topicId}", "response": {"$ref": "Topic"}}}}', true)); + $this->topics_submissions = new Google_TopicsSubmissionsServiceResource($this, $this->serviceName, 'submissions', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "uint32"}, "seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "includeVotes": {"type": "boolean", "location": "query"}, "topicId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}, "author": {"type": "string", "location": "query"}, "sort": {"type": "string", "location": "query"}, "q": {"type": "string", "location": "query"}, "hasAttachedVideo": {"type": "boolean", "location": "query"}}, "id": "moderator.topics.submissions.list", "httpMethod": "GET", "path": "series/{seriesId}/topics/{topicId}/submissions", "response": {"$ref": "SubmissionList"}}}}', true)); + $this->global_series = new Google_ModeratorGlobalSeriesServiceResource($this, $this->serviceName, 'series', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"max-results": {"type": "integer", "location": "query", "format": "uint32"}, "q": {"type": "string", "location": "query"}, "start-index": {"type": "integer", "location": "query", "format": "uint32"}}, "response": {"$ref": "SeriesList"}, "httpMethod": "GET", "path": "search", "id": "moderator.global.series.list"}}}', true)); + $this->profiles = new Google_ProfilesServiceResource($this, $this->serviceName, 'profiles', json_decode('{"methods": {"patch": {"scopes": ["https://www.googleapis.com/auth/moderator"], "request": {"$ref": "Profile"}, "response": {"$ref": "Profile"}, "httpMethod": "PATCH", "path": "profiles/@me", "id": "moderator.profiles.patch"}, "update": {"scopes": ["https://www.googleapis.com/auth/moderator"], "request": {"$ref": "Profile"}, "response": {"$ref": "Profile"}, "httpMethod": "PUT", "path": "profiles/@me", "id": "moderator.profiles.update"}, "get": {"scopes": ["https://www.googleapis.com/auth/moderator"], "path": "profiles/@me", "response": {"$ref": "Profile"}, "id": "moderator.profiles.get", "httpMethod": "GET"}}}', true)); + $this->featured_series = new Google_FeaturedSeriesServiceResource($this, $this->serviceName, 'series', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "path": "series/featured", "response": {"$ref": "SeriesList"}, "id": "moderator.featured.series.list", "httpMethod": "GET"}}}', true)); + $this->myrecent_series = new Google_MyrecentSeriesServiceResource($this, $this->serviceName, 'series', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "path": "series/@me/recent", "response": {"$ref": "SeriesList"}, "id": "moderator.myrecent.series.list", "httpMethod": "GET"}}}', true)); + $this->my_series = new Google_MySeriesServiceResource($this, $this->serviceName, 'series', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/moderator"], "path": "series/@me/mine", "response": {"$ref": "SeriesList"}, "id": "moderator.my.series.list", "httpMethod": "GET"}}}', true)); + $this->submissions = new Google_SubmissionsServiceResource($this, $this->serviceName, 'submissions', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "topicId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "unauthToken": {"type": "string", "location": "query"}, "anonymous": {"type": "boolean", "location": "query"}}, "request": {"$ref": "Submission"}, "response": {"$ref": "Submission"}, "httpMethod": "POST", "path": "series/{seriesId}/topics/{topicId}/submissions", "id": "moderator.submissions.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/moderator"], "parameters": {"lang": {"type": "string", "location": "query"}, "seriesId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "submissionId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}, "includeVotes": {"type": "boolean", "location": "query"}}, "id": "moderator.submissions.get", "httpMethod": "GET", "path": "series/{seriesId}/submissions/{submissionId}", "response": {"$ref": "Submission"}}}}', true)); + + } +} + +class Google_ModeratorTopicsResourcePartial extends Google_Model { + protected $__idType = 'Google_ModeratorTopicsResourcePartialId'; + protected $__idDataType = ''; + public $id; + public function setId(Google_ModeratorTopicsResourcePartialId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ModeratorTopicsResourcePartialId extends Google_Model { + public $seriesId; + public $topicId; + public function setSeriesId($seriesId) { + $this->seriesId = $seriesId; + } + public function getSeriesId() { + return $this->seriesId; + } + public function setTopicId($topicId) { + $this->topicId = $topicId; + } + public function getTopicId() { + return $this->topicId; + } +} + +class Google_ModeratorVotesResourcePartial extends Google_Model { + public $vote; + public $flag; + public function setVote($vote) { + $this->vote = $vote; + } + public function getVote() { + return $this->vote; + } + public function setFlag($flag) { + $this->flag = $flag; + } + public function getFlag() { + return $this->flag; + } +} + +class Google_Profile extends Google_Model { + public $kind; + protected $__attributionType = 'Google_ProfileAttribution'; + protected $__attributionDataType = ''; + public $attribution; + protected $__idType = 'Google_ProfileId'; + protected $__idDataType = ''; + public $id; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAttribution(Google_ProfileAttribution $attribution) { + $this->attribution = $attribution; + } + public function getAttribution() { + return $this->attribution; + } + public function setId(Google_ProfileId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ProfileAttribution extends Google_Model { + protected $__geoType = 'Google_ProfileAttributionGeo'; + protected $__geoDataType = ''; + public $geo; + public $displayName; + public $location; + public $avatarUrl; + public function setGeo(Google_ProfileAttributionGeo $geo) { + $this->geo = $geo; + } + public function getGeo() { + return $this->geo; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setAvatarUrl($avatarUrl) { + $this->avatarUrl = $avatarUrl; + } + public function getAvatarUrl() { + return $this->avatarUrl; + } +} + +class Google_ProfileAttributionGeo extends Google_Model { + public $latitude; + public $location; + public $longitude; + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } +} + +class Google_ProfileId extends Google_Model { + public $user; + public function setUser($user) { + $this->user = $user; + } + public function getUser() { + return $this->user; + } +} + +class Google_Series extends Google_Model { + public $kind; + public $description; + protected $__rulesType = 'Google_SeriesRules'; + protected $__rulesDataType = ''; + public $rules; + public $unauthVotingAllowed; + public $videoSubmissionAllowed; + public $name; + public $numTopics; + public $anonymousSubmissionAllowed; + public $unauthSubmissionAllowed; + protected $__idType = 'Google_SeriesId'; + protected $__idDataType = ''; + public $id; + protected $__countersType = 'Google_SeriesCounters'; + protected $__countersDataType = ''; + public $counters; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setRules(Google_SeriesRules $rules) { + $this->rules = $rules; + } + public function getRules() { + return $this->rules; + } + public function setUnauthVotingAllowed($unauthVotingAllowed) { + $this->unauthVotingAllowed = $unauthVotingAllowed; + } + public function getUnauthVotingAllowed() { + return $this->unauthVotingAllowed; + } + public function setVideoSubmissionAllowed($videoSubmissionAllowed) { + $this->videoSubmissionAllowed = $videoSubmissionAllowed; + } + public function getVideoSubmissionAllowed() { + return $this->videoSubmissionAllowed; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setNumTopics($numTopics) { + $this->numTopics = $numTopics; + } + public function getNumTopics() { + return $this->numTopics; + } + public function setAnonymousSubmissionAllowed($anonymousSubmissionAllowed) { + $this->anonymousSubmissionAllowed = $anonymousSubmissionAllowed; + } + public function getAnonymousSubmissionAllowed() { + return $this->anonymousSubmissionAllowed; + } + public function setUnauthSubmissionAllowed($unauthSubmissionAllowed) { + $this->unauthSubmissionAllowed = $unauthSubmissionAllowed; + } + public function getUnauthSubmissionAllowed() { + return $this->unauthSubmissionAllowed; + } + public function setId(Google_SeriesId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setCounters(Google_SeriesCounters $counters) { + $this->counters = $counters; + } + public function getCounters() { + return $this->counters; + } +} + +class Google_SeriesCounters extends Google_Model { + public $users; + public $noneVotes; + public $videoSubmissions; + public $minusVotes; + public $anonymousSubmissions; + public $submissions; + public $plusVotes; + public function setUsers($users) { + $this->users = $users; + } + public function getUsers() { + return $this->users; + } + public function setNoneVotes($noneVotes) { + $this->noneVotes = $noneVotes; + } + public function getNoneVotes() { + return $this->noneVotes; + } + public function setVideoSubmissions($videoSubmissions) { + $this->videoSubmissions = $videoSubmissions; + } + public function getVideoSubmissions() { + return $this->videoSubmissions; + } + public function setMinusVotes($minusVotes) { + $this->minusVotes = $minusVotes; + } + public function getMinusVotes() { + return $this->minusVotes; + } + public function setAnonymousSubmissions($anonymousSubmissions) { + $this->anonymousSubmissions = $anonymousSubmissions; + } + public function getAnonymousSubmissions() { + return $this->anonymousSubmissions; + } + public function setSubmissions($submissions) { + $this->submissions = $submissions; + } + public function getSubmissions() { + return $this->submissions; + } + public function setPlusVotes($plusVotes) { + $this->plusVotes = $plusVotes; + } + public function getPlusVotes() { + return $this->plusVotes; + } +} + +class Google_SeriesId extends Google_Model { + public $seriesId; + public function setSeriesId($seriesId) { + $this->seriesId = $seriesId; + } + public function getSeriesId() { + return $this->seriesId; + } +} + +class Google_SeriesList extends Google_Model { + protected $__itemsType = 'Google_Series'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Series) */ $items) { + $this->assertIsArray($items, 'Google_Series', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_SeriesRules extends Google_Model { + protected $__votesType = 'Google_SeriesRulesVotes'; + protected $__votesDataType = ''; + public $votes; + protected $__submissionsType = 'Google_SeriesRulesSubmissions'; + protected $__submissionsDataType = ''; + public $submissions; + public function setVotes(Google_SeriesRulesVotes $votes) { + $this->votes = $votes; + } + public function getVotes() { + return $this->votes; + } + public function setSubmissions(Google_SeriesRulesSubmissions $submissions) { + $this->submissions = $submissions; + } + public function getSubmissions() { + return $this->submissions; + } +} + +class Google_SeriesRulesSubmissions extends Google_Model { + public $close; + public $open; + public function setClose($close) { + $this->close = $close; + } + public function getClose() { + return $this->close; + } + public function setOpen($open) { + $this->open = $open; + } + public function getOpen() { + return $this->open; + } +} + +class Google_SeriesRulesVotes extends Google_Model { + public $close; + public $open; + public function setClose($close) { + $this->close = $close; + } + public function getClose() { + return $this->close; + } + public function setOpen($open) { + $this->open = $open; + } + public function getOpen() { + return $this->open; + } +} + +class Google_Submission extends Google_Model { + public $kind; + protected $__attributionType = 'Google_SubmissionAttribution'; + protected $__attributionDataType = ''; + public $attribution; + public $created; + public $text; + protected $__topicsType = 'Google_ModeratorTopicsResourcePartial'; + protected $__topicsDataType = 'array'; + public $topics; + public $author; + protected $__translationsType = 'Google_SubmissionTranslations'; + protected $__translationsDataType = 'array'; + public $translations; + protected $__parentSubmissionIdType = 'Google_SubmissionParentSubmissionId'; + protected $__parentSubmissionIdDataType = ''; + public $parentSubmissionId; + protected $__voteType = 'Google_ModeratorVotesResourcePartial'; + protected $__voteDataType = ''; + public $vote; + public $attachmentUrl; + protected $__geoType = 'Google_SubmissionGeo'; + protected $__geoDataType = ''; + public $geo; + protected $__idType = 'Google_SubmissionId'; + protected $__idDataType = ''; + public $id; + protected $__countersType = 'Google_SubmissionCounters'; + protected $__countersDataType = ''; + public $counters; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAttribution(Google_SubmissionAttribution $attribution) { + $this->attribution = $attribution; + } + public function getAttribution() { + return $this->attribution; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setText($text) { + $this->text = $text; + } + public function getText() { + return $this->text; + } + public function setTopics(/* array(Google_ModeratorTopicsResourcePartial) */ $topics) { + $this->assertIsArray($topics, 'Google_ModeratorTopicsResourcePartial', __METHOD__); + $this->topics = $topics; + } + public function getTopics() { + return $this->topics; + } + public function setAuthor($author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setTranslations(/* array(Google_SubmissionTranslations) */ $translations) { + $this->assertIsArray($translations, 'Google_SubmissionTranslations', __METHOD__); + $this->translations = $translations; + } + public function getTranslations() { + return $this->translations; + } + public function setParentSubmissionId(Google_SubmissionParentSubmissionId $parentSubmissionId) { + $this->parentSubmissionId = $parentSubmissionId; + } + public function getParentSubmissionId() { + return $this->parentSubmissionId; + } + public function setVote(Google_ModeratorVotesResourcePartial $vote) { + $this->vote = $vote; + } + public function getVote() { + return $this->vote; + } + public function setAttachmentUrl($attachmentUrl) { + $this->attachmentUrl = $attachmentUrl; + } + public function getAttachmentUrl() { + return $this->attachmentUrl; + } + public function setGeo(Google_SubmissionGeo $geo) { + $this->geo = $geo; + } + public function getGeo() { + return $this->geo; + } + public function setId(Google_SubmissionId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setCounters(Google_SubmissionCounters $counters) { + $this->counters = $counters; + } + public function getCounters() { + return $this->counters; + } +} + +class Google_SubmissionAttribution extends Google_Model { + public $displayName; + public $location; + public $avatarUrl; + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setAvatarUrl($avatarUrl) { + $this->avatarUrl = $avatarUrl; + } + public function getAvatarUrl() { + return $this->avatarUrl; + } +} + +class Google_SubmissionCounters extends Google_Model { + public $noneVotes; + public $minusVotes; + public $plusVotes; + public function setNoneVotes($noneVotes) { + $this->noneVotes = $noneVotes; + } + public function getNoneVotes() { + return $this->noneVotes; + } + public function setMinusVotes($minusVotes) { + $this->minusVotes = $minusVotes; + } + public function getMinusVotes() { + return $this->minusVotes; + } + public function setPlusVotes($plusVotes) { + $this->plusVotes = $plusVotes; + } + public function getPlusVotes() { + return $this->plusVotes; + } +} + +class Google_SubmissionGeo extends Google_Model { + public $latitude; + public $location; + public $longitude; + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } +} + +class Google_SubmissionId extends Google_Model { + public $seriesId; + public $submissionId; + public function setSeriesId($seriesId) { + $this->seriesId = $seriesId; + } + public function getSeriesId() { + return $this->seriesId; + } + public function setSubmissionId($submissionId) { + $this->submissionId = $submissionId; + } + public function getSubmissionId() { + return $this->submissionId; + } +} + +class Google_SubmissionList extends Google_Model { + protected $__itemsType = 'Google_Submission'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Submission) */ $items) { + $this->assertIsArray($items, 'Google_Submission', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_SubmissionParentSubmissionId extends Google_Model { + public $seriesId; + public $submissionId; + public function setSeriesId($seriesId) { + $this->seriesId = $seriesId; + } + public function getSeriesId() { + return $this->seriesId; + } + public function setSubmissionId($submissionId) { + $this->submissionId = $submissionId; + } + public function getSubmissionId() { + return $this->submissionId; + } +} + +class Google_SubmissionTranslations extends Google_Model { + public $lang; + public $text; + public function setLang($lang) { + $this->lang = $lang; + } + public function getLang() { + return $this->lang; + } + public function setText($text) { + $this->text = $text; + } + public function getText() { + return $this->text; + } +} + +class Google_Tag extends Google_Model { + public $text; + public $kind; + protected $__idType = 'Google_TagId'; + protected $__idDataType = ''; + public $id; + public function setText($text) { + $this->text = $text; + } + public function getText() { + return $this->text; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId(Google_TagId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_TagId extends Google_Model { + public $seriesId; + public $tagId; + public $submissionId; + public function setSeriesId($seriesId) { + $this->seriesId = $seriesId; + } + public function getSeriesId() { + return $this->seriesId; + } + public function setTagId($tagId) { + $this->tagId = $tagId; + } + public function getTagId() { + return $this->tagId; + } + public function setSubmissionId($submissionId) { + $this->submissionId = $submissionId; + } + public function getSubmissionId() { + return $this->submissionId; + } +} + +class Google_TagList extends Google_Model { + protected $__itemsType = 'Google_Tag'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Tag) */ $items) { + $this->assertIsArray($items, 'Google_Tag', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Topic extends Google_Model { + public $kind; + public $description; + protected $__rulesType = 'Google_TopicRules'; + protected $__rulesDataType = ''; + public $rules; + protected $__featuredSubmissionType = 'Google_Submission'; + protected $__featuredSubmissionDataType = ''; + public $featuredSubmission; + public $presenter; + protected $__countersType = 'Google_TopicCounters'; + protected $__countersDataType = ''; + public $counters; + protected $__idType = 'Google_TopicId'; + protected $__idDataType = ''; + public $id; + public $name; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setRules(Google_TopicRules $rules) { + $this->rules = $rules; + } + public function getRules() { + return $this->rules; + } + public function setFeaturedSubmission(Google_Submission $featuredSubmission) { + $this->featuredSubmission = $featuredSubmission; + } + public function getFeaturedSubmission() { + return $this->featuredSubmission; + } + public function setPresenter($presenter) { + $this->presenter = $presenter; + } + public function getPresenter() { + return $this->presenter; + } + public function setCounters(Google_TopicCounters $counters) { + $this->counters = $counters; + } + public function getCounters() { + return $this->counters; + } + public function setId(Google_TopicId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_TopicCounters extends Google_Model { + public $users; + public $noneVotes; + public $videoSubmissions; + public $minusVotes; + public $submissions; + public $plusVotes; + public function setUsers($users) { + $this->users = $users; + } + public function getUsers() { + return $this->users; + } + public function setNoneVotes($noneVotes) { + $this->noneVotes = $noneVotes; + } + public function getNoneVotes() { + return $this->noneVotes; + } + public function setVideoSubmissions($videoSubmissions) { + $this->videoSubmissions = $videoSubmissions; + } + public function getVideoSubmissions() { + return $this->videoSubmissions; + } + public function setMinusVotes($minusVotes) { + $this->minusVotes = $minusVotes; + } + public function getMinusVotes() { + return $this->minusVotes; + } + public function setSubmissions($submissions) { + $this->submissions = $submissions; + } + public function getSubmissions() { + return $this->submissions; + } + public function setPlusVotes($plusVotes) { + $this->plusVotes = $plusVotes; + } + public function getPlusVotes() { + return $this->plusVotes; + } +} + +class Google_TopicId extends Google_Model { + public $seriesId; + public $topicId; + public function setSeriesId($seriesId) { + $this->seriesId = $seriesId; + } + public function getSeriesId() { + return $this->seriesId; + } + public function setTopicId($topicId) { + $this->topicId = $topicId; + } + public function getTopicId() { + return $this->topicId; + } +} + +class Google_TopicList extends Google_Model { + protected $__itemsType = 'Google_Topic'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Topic) */ $items) { + $this->assertIsArray($items, 'Google_Topic', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_TopicRules extends Google_Model { + protected $__votesType = 'Google_TopicRulesVotes'; + protected $__votesDataType = ''; + public $votes; + protected $__submissionsType = 'Google_TopicRulesSubmissions'; + protected $__submissionsDataType = ''; + public $submissions; + public function setVotes(Google_TopicRulesVotes $votes) { + $this->votes = $votes; + } + public function getVotes() { + return $this->votes; + } + public function setSubmissions(Google_TopicRulesSubmissions $submissions) { + $this->submissions = $submissions; + } + public function getSubmissions() { + return $this->submissions; + } +} + +class Google_TopicRulesSubmissions extends Google_Model { + public $close; + public $open; + public function setClose($close) { + $this->close = $close; + } + public function getClose() { + return $this->close; + } + public function setOpen($open) { + $this->open = $open; + } + public function getOpen() { + return $this->open; + } +} + +class Google_TopicRulesVotes extends Google_Model { + public $close; + public $open; + public function setClose($close) { + $this->close = $close; + } + public function getClose() { + return $this->close; + } + public function setOpen($open) { + $this->open = $open; + } + public function getOpen() { + return $this->open; + } +} + +class Google_Vote extends Google_Model { + public $vote; + public $flag; + protected $__idType = 'Google_VoteId'; + protected $__idDataType = ''; + public $id; + public $kind; + public function setVote($vote) { + $this->vote = $vote; + } + public function getVote() { + return $this->vote; + } + public function setFlag($flag) { + $this->flag = $flag; + } + public function getFlag() { + return $this->flag; + } + public function setId(Google_VoteId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_VoteId extends Google_Model { + public $seriesId; + public $submissionId; + public function setSeriesId($seriesId) { + $this->seriesId = $seriesId; + } + public function getSeriesId() { + return $this->seriesId; + } + public function setSubmissionId($submissionId) { + $this->submissionId = $submissionId; + } + public function getSubmissionId() { + return $this->submissionId; + } +} + +class Google_VoteList extends Google_Model { + protected $__itemsType = 'Google_Vote'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Vote) */ $items) { + $this->assertIsArray($items, 'Google_Vote', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} diff --git a/modules/oauth/src/google/contrib/Google_Oauth2Service.php b/modules/oauth/src/google/contrib/Google_Oauth2Service.php new file mode 100644 index 0000000..c53effc --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_Oauth2Service.php @@ -0,0 +1,265 @@ + + * $oauth2Service = new Google_Oauth2Service(...); + * $userinfo = $oauth2Service->userinfo; + * + */ + class Google_UserinfoServiceResource extends Google_ServiceResource { + + + /** + * (userinfo.get) + * + * @param array $optParams Optional parameters. + * @return Google_Userinfo + */ + public function get($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Userinfo($data); + } else { + return $data; + } + } + } + + /** + * The "v2" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Oauth2Service(...); + * $v2 = $oauth2Service->v2; + * + */ + class Google_UserinfoV2ServiceResource extends Google_ServiceResource { + + + } + + /** + * The "me" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Oauth2Service(...); + * $me = $oauth2Service->me; + * + */ + class Google_UserinfoV2MeServiceResource extends Google_ServiceResource { + + + /** + * (me.get) + * + * @param array $optParams Optional parameters. + * @return Google_Userinfo + */ + public function get($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Userinfo($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Oauth2 (v2). + * + *

+ * OAuth2 API + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_Oauth2Service extends Google_Service { + public $userinfo; + public $userinfo_v2_me; + /** + * Constructs the internal representation of the Oauth2 service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = ''; + $this->version = 'v2'; + $this->serviceName = 'oauth2'; + + $client->addService($this->serviceName, $this->version); + $this->userinfo = new Google_UserinfoServiceResource($this, $this->serviceName, 'userinfo', json_decode('{"methods": {"get": {"path": "oauth2/v2/userinfo", "scopes": ["https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"], "id": "oauth2.userinfo.get", "httpMethod": "GET", "response": {"$ref": "Userinfo"}}}}', true)); + $this->userinfo_v2_me = new Google_UserinfoV2MeServiceResource($this, $this->serviceName, 'me', json_decode('{"methods": {"get": {"path": "userinfo/v2/me", "scopes": ["https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"], "id": "oauth2.userinfo.v2.me.get", "httpMethod": "GET", "response": {"$ref": "Userinfo"}}}}', true)); + } +} + +class Google_Tokeninfo extends Google_Model { + public $issued_to; + public $user_id; + public $expires_in; + public $access_type; + public $audience; + public $scope; + public $email; + public $verified_email; + public function setIssued_to($issued_to) { + $this->issued_to = $issued_to; + } + public function getIssued_to() { + return $this->issued_to; + } + public function setUser_id($user_id) { + $this->user_id = $user_id; + } + public function getUser_id() { + return $this->user_id; + } + public function setExpires_in($expires_in) { + $this->expires_in = $expires_in; + } + public function getExpires_in() { + return $this->expires_in; + } + public function setAccess_type($access_type) { + $this->access_type = $access_type; + } + public function getAccess_type() { + return $this->access_type; + } + public function setAudience($audience) { + $this->audience = $audience; + } + public function getAudience() { + return $this->audience; + } + public function setScope($scope) { + $this->scope = $scope; + } + public function getScope() { + return $this->scope; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } + public function setVerified_email($verified_email) { + $this->verified_email = $verified_email; + } + public function getVerified_email() { + return $this->verified_email; + } +} + +class Google_Userinfo extends Google_Model { + public $family_name; + public $name; + public $picture; + public $locale; + public $gender; + public $email; + public $birthday; + public $link; + public $given_name; + public $timezone; + public $id; + public $verified_email; + public function setFamily_name($family_name) { + $this->family_name = $family_name; + } + public function getFamily_name() { + return $this->family_name; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setPicture($picture) { + $this->picture = $picture; + } + public function getPicture() { + return $this->picture; + } + public function setLocale($locale) { + $this->locale = $locale; + } + public function getLocale() { + return $this->locale; + } + public function setGender($gender) { + $this->gender = $gender; + } + public function getGender() { + return $this->gender; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } + public function setBirthday($birthday) { + $this->birthday = $birthday; + } + public function getBirthday() { + return $this->birthday; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setGiven_name($given_name) { + $this->given_name = $given_name; + } + public function getGiven_name() { + return $this->given_name; + } + public function setTimezone($timezone) { + $this->timezone = $timezone; + } + public function getTimezone() { + return $this->timezone; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setVerified_email($verified_email) { + $this->verified_email = $verified_email; + } + public function getVerified_email() { + return $this->verified_email; + } +} diff --git a/modules/oauth/src/google/contrib/Google_OrkutService.php b/modules/oauth/src/google/contrib/Google_OrkutService.php new file mode 100644 index 0000000..98572df --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_OrkutService.php @@ -0,0 +1,2554 @@ + + * $orkutService = new Google_OrkutService(...); + * $communityMembers = $orkutService->communityMembers; + * + */ + class Google_CommunityMembersServiceResource extends Google_ServiceResource { + + + /** + * Makes the user join a community. (communityMembers.insert) + * + * @param int $communityId ID of the community. + * @param string $userId ID of the user. + * @param array $optParams Optional parameters. + * @return Google_CommunityMembers + */ + public function insert($communityId, $userId, $optParams = array()) { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CommunityMembers($data); + } else { + return $data; + } + } + /** + * Retrieves the relationship between a user and a community. (communityMembers.get) + * + * @param int $communityId ID of the community. + * @param string $userId ID of the user. + * @param array $optParams Optional parameters. + * + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityMembers + */ + public function get($communityId, $userId, $optParams = array()) { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_CommunityMembers($data); + } else { + return $data; + } + } + /** + * Lists members of a community. Use the pagination tokens to retrieve the full list; do not rely on + * the member count available in the community profile information to know when to stop iterating, + * as that count may be approximate. (communityMembers.list) + * + * @param int $communityId The ID of the community whose members will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token that allows pagination. + * @opt_param bool friendsOnly Whether to list only community members who are friends of the user. + * @opt_param string maxResults The maximum number of members to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityMembersList + */ + public function listCommunityMembers($communityId, $optParams = array()) { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommunityMembersList($data); + } else { + return $data; + } + } + /** + * Makes the user leave a community. (communityMembers.delete) + * + * @param int $communityId ID of the community. + * @param string $userId ID of the user. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $userId, $optParams = array()) { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "activities" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $activities = $orkutService->activities; + * + */ + class Google_ActivitiesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves a list of activities. (activities.list) + * + * @param string $userId The ID of the user whose activities will be listed. Can be me to refer to the viewer (i.e. the authenticated user). + * @param string $collection The collection of activities to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token that allows pagination. + * @opt_param string maxResults The maximum number of activities to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_ActivityList + */ + public function listActivities($userId, $collection, $optParams = array()) { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ActivityList($data); + } else { + return $data; + } + } + /** + * Deletes an existing activity, if the access controls allow it. (activities.delete) + * + * @param string $activityId ID of the activity to remove. + * @param array $optParams Optional parameters. + */ + public function delete($activityId, $optParams = array()) { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "communityPollComments" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communityPollComments = $orkutService->communityPollComments; + * + */ + class Google_CommunityPollCommentsServiceResource extends Google_ServiceResource { + + + /** + * Adds a comment on a community poll. (communityPollComments.insert) + * + * @param int $communityId The ID of the community whose poll is being commented. + * @param string $pollId The ID of the poll being commented. + * @param Google_CommunityPollComment $postBody + * @param array $optParams Optional parameters. + * @return Google_CommunityPollComment + */ + public function insert($communityId, $pollId, Google_CommunityPollComment $postBody, $optParams = array()) { + $params = array('communityId' => $communityId, 'pollId' => $pollId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CommunityPollComment($data); + } else { + return $data; + } + } + /** + * Retrieves the comments of a community poll. (communityPollComments.list) + * + * @param int $communityId The ID of the community whose poll is having its comments listed. + * @param string $pollId The ID of the community whose polls will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token that allows pagination. + * @opt_param string maxResults The maximum number of comments to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityPollCommentList + */ + public function listCommunityPollComments($communityId, $pollId, $optParams = array()) { + $params = array('communityId' => $communityId, 'pollId' => $pollId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommunityPollCommentList($data); + } else { + return $data; + } + } + } + + /** + * The "communityPolls" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communityPolls = $orkutService->communityPolls; + * + */ + class Google_CommunityPollsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the polls of a community. (communityPolls.list) + * + * @param int $communityId The ID of the community which polls will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token that allows pagination. + * @opt_param string maxResults The maximum number of polls to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityPollList + */ + public function listCommunityPolls($communityId, $optParams = array()) { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommunityPollList($data); + } else { + return $data; + } + } + /** + * Retrieves one specific poll of a community. (communityPolls.get) + * + * @param int $communityId The ID of the community for whose poll will be retrieved. + * @param string $pollId The ID of the poll to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityPoll + */ + public function get($communityId, $pollId, $optParams = array()) { + $params = array('communityId' => $communityId, 'pollId' => $pollId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_CommunityPoll($data); + } else { + return $data; + } + } + } + + /** + * The "communityMessages" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communityMessages = $orkutService->communityMessages; + * + */ + class Google_CommunityMessagesServiceResource extends Google_ServiceResource { + + + /** + * Adds a message to a given community topic. (communityMessages.insert) + * + * @param int $communityId The ID of the community the message should be added to. + * @param string $topicId The ID of the topic the message should be added to. + * @param Google_CommunityMessage $postBody + * @param array $optParams Optional parameters. + * @return Google_CommunityMessage + */ + public function insert($communityId, $topicId, Google_CommunityMessage $postBody, $optParams = array()) { + $params = array('communityId' => $communityId, 'topicId' => $topicId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CommunityMessage($data); + } else { + return $data; + } + } + /** + * Retrieves the messages of a topic of a community. (communityMessages.list) + * + * @param int $communityId The ID of the community which messages will be listed. + * @param string $topicId The ID of the topic which messages will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token that allows pagination. + * @opt_param string maxResults The maximum number of messages to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityMessageList + */ + public function listCommunityMessages($communityId, $topicId, $optParams = array()) { + $params = array('communityId' => $communityId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommunityMessageList($data); + } else { + return $data; + } + } + /** + * Moves a message of the community to the trash folder. (communityMessages.delete) + * + * @param int $communityId The ID of the community whose message will be moved to the trash folder. + * @param string $topicId The ID of the topic whose message will be moved to the trash folder. + * @param string $messageId The ID of the message to be moved to the trash folder. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $topicId, $messageId, $optParams = array()) { + $params = array('communityId' => $communityId, 'topicId' => $topicId, 'messageId' => $messageId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "communityTopics" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communityTopics = $orkutService->communityTopics; + * + */ + class Google_CommunityTopicsServiceResource extends Google_ServiceResource { + + + /** + * Adds a topic to a given community. (communityTopics.insert) + * + * @param int $communityId The ID of the community the topic should be added to. + * @param Google_CommunityTopic $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool isShout Whether this topic is a shout. + * @return Google_CommunityTopic + */ + public function insert($communityId, Google_CommunityTopic $postBody, $optParams = array()) { + $params = array('communityId' => $communityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CommunityTopic($data); + } else { + return $data; + } + } + /** + * Retrieves a topic of a community. (communityTopics.get) + * + * @param int $communityId The ID of the community whose topic will be retrieved. + * @param string $topicId The ID of the topic to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityTopic + */ + public function get($communityId, $topicId, $optParams = array()) { + $params = array('communityId' => $communityId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_CommunityTopic($data); + } else { + return $data; + } + } + /** + * Retrieves the topics of a community. (communityTopics.list) + * + * @param int $communityId The ID of the community which topics will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A continuation token that allows pagination. + * @opt_param string maxResults The maximum number of topics to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityTopicList + */ + public function listCommunityTopics($communityId, $optParams = array()) { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommunityTopicList($data); + } else { + return $data; + } + } + /** + * Moves a topic of the community to the trash folder. (communityTopics.delete) + * + * @param int $communityId The ID of the community whose topic will be moved to the trash folder. + * @param string $topicId The ID of the topic to be moved to the trash folder. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $topicId, $optParams = array()) { + $params = array('communityId' => $communityId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "comments" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $comments = $orkutService->comments; + * + */ + class Google_CommentsServiceResource extends Google_ServiceResource { + + + /** + * Inserts a new comment to an activity. (comments.insert) + * + * @param string $activityId The ID of the activity to contain the new comment. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Comment + */ + public function insert($activityId, Google_Comment $postBody, $optParams = array()) { + $params = array('activityId' => $activityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Comment($data); + } else { + return $data; + } + } + /** + * Retrieves an existing comment. (comments.get) + * + * @param string $commentId ID of the comment to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_Comment + */ + public function get($commentId, $optParams = array()) { + $params = array('commentId' => $commentId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Comment($data); + } else { + return $data; + } + } + /** + * Retrieves a list of comments, possibly filtered. (comments.list) + * + * @param string $activityId The ID of the activity containing the comments. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy Sort search results. + * @opt_param string pageToken A continuation token that allows pagination. + * @opt_param string maxResults The maximum number of activities to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommentList + */ + public function listComments($activityId, $optParams = array()) { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommentList($data); + } else { + return $data; + } + } + /** + * Deletes an existing comment. (comments.delete) + * + * @param string $commentId ID of the comment to remove. + * @param array $optParams Optional parameters. + */ + public function delete($commentId, $optParams = array()) { + $params = array('commentId' => $commentId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "acl" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $acl = $orkutService->acl; + * + */ + class Google_AclServiceResource extends Google_ServiceResource { + + + /** + * Excludes an element from the ACL of the activity. (acl.delete) + * + * @param string $activityId ID of the activity. + * @param string $userId ID of the user to be removed from the activity. + * @param array $optParams Optional parameters. + */ + public function delete($activityId, $userId, $optParams = array()) { + $params = array('activityId' => $activityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "communityRelated" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communityRelated = $orkutService->communityRelated; + * + */ + class Google_CommunityRelatedServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the communities related to another one. (communityRelated.list) + * + * @param int $communityId The ID of the community whose related communities will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityList + */ + public function listCommunityRelated($communityId, $optParams = array()) { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommunityList($data); + } else { + return $data; + } + } + } + + /** + * The "scraps" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $scraps = $orkutService->scraps; + * + */ + class Google_ScrapsServiceResource extends Google_ServiceResource { + + + /** + * Creates a new scrap. (scraps.insert) + * + * @param Google_Activity $postBody + * @param array $optParams Optional parameters. + * @return Google_Activity + */ + public function insert(Google_Activity $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Activity($data); + } else { + return $data; + } + } + } + + /** + * The "communityPollVotes" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communityPollVotes = $orkutService->communityPollVotes; + * + */ + class Google_CommunityPollVotesServiceResource extends Google_ServiceResource { + + + /** + * Votes on a community poll. (communityPollVotes.insert) + * + * @param int $communityId The ID of the community whose poll is being voted. + * @param string $pollId The ID of the poll being voted. + * @param Google_CommunityPollVote $postBody + * @param array $optParams Optional parameters. + * @return Google_CommunityPollVote + */ + public function insert($communityId, $pollId, Google_CommunityPollVote $postBody, $optParams = array()) { + $params = array('communityId' => $communityId, 'pollId' => $pollId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CommunityPollVote($data); + } else { + return $data; + } + } + } + + /** + * The "communities" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communities = $orkutService->communities; + * + */ + class Google_CommunitiesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the list of communities the current user is a member of. (communities.list) + * + * @param string $userId The ID of the user whose communities will be listed. Can be me to refer to caller. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy How to order the communities by. + * @opt_param string maxResults The maximum number of communities to include in the response. + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_CommunityList + */ + public function listCommunities($userId, $optParams = array()) { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommunityList($data); + } else { + return $data; + } + } + /** + * Retrieves the basic information (aka. profile) of a community. (communities.get) + * + * @param int $communityId The ID of the community to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl Specifies the interface language (host language) of your user interface. + * @return Google_Community + */ + public function get($communityId, $optParams = array()) { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Community($data); + } else { + return $data; + } + } + } + + /** + * The "communityFollow" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $communityFollow = $orkutService->communityFollow; + * + */ + class Google_CommunityFollowServiceResource extends Google_ServiceResource { + + + /** + * Adds a user as a follower of a community. (communityFollow.insert) + * + * @param int $communityId ID of the community. + * @param string $userId ID of the user. + * @param array $optParams Optional parameters. + * @return Google_CommunityMembers + */ + public function insert($communityId, $userId, $optParams = array()) { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_CommunityMembers($data); + } else { + return $data; + } + } + /** + * Removes a user from the followers of a community. (communityFollow.delete) + * + * @param int $communityId ID of the community. + * @param string $userId ID of the user. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $userId, $optParams = array()) { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "activityVisibility" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $activityVisibility = $orkutService->activityVisibility; + * + */ + class Google_ActivityVisibilityServiceResource extends Google_ServiceResource { + + + /** + * Updates the visibility of an existing activity. This method supports patch semantics. + * (activityVisibility.patch) + * + * @param string $activityId ID of the activity. + * @param Google_Visibility $postBody + * @param array $optParams Optional parameters. + * @return Google_Visibility + */ + public function patch($activityId, Google_Visibility $postBody, $optParams = array()) { + $params = array('activityId' => $activityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Visibility($data); + } else { + return $data; + } + } + /** + * Updates the visibility of an existing activity. (activityVisibility.update) + * + * @param string $activityId ID of the activity. + * @param Google_Visibility $postBody + * @param array $optParams Optional parameters. + * @return Google_Visibility + */ + public function update($activityId, Google_Visibility $postBody, $optParams = array()) { + $params = array('activityId' => $activityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Visibility($data); + } else { + return $data; + } + } + /** + * Gets the visibility of an existing activity. (activityVisibility.get) + * + * @param string $activityId ID of the activity to get the visibility. + * @param array $optParams Optional parameters. + * @return Google_Visibility + */ + public function get($activityId, $optParams = array()) { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Visibility($data); + } else { + return $data; + } + } + } + + /** + * The "badges" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $badges = $orkutService->badges; + * + */ + class Google_BadgesServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the list of visible badges of a user. (badges.list) + * + * @param string $userId The id of the user whose badges will be listed. Can be me to refer to caller. + * @param array $optParams Optional parameters. + * @return Google_BadgeList + */ + public function listBadges($userId, $optParams = array()) { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_BadgeList($data); + } else { + return $data; + } + } + /** + * Retrieves a badge from a user. (badges.get) + * + * @param string $userId The ID of the user whose badges will be listed. Can be me to refer to caller. + * @param string $badgeId The ID of the badge that will be retrieved. + * @param array $optParams Optional parameters. + * @return Google_Badge + */ + public function get($userId, $badgeId, $optParams = array()) { + $params = array('userId' => $userId, 'badgeId' => $badgeId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Badge($data); + } else { + return $data; + } + } + } + + /** + * The "counters" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_OrkutService(...); + * $counters = $orkutService->counters; + * + */ + class Google_CountersServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the counters of a user. (counters.list) + * + * @param string $userId The ID of the user whose counters will be listed. Can be me to refer to caller. + * @param array $optParams Optional parameters. + * @return Google_Counters + */ + public function listCounters($userId, $optParams = array()) { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Counters($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Orkut (v2). + * + *

+ * Lets you manage activities, comments and badges in Orkut. More stuff coming in time. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_OrkutService extends Google_Service { + public $communityMembers; + public $activities; + public $communityPollComments; + public $communityPolls; + public $communityMessages; + public $communityTopics; + public $comments; + public $acl; + public $communityRelated; + public $scraps; + public $communityPollVotes; + public $communities; + public $communityFollow; + public $activityVisibility; + public $badges; + public $counters; + /** + * Constructs the internal representation of the Orkut service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'orkut/v2/'; + $this->version = 'v2'; + $this->serviceName = 'orkut'; + + $client->addService($this->serviceName, $this->version); + $this->communityMembers = new Google_CommunityMembersServiceResource($this, $this->serviceName, 'communityMembers', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "userId": {"required": true, "type": "string", "location": "path"}}, "id": "orkut.communityMembers.insert", "httpMethod": "POST", "path": "communities/{communityId}/members/{userId}", "response": {"$ref": "CommunityMembers"}}, "get": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "userId": {"required": true, "type": "string", "location": "path"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityMembers.get", "httpMethod": "GET", "path": "communities/{communityId}/members/{userId}", "response": {"$ref": "CommunityMembers"}}, "list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "friendsOnly": {"type": "boolean", "location": "query"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "uint32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityMembers.list", "httpMethod": "GET", "path": "communities/{communityId}/members", "response": {"$ref": "CommunityMembersList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/orkut"], "path": "communities/{communityId}/members/{userId}", "id": "orkut.communityMembers.delete", "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "userId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->activities = new Google_ActivitiesServiceResource($this, $this->serviceName, 'activities', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"location": "query", "minimum": "1", "type": "integer", "maximum": "100", "format": "uint32"}, "userId": {"required": true, "type": "string", "location": "path"}, "hl": {"type": "string", "location": "query"}, "collection": {"required": true, "type": "string", "location": "path", "enum": ["all", "scraps", "stream"]}}, "id": "orkut.activities.list", "httpMethod": "GET", "path": "people/{userId}/activities/{collection}", "response": {"$ref": "ActivityList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/orkut"], "path": "activities/{activityId}", "id": "orkut.activities.delete", "parameters": {"activityId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->communityPollComments = new Google_CommunityPollCommentsServiceResource($this, $this->serviceName, 'communityPollComments', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "pollId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "CommunityPollComment"}, "response": {"$ref": "CommunityPollComment"}, "httpMethod": "POST", "path": "communities/{communityId}/polls/{pollId}/comments", "id": "orkut.communityPollComments.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"pollId": {"required": true, "type": "string", "location": "path"}, "pageToken": {"type": "string", "location": "query"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "uint32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityPollComments.list", "httpMethod": "GET", "path": "communities/{communityId}/polls/{pollId}/comments", "response": {"$ref": "CommunityPollCommentList"}}}}', true)); + $this->communityPolls = new Google_CommunityPollsServiceResource($this, $this->serviceName, 'communityPolls', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "uint32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityPolls.list", "httpMethod": "GET", "path": "communities/{communityId}/polls", "response": {"$ref": "CommunityPollList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "pollId": {"required": true, "type": "string", "location": "path"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityPolls.get", "httpMethod": "GET", "path": "communities/{communityId}/polls/{pollId}", "response": {"$ref": "CommunityPoll"}}}}', true)); + $this->communityMessages = new Google_CommunityMessagesServiceResource($this, $this->serviceName, 'communityMessages', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"topicId": {"required": true, "type": "string", "location": "path", "format": "int64"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "CommunityMessage"}, "response": {"$ref": "CommunityMessage"}, "httpMethod": "POST", "path": "communities/{communityId}/topics/{topicId}/messages", "id": "orkut.communityMessages.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "maxResults": {"location": "query", "minimum": "1", "type": "integer", "maximum": "100", "format": "uint32"}, "hl": {"type": "string", "location": "query"}, "topicId": {"required": true, "type": "string", "location": "path", "format": "int64"}}, "id": "orkut.communityMessages.list", "httpMethod": "GET", "path": "communities/{communityId}/topics/{topicId}/messages", "response": {"$ref": "CommunityMessageList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/orkut"], "path": "communities/{communityId}/topics/{topicId}/messages/{messageId}", "id": "orkut.communityMessages.delete", "parameters": {"topicId": {"required": true, "type": "string", "location": "path", "format": "int64"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "messageId": {"required": true, "type": "string", "location": "path", "format": "int64"}}, "httpMethod": "DELETE"}}}', true)); + $this->communityTopics = new Google_CommunityTopicsServiceResource($this, $this->serviceName, 'communityTopics', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"isShout": {"type": "boolean", "location": "query"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "request": {"$ref": "CommunityTopic"}, "response": {"$ref": "CommunityTopic"}, "httpMethod": "POST", "path": "communities/{communityId}/topics", "id": "orkut.communityTopics.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"topicId": {"required": true, "type": "string", "location": "path", "format": "int64"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityTopics.get", "httpMethod": "GET", "path": "communities/{communityId}/topics/{topicId}", "response": {"$ref": "CommunityTopic"}}, "list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "maxResults": {"location": "query", "minimum": "1", "type": "integer", "maximum": "100", "format": "uint32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityTopics.list", "httpMethod": "GET", "path": "communities/{communityId}/topics", "response": {"$ref": "CommunityTopicList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/orkut"], "path": "communities/{communityId}/topics/{topicId}", "id": "orkut.communityTopics.delete", "parameters": {"topicId": {"required": true, "type": "string", "location": "path", "format": "int64"}, "communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}}, "httpMethod": "DELETE"}}}', true)); + $this->comments = new Google_CommentsServiceResource($this, $this->serviceName, 'comments', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"activityId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Comment"}, "response": {"$ref": "Comment"}, "httpMethod": "POST", "path": "activities/{activityId}/comments", "id": "orkut.comments.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"commentId": {"required": true, "type": "string", "location": "path"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.comments.get", "httpMethod": "GET", "path": "comments/{commentId}", "response": {"$ref": "Comment"}}, "list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"orderBy": {"default": "DESCENDING_SORT", "enum": ["ascending", "descending"], "type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "activityId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "uint32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.comments.list", "httpMethod": "GET", "path": "activities/{activityId}/comments", "response": {"$ref": "CommentList"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/orkut"], "path": "comments/{commentId}", "id": "orkut.comments.delete", "parameters": {"commentId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->acl = new Google_AclServiceResource($this, $this->serviceName, 'acl', json_decode('{"methods": {"delete": {"scopes": ["https://www.googleapis.com/auth/orkut"], "path": "activities/{activityId}/acl/{userId}", "id": "orkut.acl.delete", "parameters": {"activityId": {"required": true, "type": "string", "location": "path"}, "userId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->communityRelated = new Google_CommunityRelatedServiceResource($this, $this->serviceName, 'communityRelated', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communityRelated.list", "httpMethod": "GET", "path": "communities/{communityId}/related", "response": {"$ref": "CommunityList"}}}}', true)); + $this->scraps = new Google_ScrapsServiceResource($this, $this->serviceName, 'scraps', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "request": {"$ref": "Activity"}, "response": {"$ref": "Activity"}, "httpMethod": "POST", "path": "activities/scraps", "id": "orkut.scraps.insert"}}}', true)); + $this->communityPollVotes = new Google_CommunityPollVotesServiceResource($this, $this->serviceName, 'communityPollVotes', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "pollId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "CommunityPollVote"}, "response": {"$ref": "CommunityPollVote"}, "httpMethod": "POST", "path": "communities/{communityId}/polls/{pollId}/votes", "id": "orkut.communityPollVotes.insert"}}}', true)); + $this->communities = new Google_CommunitiesServiceResource($this, $this->serviceName, 'communities', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"orderBy": {"enum": ["id", "ranked"], "type": "string", "location": "query"}, "userId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"minimum": "1", "type": "integer", "location": "query", "format": "uint32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communities.list", "httpMethod": "GET", "path": "people/{userId}/communities", "response": {"$ref": "CommunityList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "hl": {"type": "string", "location": "query"}}, "id": "orkut.communities.get", "httpMethod": "GET", "path": "communities/{communityId}", "response": {"$ref": "Community"}}}}', true)); + $this->communityFollow = new Google_CommunityFollowServiceResource($this, $this->serviceName, 'communityFollow', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "userId": {"required": true, "type": "string", "location": "path"}}, "id": "orkut.communityFollow.insert", "httpMethod": "POST", "path": "communities/{communityId}/followers/{userId}", "response": {"$ref": "CommunityMembers"}}, "delete": {"scopes": ["https://www.googleapis.com/auth/orkut"], "path": "communities/{communityId}/followers/{userId}", "id": "orkut.communityFollow.delete", "parameters": {"communityId": {"required": true, "type": "integer", "location": "path", "format": "int32"}, "userId": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->activityVisibility = new Google_ActivityVisibilityServiceResource($this, $this->serviceName, 'activityVisibility', json_decode('{"methods": {"patch": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"activityId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Visibility"}, "response": {"$ref": "Visibility"}, "httpMethod": "PATCH", "path": "activities/{activityId}/visibility", "id": "orkut.activityVisibility.patch"}, "update": {"scopes": ["https://www.googleapis.com/auth/orkut"], "parameters": {"activityId": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Visibility"}, "response": {"$ref": "Visibility"}, "httpMethod": "PUT", "path": "activities/{activityId}/visibility", "id": "orkut.activityVisibility.update"}, "get": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"activityId": {"required": true, "type": "string", "location": "path"}}, "id": "orkut.activityVisibility.get", "httpMethod": "GET", "path": "activities/{activityId}/visibility", "response": {"$ref": "Visibility"}}}}', true)); + $this->badges = new Google_BadgesServiceResource($this, $this->serviceName, 'badges', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"userId": {"required": true, "type": "string", "location": "path"}}, "id": "orkut.badges.list", "httpMethod": "GET", "path": "people/{userId}/badges", "response": {"$ref": "BadgeList"}}, "get": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"userId": {"required": true, "type": "string", "location": "path"}, "badgeId": {"required": true, "type": "string", "location": "path", "format": "int64"}}, "id": "orkut.badges.get", "httpMethod": "GET", "path": "people/{userId}/badges/{badgeId}", "response": {"$ref": "Badge"}}}}', true)); + $this->counters = new Google_CountersServiceResource($this, $this->serviceName, 'counters', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/orkut", "https://www.googleapis.com/auth/orkut.readonly"], "parameters": {"userId": {"required": true, "type": "string", "location": "path"}}, "id": "orkut.counters.list", "httpMethod": "GET", "path": "people/{userId}/counters", "response": {"$ref": "Counters"}}}}', true)); + + } +} + +class Google_Acl extends Google_Model { + protected $__itemsType = 'Google_AclItems'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $description; + public $totalParticipants; + public function setItems(/* array(Google_AclItems) */ $items) { + $this->assertIsArray($items, 'Google_AclItems', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setTotalParticipants($totalParticipants) { + $this->totalParticipants = $totalParticipants; + } + public function getTotalParticipants() { + return $this->totalParticipants; + } +} + +class Google_AclItems extends Google_Model { + public $type; + public $id; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_Activity extends Google_Model { + public $kind; + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + public $title; + protected $__objectType = 'Google_ActivityObject'; + protected $__objectDataType = ''; + public $object; + public $updated; + protected $__actorType = 'Google_OrkutAuthorResource'; + protected $__actorDataType = ''; + public $actor; + protected $__accessType = 'Google_Acl'; + protected $__accessDataType = ''; + public $access; + public $verb; + public $published; + public $id; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setObject(Google_ActivityObject $object) { + $this->object = $object; + } + public function getObject() { + return $this->object; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setActor(Google_OrkutAuthorResource $actor) { + $this->actor = $actor; + } + public function getActor() { + return $this->actor; + } + public function setAccess(Google_Acl $access) { + $this->access = $access; + } + public function getAccess() { + return $this->access; + } + public function setVerb($verb) { + $this->verb = $verb; + } + public function getVerb() { + return $this->verb; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ActivityList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Activity'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Activity) */ $items) { + $this->assertIsArray($items, 'Google_Activity', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_ActivityObject extends Google_Model { + public $content; + protected $__itemsType = 'Google_OrkutActivityobjectsResource'; + protected $__itemsDataType = 'array'; + public $items; + protected $__repliesType = 'Google_ActivityObjectReplies'; + protected $__repliesDataType = ''; + public $replies; + public $objectType; + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setItems(/* array(Google_OrkutActivityobjectsResource) */ $items) { + $this->assertIsArray($items, 'Google_OrkutActivityobjectsResource', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setReplies(Google_ActivityObjectReplies $replies) { + $this->replies = $replies; + } + public function getReplies() { + return $this->replies; + } + public function setObjectType($objectType) { + $this->objectType = $objectType; + } + public function getObjectType() { + return $this->objectType; + } +} + +class Google_ActivityObjectReplies extends Google_Model { + public $totalItems; + protected $__itemsType = 'Google_Comment'; + protected $__itemsDataType = 'array'; + public $items; + public $url; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setItems(/* array(Google_Comment) */ $items) { + $this->assertIsArray($items, 'Google_Comment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_Badge extends Google_Model { + public $badgeSmallLogo; + public $kind; + public $description; + public $sponsorLogo; + public $sponsorName; + public $badgeLargeLogo; + public $caption; + public $sponsorUrl; + public $id; + public function setBadgeSmallLogo($badgeSmallLogo) { + $this->badgeSmallLogo = $badgeSmallLogo; + } + public function getBadgeSmallLogo() { + return $this->badgeSmallLogo; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setSponsorLogo($sponsorLogo) { + $this->sponsorLogo = $sponsorLogo; + } + public function getSponsorLogo() { + return $this->sponsorLogo; + } + public function setSponsorName($sponsorName) { + $this->sponsorName = $sponsorName; + } + public function getSponsorName() { + return $this->sponsorName; + } + public function setBadgeLargeLogo($badgeLargeLogo) { + $this->badgeLargeLogo = $badgeLargeLogo; + } + public function getBadgeLargeLogo() { + return $this->badgeLargeLogo; + } + public function setCaption($caption) { + $this->caption = $caption; + } + public function getCaption() { + return $this->caption; + } + public function setSponsorUrl($sponsorUrl) { + $this->sponsorUrl = $sponsorUrl; + } + public function getSponsorUrl() { + return $this->sponsorUrl; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_BadgeList extends Google_Model { + protected $__itemsType = 'Google_Badge'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Badge) */ $items) { + $this->assertIsArray($items, 'Google_Badge', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Comment extends Google_Model { + protected $__inReplyToType = 'Google_CommentInReplyTo'; + protected $__inReplyToDataType = ''; + public $inReplyTo; + public $kind; + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + protected $__actorType = 'Google_OrkutAuthorResource'; + protected $__actorDataType = ''; + public $actor; + public $content; + public $published; + public $id; + public function setInReplyTo(Google_CommentInReplyTo $inReplyTo) { + $this->inReplyTo = $inReplyTo; + } + public function getInReplyTo() { + return $this->inReplyTo; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setActor(Google_OrkutAuthorResource $actor) { + $this->actor = $actor; + } + public function getActor() { + return $this->actor; + } + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommentInReplyTo extends Google_Model { + public $type; + public $href; + public $ref; + public $rel; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setRef($ref) { + $this->ref = $ref; + } + public function getRef() { + return $this->ref; + } + public function setRel($rel) { + $this->rel = $rel; + } + public function getRel() { + return $this->rel; + } +} + +class Google_CommentList extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Comment'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $previousPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Comment) */ $items) { + $this->assertIsArray($items, 'Google_Comment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setPreviousPageToken($previousPageToken) { + $this->previousPageToken = $previousPageToken; + } + public function getPreviousPageToken() { + return $this->previousPageToken; + } +} + +class Google_Community extends Google_Model { + public $category; + public $kind; + public $member_count; + public $description; + public $language; + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + public $creation_date; + protected $__ownerType = 'Google_OrkutAuthorResource'; + protected $__ownerDataType = ''; + public $owner; + protected $__moderatorsType = 'Google_OrkutAuthorResource'; + protected $__moderatorsDataType = 'array'; + public $moderators; + public $location; + protected $__co_ownersType = 'Google_OrkutAuthorResource'; + protected $__co_ownersDataType = 'array'; + public $co_owners; + public $photo_url; + public $id; + public $name; + public function setCategory($category) { + $this->category = $category; + } + public function getCategory() { + return $this->category; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setMember_count($member_count) { + $this->member_count = $member_count; + } + public function getMember_count() { + return $this->member_count; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setCreation_date($creation_date) { + $this->creation_date = $creation_date; + } + public function getCreation_date() { + return $this->creation_date; + } + public function setOwner(Google_OrkutAuthorResource $owner) { + $this->owner = $owner; + } + public function getOwner() { + return $this->owner; + } + public function setModerators(/* array(Google_OrkutAuthorResource) */ $moderators) { + $this->assertIsArray($moderators, 'Google_OrkutAuthorResource', __METHOD__); + $this->moderators = $moderators; + } + public function getModerators() { + return $this->moderators; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setCo_owners(/* array(Google_OrkutAuthorResource) */ $co_owners) { + $this->assertIsArray($co_owners, 'Google_OrkutAuthorResource', __METHOD__); + $this->co_owners = $co_owners; + } + public function getCo_owners() { + return $this->co_owners; + } + public function setPhoto_url($photo_url) { + $this->photo_url = $photo_url; + } + public function getPhoto_url() { + return $this->photo_url; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_CommunityList extends Google_Model { + protected $__itemsType = 'Google_Community'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Community) */ $items) { + $this->assertIsArray($items, 'Google_Community', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_CommunityMembers extends Google_Model { + protected $__communityMembershipStatusType = 'Google_CommunityMembershipStatus'; + protected $__communityMembershipStatusDataType = ''; + public $communityMembershipStatus; + protected $__personType = 'Google_OrkutActivitypersonResource'; + protected $__personDataType = ''; + public $person; + public $kind; + public function setCommunityMembershipStatus(Google_CommunityMembershipStatus $communityMembershipStatus) { + $this->communityMembershipStatus = $communityMembershipStatus; + } + public function getCommunityMembershipStatus() { + return $this->communityMembershipStatus; + } + public function setPerson(Google_OrkutActivitypersonResource $person) { + $this->person = $person; + } + public function getPerson() { + return $this->person; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_CommunityMembersList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_CommunityMembers'; + protected $__itemsDataType = 'array'; + public $items; + public $prevPageToken; + public $lastPageToken; + public $firstPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_CommunityMembers) */ $items) { + $this->assertIsArray($items, 'Google_CommunityMembers', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setPrevPageToken($prevPageToken) { + $this->prevPageToken = $prevPageToken; + } + public function getPrevPageToken() { + return $this->prevPageToken; + } + public function setLastPageToken($lastPageToken) { + $this->lastPageToken = $lastPageToken; + } + public function getLastPageToken() { + return $this->lastPageToken; + } + public function setFirstPageToken($firstPageToken) { + $this->firstPageToken = $firstPageToken; + } + public function getFirstPageToken() { + return $this->firstPageToken; + } +} + +class Google_CommunityMembershipStatus extends Google_Model { + public $status; + public $isFollowing; + public $isRestoreAvailable; + public $isModerator; + public $kind; + public $isCoOwner; + public $canCreatePoll; + public $canShout; + public $isOwner; + public $canCreateTopic; + public $isTakebackAvailable; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setIsFollowing($isFollowing) { + $this->isFollowing = $isFollowing; + } + public function getIsFollowing() { + return $this->isFollowing; + } + public function setIsRestoreAvailable($isRestoreAvailable) { + $this->isRestoreAvailable = $isRestoreAvailable; + } + public function getIsRestoreAvailable() { + return $this->isRestoreAvailable; + } + public function setIsModerator($isModerator) { + $this->isModerator = $isModerator; + } + public function getIsModerator() { + return $this->isModerator; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setIsCoOwner($isCoOwner) { + $this->isCoOwner = $isCoOwner; + } + public function getIsCoOwner() { + return $this->isCoOwner; + } + public function setCanCreatePoll($canCreatePoll) { + $this->canCreatePoll = $canCreatePoll; + } + public function getCanCreatePoll() { + return $this->canCreatePoll; + } + public function setCanShout($canShout) { + $this->canShout = $canShout; + } + public function getCanShout() { + return $this->canShout; + } + public function setIsOwner($isOwner) { + $this->isOwner = $isOwner; + } + public function getIsOwner() { + return $this->isOwner; + } + public function setCanCreateTopic($canCreateTopic) { + $this->canCreateTopic = $canCreateTopic; + } + public function getCanCreateTopic() { + return $this->canCreateTopic; + } + public function setIsTakebackAvailable($isTakebackAvailable) { + $this->isTakebackAvailable = $isTakebackAvailable; + } + public function getIsTakebackAvailable() { + return $this->isTakebackAvailable; + } +} + +class Google_CommunityMessage extends Google_Model { + public $body; + public $kind; + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + protected $__authorType = 'Google_OrkutAuthorResource'; + protected $__authorDataType = ''; + public $author; + public $id; + public $addedDate; + public $isSpam; + public $subject; + public function setBody($body) { + $this->body = $body; + } + public function getBody() { + return $this->body; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setAuthor(Google_OrkutAuthorResource $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAddedDate($addedDate) { + $this->addedDate = $addedDate; + } + public function getAddedDate() { + return $this->addedDate; + } + public function setIsSpam($isSpam) { + $this->isSpam = $isSpam; + } + public function getIsSpam() { + return $this->isSpam; + } + public function setSubject($subject) { + $this->subject = $subject; + } + public function getSubject() { + return $this->subject; + } +} + +class Google_CommunityMessageList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_CommunityMessage'; + protected $__itemsDataType = 'array'; + public $items; + public $prevPageToken; + public $lastPageToken; + public $firstPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_CommunityMessage) */ $items) { + $this->assertIsArray($items, 'Google_CommunityMessage', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setPrevPageToken($prevPageToken) { + $this->prevPageToken = $prevPageToken; + } + public function getPrevPageToken() { + return $this->prevPageToken; + } + public function setLastPageToken($lastPageToken) { + $this->lastPageToken = $lastPageToken; + } + public function getLastPageToken() { + return $this->lastPageToken; + } + public function setFirstPageToken($firstPageToken) { + $this->firstPageToken = $firstPageToken; + } + public function getFirstPageToken() { + return $this->firstPageToken; + } +} + +class Google_CommunityPoll extends Google_Model { + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + public $isMultipleAnswers; + protected $__imageType = 'Google_CommunityPollImage'; + protected $__imageDataType = ''; + public $image; + public $endingTime; + public $isVotingAllowedForNonMembers; + public $isSpam; + public $totalNumberOfVotes; + protected $__authorType = 'Google_OrkutAuthorResource'; + protected $__authorDataType = ''; + public $author; + public $question; + public $id; + public $isRestricted; + public $communityId; + public $isUsersVotePublic; + public $lastUpdate; + public $description; + public $votedOptions; + public $isOpenForVoting; + public $isClosed; + public $hasVoted; + public $kind; + public $creationTime; + protected $__optionsType = 'Google_OrkutCommunitypolloptionResource'; + protected $__optionsDataType = 'array'; + public $options; + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setIsMultipleAnswers($isMultipleAnswers) { + $this->isMultipleAnswers = $isMultipleAnswers; + } + public function getIsMultipleAnswers() { + return $this->isMultipleAnswers; + } + public function setImage(Google_CommunityPollImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setEndingTime($endingTime) { + $this->endingTime = $endingTime; + } + public function getEndingTime() { + return $this->endingTime; + } + public function setIsVotingAllowedForNonMembers($isVotingAllowedForNonMembers) { + $this->isVotingAllowedForNonMembers = $isVotingAllowedForNonMembers; + } + public function getIsVotingAllowedForNonMembers() { + return $this->isVotingAllowedForNonMembers; + } + public function setIsSpam($isSpam) { + $this->isSpam = $isSpam; + } + public function getIsSpam() { + return $this->isSpam; + } + public function setTotalNumberOfVotes($totalNumberOfVotes) { + $this->totalNumberOfVotes = $totalNumberOfVotes; + } + public function getTotalNumberOfVotes() { + return $this->totalNumberOfVotes; + } + public function setAuthor(Google_OrkutAuthorResource $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setQuestion($question) { + $this->question = $question; + } + public function getQuestion() { + return $this->question; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setIsRestricted($isRestricted) { + $this->isRestricted = $isRestricted; + } + public function getIsRestricted() { + return $this->isRestricted; + } + public function setCommunityId($communityId) { + $this->communityId = $communityId; + } + public function getCommunityId() { + return $this->communityId; + } + public function setIsUsersVotePublic($isUsersVotePublic) { + $this->isUsersVotePublic = $isUsersVotePublic; + } + public function getIsUsersVotePublic() { + return $this->isUsersVotePublic; + } + public function setLastUpdate($lastUpdate) { + $this->lastUpdate = $lastUpdate; + } + public function getLastUpdate() { + return $this->lastUpdate; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setVotedOptions(/* array(Google_int) */ $votedOptions) { + $this->assertIsArray($votedOptions, 'Google_int', __METHOD__); + $this->votedOptions = $votedOptions; + } + public function getVotedOptions() { + return $this->votedOptions; + } + public function setIsOpenForVoting($isOpenForVoting) { + $this->isOpenForVoting = $isOpenForVoting; + } + public function getIsOpenForVoting() { + return $this->isOpenForVoting; + } + public function setIsClosed($isClosed) { + $this->isClosed = $isClosed; + } + public function getIsClosed() { + return $this->isClosed; + } + public function setHasVoted($hasVoted) { + $this->hasVoted = $hasVoted; + } + public function getHasVoted() { + return $this->hasVoted; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCreationTime($creationTime) { + $this->creationTime = $creationTime; + } + public function getCreationTime() { + return $this->creationTime; + } + public function setOptions(/* array(Google_OrkutCommunitypolloptionResource) */ $options) { + $this->assertIsArray($options, 'Google_OrkutCommunitypolloptionResource', __METHOD__); + $this->options = $options; + } + public function getOptions() { + return $this->options; + } +} + +class Google_CommunityPollComment extends Google_Model { + public $body; + public $kind; + public $addedDate; + public $id; + protected $__authorType = 'Google_OrkutAuthorResource'; + protected $__authorDataType = ''; + public $author; + public function setBody($body) { + $this->body = $body; + } + public function getBody() { + return $this->body; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setAddedDate($addedDate) { + $this->addedDate = $addedDate; + } + public function getAddedDate() { + return $this->addedDate; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAuthor(Google_OrkutAuthorResource $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } +} + +class Google_CommunityPollCommentList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_CommunityPollComment'; + protected $__itemsDataType = 'array'; + public $items; + public $prevPageToken; + public $lastPageToken; + public $firstPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_CommunityPollComment) */ $items) { + $this->assertIsArray($items, 'Google_CommunityPollComment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setPrevPageToken($prevPageToken) { + $this->prevPageToken = $prevPageToken; + } + public function getPrevPageToken() { + return $this->prevPageToken; + } + public function setLastPageToken($lastPageToken) { + $this->lastPageToken = $lastPageToken; + } + public function getLastPageToken() { + return $this->lastPageToken; + } + public function setFirstPageToken($firstPageToken) { + $this->firstPageToken = $firstPageToken; + } + public function getFirstPageToken() { + return $this->firstPageToken; + } +} + +class Google_CommunityPollImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_CommunityPollList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_CommunityPoll'; + protected $__itemsDataType = 'array'; + public $items; + public $prevPageToken; + public $lastPageToken; + public $firstPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_CommunityPoll) */ $items) { + $this->assertIsArray($items, 'Google_CommunityPoll', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setPrevPageToken($prevPageToken) { + $this->prevPageToken = $prevPageToken; + } + public function getPrevPageToken() { + return $this->prevPageToken; + } + public function setLastPageToken($lastPageToken) { + $this->lastPageToken = $lastPageToken; + } + public function getLastPageToken() { + return $this->lastPageToken; + } + public function setFirstPageToken($firstPageToken) { + $this->firstPageToken = $firstPageToken; + } + public function getFirstPageToken() { + return $this->firstPageToken; + } +} + +class Google_CommunityPollVote extends Google_Model { + public $kind; + public $optionIds; + public $isVotevisible; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setOptionIds(/* array(Google_int) */ $optionIds) { + $this->assertIsArray($optionIds, 'Google_int', __METHOD__); + $this->optionIds = $optionIds; + } + public function getOptionIds() { + return $this->optionIds; + } + public function setIsVotevisible($isVotevisible) { + $this->isVotevisible = $isVotevisible; + } + public function getIsVotevisible() { + return $this->isVotevisible; + } +} + +class Google_CommunityTopic extends Google_Model { + public $body; + public $lastUpdate; + public $kind; + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + protected $__authorType = 'Google_OrkutAuthorResource'; + protected $__authorDataType = ''; + public $author; + public $title; + protected $__messagesType = 'Google_CommunityMessage'; + protected $__messagesDataType = 'array'; + public $messages; + public $latestMessageSnippet; + public $isClosed; + public $numberOfReplies; + public $id; + public function setBody($body) { + $this->body = $body; + } + public function getBody() { + return $this->body; + } + public function setLastUpdate($lastUpdate) { + $this->lastUpdate = $lastUpdate; + } + public function getLastUpdate() { + return $this->lastUpdate; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setAuthor(Google_OrkutAuthorResource $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setMessages(/* array(Google_CommunityMessage) */ $messages) { + $this->assertIsArray($messages, 'Google_CommunityMessage', __METHOD__); + $this->messages = $messages; + } + public function getMessages() { + return $this->messages; + } + public function setLatestMessageSnippet($latestMessageSnippet) { + $this->latestMessageSnippet = $latestMessageSnippet; + } + public function getLatestMessageSnippet() { + return $this->latestMessageSnippet; + } + public function setIsClosed($isClosed) { + $this->isClosed = $isClosed; + } + public function getIsClosed() { + return $this->isClosed; + } + public function setNumberOfReplies($numberOfReplies) { + $this->numberOfReplies = $numberOfReplies; + } + public function getNumberOfReplies() { + return $this->numberOfReplies; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommunityTopicList extends Google_Model { + public $nextPageToken; + public $kind; + protected $__itemsType = 'Google_CommunityTopic'; + protected $__itemsDataType = 'array'; + public $items; + public $prevPageToken; + public $lastPageToken; + public $firstPageToken; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItems(/* array(Google_CommunityTopic) */ $items) { + $this->assertIsArray($items, 'Google_CommunityTopic', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setPrevPageToken($prevPageToken) { + $this->prevPageToken = $prevPageToken; + } + public function getPrevPageToken() { + return $this->prevPageToken; + } + public function setLastPageToken($lastPageToken) { + $this->lastPageToken = $lastPageToken; + } + public function getLastPageToken() { + return $this->lastPageToken; + } + public function setFirstPageToken($firstPageToken) { + $this->firstPageToken = $firstPageToken; + } + public function getFirstPageToken() { + return $this->firstPageToken; + } +} + +class Google_Counters extends Google_Model { + protected $__itemsType = 'Google_OrkutCounterResource'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_OrkutCounterResource) */ $items) { + $this->assertIsArray($items, 'Google_OrkutCounterResource', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_OrkutActivityobjectsResource extends Google_Model { + public $displayName; + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + protected $__communityType = 'Google_Community'; + protected $__communityDataType = ''; + public $community; + public $content; + protected $__personType = 'Google_OrkutActivitypersonResource'; + protected $__personDataType = ''; + public $person; + public $id; + public $objectType; + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setCommunity(Google_Community $community) { + $this->community = $community; + } + public function getCommunity() { + return $this->community; + } + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setPerson(Google_OrkutActivitypersonResource $person) { + $this->person = $person; + } + public function getPerson() { + return $this->person; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setObjectType($objectType) { + $this->objectType = $objectType; + } + public function getObjectType() { + return $this->objectType; + } +} + +class Google_OrkutActivitypersonResource extends Google_Model { + protected $__nameType = 'Google_OrkutActivitypersonResourceName'; + protected $__nameDataType = ''; + public $name; + public $url; + public $gender; + protected $__imageType = 'Google_OrkutActivitypersonResourceImage'; + protected $__imageDataType = ''; + public $image; + public $birthday; + public $id; + public function setName(Google_OrkutActivitypersonResourceName $name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setGender($gender) { + $this->gender = $gender; + } + public function getGender() { + return $this->gender; + } + public function setImage(Google_OrkutActivitypersonResourceImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setBirthday($birthday) { + $this->birthday = $birthday; + } + public function getBirthday() { + return $this->birthday; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_OrkutActivitypersonResourceImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_OrkutActivitypersonResourceName extends Google_Model { + public $givenName; + public $familyName; + public function setGivenName($givenName) { + $this->givenName = $givenName; + } + public function getGivenName() { + return $this->givenName; + } + public function setFamilyName($familyName) { + $this->familyName = $familyName; + } + public function getFamilyName() { + return $this->familyName; + } +} + +class Google_OrkutAuthorResource extends Google_Model { + public $url; + protected $__imageType = 'Google_OrkutAuthorResourceImage'; + protected $__imageDataType = ''; + public $image; + public $displayName; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_OrkutAuthorResourceImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_OrkutAuthorResourceImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_OrkutCommunitypolloptionResource extends Google_Model { + protected $__imageType = 'Google_OrkutCommunitypolloptionResourceImage'; + protected $__imageDataType = ''; + public $image; + public $optionId; + public $description; + public $numberOfVotes; + public function setImage(Google_OrkutCommunitypolloptionResourceImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setOptionId($optionId) { + $this->optionId = $optionId; + } + public function getOptionId() { + return $this->optionId; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setNumberOfVotes($numberOfVotes) { + $this->numberOfVotes = $numberOfVotes; + } + public function getNumberOfVotes() { + return $this->numberOfVotes; + } +} + +class Google_OrkutCommunitypolloptionResourceImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_OrkutCounterResource extends Google_Model { + public $total; + protected $__linkType = 'Google_OrkutLinkResource'; + protected $__linkDataType = ''; + public $link; + public $name; + public function setTotal($total) { + $this->total = $total; + } + public function getTotal() { + return $this->total; + } + public function setLink(Google_OrkutLinkResource $link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_OrkutLinkResource extends Google_Model { + public $href; + public $type; + public $rel; + public $title; + public function setHref($href) { + $this->href = $href; + } + public function getHref() { + return $this->href; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setRel($rel) { + $this->rel = $rel; + } + public function getRel() { + return $this->rel; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } +} + +class Google_Visibility extends Google_Model { + public $kind; + public $visibility; + protected $__linksType = 'Google_OrkutLinkResource'; + protected $__linksDataType = 'array'; + public $links; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setVisibility($visibility) { + $this->visibility = $visibility; + } + public function getVisibility() { + return $this->visibility; + } + public function setLinks(/* array(Google_OrkutLinkResource) */ $links) { + $this->assertIsArray($links, 'Google_OrkutLinkResource', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } +} diff --git a/modules/oauth/src/google/contrib/Google_PagespeedonlineService.php b/modules/oauth/src/google/contrib/Google_PagespeedonlineService.php new file mode 100644 index 0000000..1e582bc --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_PagespeedonlineService.php @@ -0,0 +1,474 @@ + + * $pagespeedonlineService = new Google_PagespeedonlineService(...); + * $pagespeedapi = $pagespeedonlineService->pagespeedapi; + * + */ + class Google_PagespeedapiServiceResource extends Google_ServiceResource { + + + /** + * Runs Page Speed analysis on the page at the specified URL, and returns a Page Speed score, a list + * of suggestions to make that page faster, and other information. (pagespeedapi.runpagespeed) + * + * @param string $url The URL to fetch and analyze + * @param array $optParams Optional parameters. + * + * @opt_param string locale The locale used to localize formatted results + * @opt_param string rule A Page Speed rule to run; if none are given, all rules are run + * @opt_param string strategy The analysis strategy to use + * @return Google_Result + */ + public function runpagespeed($url, $optParams = array()) { + $params = array('url' => $url); + $params = array_merge($params, $optParams); + $data = $this->__call('runpagespeed', array($params)); + if ($this->useObjects()) { + return new Google_Result($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Pagespeedonline (v1). + * + *

+ * Lets you analyze the performance of a web page and get tailored suggestions to make that page faster. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_PagespeedonlineService extends Google_Service { + public $pagespeedapi; + /** + * Constructs the internal representation of the Pagespeedonline service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'pagespeedonline/v1/'; + $this->version = 'v1'; + $this->serviceName = 'pagespeedonline'; + + $client->addService($this->serviceName, $this->version); + $this->pagespeedapi = new Google_PagespeedapiServiceResource($this, $this->serviceName, 'pagespeedapi', json_decode('{"methods": {"runpagespeed": {"httpMethod": "GET", "response": {"$ref": "Result"}, "id": "pagespeedonline.pagespeedapi.runpagespeed", "parameters": {"locale": {"type": "string", "location": "query"}, "url": {"required": true, "type": "string", "location": "query"}, "rule": {"repeated": true, "type": "string", "location": "query"}, "strategy": {"enum": ["desktop", "mobile"], "type": "string", "location": "query"}}, "path": "runPagespeed"}}}', true)); + + } +} + +class Google_Result extends Google_Model { + public $kind; + protected $__formattedResultsType = 'Google_ResultFormattedResults'; + protected $__formattedResultsDataType = ''; + public $formattedResults; + public $title; + protected $__versionType = 'Google_ResultVersion'; + protected $__versionDataType = ''; + public $version; + public $score; + public $responseCode; + public $invalidRules; + protected $__pageStatsType = 'Google_ResultPageStats'; + protected $__pageStatsDataType = ''; + public $pageStats; + public $id; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setFormattedResults(Google_ResultFormattedResults $formattedResults) { + $this->formattedResults = $formattedResults; + } + public function getFormattedResults() { + return $this->formattedResults; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setVersion(Google_ResultVersion $version) { + $this->version = $version; + } + public function getVersion() { + return $this->version; + } + public function setScore($score) { + $this->score = $score; + } + public function getScore() { + return $this->score; + } + public function setResponseCode($responseCode) { + $this->responseCode = $responseCode; + } + public function getResponseCode() { + return $this->responseCode; + } + public function setInvalidRules(/* array(Google_string) */ $invalidRules) { + $this->assertIsArray($invalidRules, 'Google_string', __METHOD__); + $this->invalidRules = $invalidRules; + } + public function getInvalidRules() { + return $this->invalidRules; + } + public function setPageStats(Google_ResultPageStats $pageStats) { + $this->pageStats = $pageStats; + } + public function getPageStats() { + return $this->pageStats; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ResultFormattedResults extends Google_Model { + public $locale; + protected $__ruleResultsType = 'Google_ResultFormattedResultsRuleResults'; + protected $__ruleResultsDataType = 'map'; + public $ruleResults; + public function setLocale($locale) { + $this->locale = $locale; + } + public function getLocale() { + return $this->locale; + } + public function setRuleResults(Google_ResultFormattedResultsRuleResults $ruleResults) { + $this->ruleResults = $ruleResults; + } + public function getRuleResults() { + return $this->ruleResults; + } +} + +class Google_ResultFormattedResultsRuleResults extends Google_Model { + public $localizedRuleName; + protected $__urlBlocksType = 'Google_ResultFormattedResultsRuleResultsUrlBlocks'; + protected $__urlBlocksDataType = 'array'; + public $urlBlocks; + public $ruleScore; + public $ruleImpact; + public function setLocalizedRuleName($localizedRuleName) { + $this->localizedRuleName = $localizedRuleName; + } + public function getLocalizedRuleName() { + return $this->localizedRuleName; + } + public function setUrlBlocks(/* array(Google_ResultFormattedResultsRuleResultsUrlBlocks) */ $urlBlocks) { + $this->assertIsArray($urlBlocks, 'Google_ResultFormattedResultsRuleResultsUrlBlocks', __METHOD__); + $this->urlBlocks = $urlBlocks; + } + public function getUrlBlocks() { + return $this->urlBlocks; + } + public function setRuleScore($ruleScore) { + $this->ruleScore = $ruleScore; + } + public function getRuleScore() { + return $this->ruleScore; + } + public function setRuleImpact($ruleImpact) { + $this->ruleImpact = $ruleImpact; + } + public function getRuleImpact() { + return $this->ruleImpact; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocks extends Google_Model { + protected $__headerType = 'Google_ResultFormattedResultsRuleResultsUrlBlocksHeader'; + protected $__headerDataType = ''; + public $header; + protected $__urlsType = 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrls'; + protected $__urlsDataType = 'array'; + public $urls; + public function setHeader(Google_ResultFormattedResultsRuleResultsUrlBlocksHeader $header) { + $this->header = $header; + } + public function getHeader() { + return $this->header; + } + public function setUrls(/* array(Google_ResultFormattedResultsRuleResultsUrlBlocksUrls) */ $urls) { + $this->assertIsArray($urls, 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrls', __METHOD__); + $this->urls = $urls; + } + public function getUrls() { + return $this->urls; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocksHeader extends Google_Model { + protected $__argsType = 'Google_ResultFormattedResultsRuleResultsUrlBlocksHeaderArgs'; + protected $__argsDataType = 'array'; + public $args; + public $format; + public function setArgs(/* array(Google_ResultFormattedResultsRuleResultsUrlBlocksHeaderArgs) */ $args) { + $this->assertIsArray($args, 'Google_ResultFormattedResultsRuleResultsUrlBlocksHeaderArgs', __METHOD__); + $this->args = $args; + } + public function getArgs() { + return $this->args; + } + public function setFormat($format) { + $this->format = $format; + } + public function getFormat() { + return $this->format; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocksHeaderArgs extends Google_Model { + public $type; + public $value; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocksUrls extends Google_Model { + protected $__detailsType = 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetails'; + protected $__detailsDataType = 'array'; + public $details; + protected $__resultType = 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsResult'; + protected $__resultDataType = ''; + public $result; + public function setDetails(/* array(Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetails) */ $details) { + $this->assertIsArray($details, 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetails', __METHOD__); + $this->details = $details; + } + public function getDetails() { + return $this->details; + } + public function setResult(Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsResult $result) { + $this->result = $result; + } + public function getResult() { + return $this->result; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetails extends Google_Model { + protected $__argsType = 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetailsArgs'; + protected $__argsDataType = 'array'; + public $args; + public $format; + public function setArgs(/* array(Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetailsArgs) */ $args) { + $this->assertIsArray($args, 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetailsArgs', __METHOD__); + $this->args = $args; + } + public function getArgs() { + return $this->args; + } + public function setFormat($format) { + $this->format = $format; + } + public function getFormat() { + return $this->format; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsDetailsArgs extends Google_Model { + public $type; + public $value; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsResult extends Google_Model { + protected $__argsType = 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsResultArgs'; + protected $__argsDataType = 'array'; + public $args; + public $format; + public function setArgs(/* array(Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsResultArgs) */ $args) { + $this->assertIsArray($args, 'Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsResultArgs', __METHOD__); + $this->args = $args; + } + public function getArgs() { + return $this->args; + } + public function setFormat($format) { + $this->format = $format; + } + public function getFormat() { + return $this->format; + } +} + +class Google_ResultFormattedResultsRuleResultsUrlBlocksUrlsResultArgs extends Google_Model { + public $type; + public $value; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_ResultPageStats extends Google_Model { + public $otherResponseBytes; + public $flashResponseBytes; + public $totalRequestBytes; + public $numberCssResources; + public $numberResources; + public $cssResponseBytes; + public $javascriptResponseBytes; + public $imageResponseBytes; + public $numberHosts; + public $numberStaticResources; + public $htmlResponseBytes; + public $numberJsResources; + public $textResponseBytes; + public function setOtherResponseBytes($otherResponseBytes) { + $this->otherResponseBytes = $otherResponseBytes; + } + public function getOtherResponseBytes() { + return $this->otherResponseBytes; + } + public function setFlashResponseBytes($flashResponseBytes) { + $this->flashResponseBytes = $flashResponseBytes; + } + public function getFlashResponseBytes() { + return $this->flashResponseBytes; + } + public function setTotalRequestBytes($totalRequestBytes) { + $this->totalRequestBytes = $totalRequestBytes; + } + public function getTotalRequestBytes() { + return $this->totalRequestBytes; + } + public function setNumberCssResources($numberCssResources) { + $this->numberCssResources = $numberCssResources; + } + public function getNumberCssResources() { + return $this->numberCssResources; + } + public function setNumberResources($numberResources) { + $this->numberResources = $numberResources; + } + public function getNumberResources() { + return $this->numberResources; + } + public function setCssResponseBytes($cssResponseBytes) { + $this->cssResponseBytes = $cssResponseBytes; + } + public function getCssResponseBytes() { + return $this->cssResponseBytes; + } + public function setJavascriptResponseBytes($javascriptResponseBytes) { + $this->javascriptResponseBytes = $javascriptResponseBytes; + } + public function getJavascriptResponseBytes() { + return $this->javascriptResponseBytes; + } + public function setImageResponseBytes($imageResponseBytes) { + $this->imageResponseBytes = $imageResponseBytes; + } + public function getImageResponseBytes() { + return $this->imageResponseBytes; + } + public function setNumberHosts($numberHosts) { + $this->numberHosts = $numberHosts; + } + public function getNumberHosts() { + return $this->numberHosts; + } + public function setNumberStaticResources($numberStaticResources) { + $this->numberStaticResources = $numberStaticResources; + } + public function getNumberStaticResources() { + return $this->numberStaticResources; + } + public function setHtmlResponseBytes($htmlResponseBytes) { + $this->htmlResponseBytes = $htmlResponseBytes; + } + public function getHtmlResponseBytes() { + return $this->htmlResponseBytes; + } + public function setNumberJsResources($numberJsResources) { + $this->numberJsResources = $numberJsResources; + } + public function getNumberJsResources() { + return $this->numberJsResources; + } + public function setTextResponseBytes($textResponseBytes) { + $this->textResponseBytes = $textResponseBytes; + } + public function getTextResponseBytes() { + return $this->textResponseBytes; + } +} + +class Google_ResultVersion extends Google_Model { + public $major; + public $minor; + public function setMajor($major) { + $this->major = $major; + } + public function getMajor() { + return $this->major; + } + public function setMinor($minor) { + $this->minor = $minor; + } + public function getMinor() { + return $this->minor; + } +} diff --git a/modules/oauth/src/google/contrib/Google_PlusMomentsService.php b/modules/oauth/src/google/contrib/Google_PlusMomentsService.php new file mode 100644 index 0000000..b6a5828 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_PlusMomentsService.php @@ -0,0 +1,567 @@ + + * $plusService = new Google_PlusMomentsService(...); + * $moments = $plusService->moments; + * + */ + class Google_MomentsServiceResource extends Google_ServiceResource { + + + /** + * Record a user activity (e.g Bill watched a video on Youtube) (moments.insert) + * + * @param string $userId The ID of the user to get activities for. The special value "me" can be used to indicate the authenticated user. + * @param string $collection The collection to which to write moments. + * @param Google_Moment $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool debug Return the moment as written. Should be used only for debugging. + * @return Google_Moment + */ + public function insert($userId, $collection, Google_Moment $postBody, $optParams = array()) { + $params = array('userId' => $userId, 'collection' => $collection, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Moment($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Plus (v1moments). + * + *

+ * The Google+ API enables developers to build on top of the Google+ platform. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_PlusMomentsService extends Google_Service { + public $moments; + /** + * Constructs the internal representation of the Plus service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'plus/v1moments/people/'; + $this->version = 'v1moments'; + $this->serviceName = 'plus'; + + $client->addService($this->serviceName, $this->version); + $this->moments = new Google_MomentsServiceResource($this, $this->serviceName, 'moments', + json_decode('{"methods": {"insert": {"parameters": {"debug": {"type": "boolean", "location": "query"}, "userId": {"required": true, "type": "string", "location": "path"}, "collection": {"required": true, "type": "string", "location": "path", "enum": ["vault"]}}, "request": {"$ref": "Moment"}, "response": {"$ref": "Moment"}, "httpMethod": "POST", "path": "{userId}/moments/{collection}", "id": "plus.moments.insert"}}}', true)); + + } +} + +class Google_ItemScope extends Google_Model { + public $startDate; + public $endDate; + public $text; + public $image; + protected $__addressType = 'Google_ItemScope'; + protected $__addressDataType = ''; + public $address; + public $birthDate; + public $datePublished; + public $addressLocality; + public $duration; + public $additionalName; + public $worstRating; + protected $__contributorType = 'Google_ItemScope'; + protected $__contributorDataType = 'array'; + public $contributor; + public $thumbnailUrl; + public $id; + public $postOfficeBoxNumber; + protected $__attendeesType = 'Google_ItemScope'; + protected $__attendeesDataType = 'array'; + public $attendees; + protected $__authorType = 'Google_ItemScope'; + protected $__authorDataType = 'array'; + public $author; + protected $__associated_mediaType = 'Google_ItemScope'; + protected $__associated_mediaDataType = 'array'; + public $associated_media; + public $bestRating; + public $addressCountry; + public $width; + public $streetAddress; + protected $__locationType = 'Google_ItemScope'; + protected $__locationDataType = ''; + public $location; + public $latitude; + protected $__byArtistType = 'Google_ItemScope'; + protected $__byArtistDataType = ''; + public $byArtist; + public $type; + public $dateModified; + public $contentSize; + public $contentUrl; + protected $__partOfTVSeriesType = 'Google_ItemScope'; + protected $__partOfTVSeriesDataType = ''; + public $partOfTVSeries; + public $description; + public $familyName; + public $kind; + public $dateCreated; + public $postalCode; + public $attendeeCount; + protected $__inAlbumType = 'Google_ItemScope'; + protected $__inAlbumDataType = ''; + public $inAlbum; + public $addressRegion; + public $height; + protected $__geoType = 'Google_ItemScope'; + protected $__geoDataType = ''; + public $geo; + public $embedUrl; + public $tickerSymbol; + public $playerType; + protected $__aboutType = 'Google_ItemScope'; + protected $__aboutDataType = ''; + public $about; + public $givenName; + public $name; + protected $__performersType = 'Google_ItemScope'; + protected $__performersDataType = 'array'; + public $performers; + public $url; + public $gender; + public $longitude; + protected $__thumbnailType = 'Google_ItemScope'; + protected $__thumbnailDataType = ''; + public $thumbnail; + public $caption; + public $ratingValue; + protected $__reviewRatingType = 'Google_ItemScope'; + protected $__reviewRatingDataType = ''; + public $reviewRating; + protected $__audioType = 'Google_ItemScope'; + protected $__audioDataType = ''; + public $audio; + public function setStartDate($startDate) { + $this->startDate = $startDate; + } + public function getStartDate() { + return $this->startDate; + } + public function setEndDate($endDate) { + $this->endDate = $endDate; + } + public function getEndDate() { + return $this->endDate; + } + public function setText($text) { + $this->text = $text; + } + public function getText() { + return $this->text; + } + public function setImage($image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setAddress(Google_ItemScope $address) { + $this->address = $address; + } + public function getAddress() { + return $this->address; + } + public function setBirthDate($birthDate) { + $this->birthDate = $birthDate; + } + public function getBirthDate() { + return $this->birthDate; + } + public function setDatePublished($datePublished) { + $this->datePublished = $datePublished; + } + public function getDatePublished() { + return $this->datePublished; + } + public function setAddressLocality($addressLocality) { + $this->addressLocality = $addressLocality; + } + public function getAddressLocality() { + return $this->addressLocality; + } + public function setDuration($duration) { + $this->duration = $duration; + } + public function getDuration() { + return $this->duration; + } + public function setAdditionalName(/* array(Google_string) */ $additionalName) { + $this->assertIsArray($additionalName, 'Google_string', __METHOD__); + $this->additionalName = $additionalName; + } + public function getAdditionalName() { + return $this->additionalName; + } + public function setWorstRating($worstRating) { + $this->worstRating = $worstRating; + } + public function getWorstRating() { + return $this->worstRating; + } + public function setContributor(/* array(Google_ItemScope) */ $contributor) { + $this->assertIsArray($contributor, 'Google_ItemScope', __METHOD__); + $this->contributor = $contributor; + } + public function getContributor() { + return $this->contributor; + } + public function setThumbnailUrl($thumbnailUrl) { + $this->thumbnailUrl = $thumbnailUrl; + } + public function getThumbnailUrl() { + return $this->thumbnailUrl; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setPostOfficeBoxNumber($postOfficeBoxNumber) { + $this->postOfficeBoxNumber = $postOfficeBoxNumber; + } + public function getPostOfficeBoxNumber() { + return $this->postOfficeBoxNumber; + } + public function setAttendees(/* array(Google_ItemScope) */ $attendees) { + $this->assertIsArray($attendees, 'Google_ItemScope', __METHOD__); + $this->attendees = $attendees; + } + public function getAttendees() { + return $this->attendees; + } + public function setAuthor(/* array(Google_ItemScope) */ $author) { + $this->assertIsArray($author, 'Google_ItemScope', __METHOD__); + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setAssociated_media(/* array(Google_ItemScope) */ $associated_media) { + $this->assertIsArray($associated_media, 'Google_ItemScope', __METHOD__); + $this->associated_media = $associated_media; + } + public function getAssociated_media() { + return $this->associated_media; + } + public function setBestRating($bestRating) { + $this->bestRating = $bestRating; + } + public function getBestRating() { + return $this->bestRating; + } + public function setAddressCountry($addressCountry) { + $this->addressCountry = $addressCountry; + } + public function getAddressCountry() { + return $this->addressCountry; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setStreetAddress($streetAddress) { + $this->streetAddress = $streetAddress; + } + public function getStreetAddress() { + return $this->streetAddress; + } + public function setLocation(Google_ItemScope $location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setLatitude($latitude) { + $this->latitude = $latitude; + } + public function getLatitude() { + return $this->latitude; + } + public function setByArtist(Google_ItemScope $byArtist) { + $this->byArtist = $byArtist; + } + public function getByArtist() { + return $this->byArtist; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setDateModified($dateModified) { + $this->dateModified = $dateModified; + } + public function getDateModified() { + return $this->dateModified; + } + public function setContentSize($contentSize) { + $this->contentSize = $contentSize; + } + public function getContentSize() { + return $this->contentSize; + } + public function setContentUrl($contentUrl) { + $this->contentUrl = $contentUrl; + } + public function getContentUrl() { + return $this->contentUrl; + } + public function setPartOfTVSeries(Google_ItemScope $partOfTVSeries) { + $this->partOfTVSeries = $partOfTVSeries; + } + public function getPartOfTVSeries() { + return $this->partOfTVSeries; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setFamilyName($familyName) { + $this->familyName = $familyName; + } + public function getFamilyName() { + return $this->familyName; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDateCreated($dateCreated) { + $this->dateCreated = $dateCreated; + } + public function getDateCreated() { + return $this->dateCreated; + } + public function setPostalCode($postalCode) { + $this->postalCode = $postalCode; + } + public function getPostalCode() { + return $this->postalCode; + } + public function setAttendeeCount($attendeeCount) { + $this->attendeeCount = $attendeeCount; + } + public function getAttendeeCount() { + return $this->attendeeCount; + } + public function setInAlbum(Google_ItemScope $inAlbum) { + $this->inAlbum = $inAlbum; + } + public function getInAlbum() { + return $this->inAlbum; + } + public function setAddressRegion($addressRegion) { + $this->addressRegion = $addressRegion; + } + public function getAddressRegion() { + return $this->addressRegion; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } + public function setGeo(Google_ItemScope $geo) { + $this->geo = $geo; + } + public function getGeo() { + return $this->geo; + } + public function setEmbedUrl($embedUrl) { + $this->embedUrl = $embedUrl; + } + public function getEmbedUrl() { + return $this->embedUrl; + } + public function setTickerSymbol($tickerSymbol) { + $this->tickerSymbol = $tickerSymbol; + } + public function getTickerSymbol() { + return $this->tickerSymbol; + } + public function setPlayerType($playerType) { + $this->playerType = $playerType; + } + public function getPlayerType() { + return $this->playerType; + } + public function setAbout(Google_ItemScope $about) { + $this->about = $about; + } + public function getAbout() { + return $this->about; + } + public function setGivenName($givenName) { + $this->givenName = $givenName; + } + public function getGivenName() { + return $this->givenName; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setPerformers(/* array(Google_ItemScope) */ $performers) { + $this->assertIsArray($performers, 'Google_ItemScope', __METHOD__); + $this->performers = $performers; + } + public function getPerformers() { + return $this->performers; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setGender($gender) { + $this->gender = $gender; + } + public function getGender() { + return $this->gender; + } + public function setLongitude($longitude) { + $this->longitude = $longitude; + } + public function getLongitude() { + return $this->longitude; + } + public function setThumbnail(Google_ItemScope $thumbnail) { + $this->thumbnail = $thumbnail; + } + public function getThumbnail() { + return $this->thumbnail; + } + public function setCaption($caption) { + $this->caption = $caption; + } + public function getCaption() { + return $this->caption; + } + public function setRatingValue($ratingValue) { + $this->ratingValue = $ratingValue; + } + public function getRatingValue() { + return $this->ratingValue; + } + public function setReviewRating(Google_ItemScope $reviewRating) { + $this->reviewRating = $reviewRating; + } + public function getReviewRating() { + return $this->reviewRating; + } + public function setAudio(Google_ItemScope $audio) { + $this->audio = $audio; + } + public function getAudio() { + return $this->audio; + } +} + +class Google_Moment extends Google_Model { + public $startDate; + public $kind; + protected $__targetType = 'Google_ItemScope'; + protected $__targetDataType = ''; + public $target; + protected $__verbType = 'Google_MomentVerb'; + protected $__verbDataType = ''; + public $verb; + protected $__resultType = 'Google_ItemScope'; + protected $__resultDataType = ''; + public $result; + public $type; + public function setStartDate($startDate) { + $this->startDate = $startDate; + } + public function getStartDate() { + return $this->startDate; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTarget(Google_ItemScope $target) { + $this->target = $target; + } + public function getTarget() { + return $this->target; + } + public function setVerb(Google_MomentVerb $verb) { + $this->verb = $verb; + } + public function getVerb() { + return $this->verb; + } + public function setResult(Google_ItemScope $result) { + $this->result = $result; + } + public function getResult() { + return $this->result; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_MomentVerb extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} diff --git a/modules/oauth/src/google/contrib/Google_PlusService.php b/modules/oauth/src/google/contrib/Google_PlusService.php new file mode 100644 index 0000000..3cea769 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_PlusService.php @@ -0,0 +1,1525 @@ + + * $plusService = new Google_PlusService(...); + * $activities = $plusService->activities; + * + */ + class Google_ActivitiesServiceResource extends Google_ServiceResource { + + + /** + * Search public activities. (activities.search) + * + * @param string $query Full-text search query string. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy Specifies how to order search results. + * @opt_param string pageToken The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of "nextPageToken" from the previous response. This token may be of any length. + * @opt_param string maxResults The maximum number of activities to include in the response, used for paging. For any response, the actual number returned may be less than the specified maxResults. + * @opt_param string language Specify the preferred language to search with. See search language codes for available values. + * @return Google_ActivityFeed + */ + public function search($query, $optParams = array()) { + $params = array('query' => $query); + $params = array_merge($params, $optParams); + $data = $this->__call('search', array($params)); + if ($this->useObjects()) { + return new Google_ActivityFeed($data); + } else { + return $data; + } + } + /** + * List all of the activities in the specified collection for a particular user. (activities.list) + * + * @param string $userId The ID of the user to get activities for. The special value "me" can be used to indicate the authenticated user. + * @param string $collection The collection of activities to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of activities to include in the response, used for paging. For any response, the actual number returned may be less than the specified maxResults. + * @return Google_ActivityFeed + */ + public function listActivities($userId, $collection, $optParams = array()) { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ActivityFeed($data); + } else { + return $data; + } + } + /** + * Get an activity. (activities.get) + * + * @param string $activityId The ID of the activity to get. + * @param array $optParams Optional parameters. + * @return Google_Activity + */ + public function get($activityId, $optParams = array()) { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Activity($data); + } else { + return $data; + } + } + } + + /** + * The "comments" collection of methods. + * Typical usage is: + * + * $plusService = new Google_PlusService(...); + * $comments = $plusService->comments; + * + */ + class Google_CommentsServiceResource extends Google_ServiceResource { + + + /** + * List all of the comments for an activity. (comments.list) + * + * @param string $activityId The ID of the activity to get comments for. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of comments to include in the response, used for paging. For any response, the actual number returned may be less than the specified maxResults. + * @opt_param string sortOrder The order in which to sort the list of comments. + * @return Google_CommentFeed + */ + public function listComments($activityId, $optParams = array()) { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_CommentFeed($data); + } else { + return $data; + } + } + /** + * Get a comment. (comments.get) + * + * @param string $commentId The ID of the comment to get. + * @param array $optParams Optional parameters. + * @return Google_Comment + */ + public function get($commentId, $optParams = array()) { + $params = array('commentId' => $commentId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Comment($data); + } else { + return $data; + } + } + } + + /** + * The "people" collection of methods. + * Typical usage is: + * + * $plusService = new Google_PlusService(...); + * $people = $plusService->people; + * + */ + class Google_PeopleServiceResource extends Google_ServiceResource { + + + /** + * List all of the people in the specified collection for a particular activity. + * (people.listByActivity) + * + * @param string $activityId The ID of the activity to get the list of people for. + * @param string $collection The collection of people to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults The maximum number of people to include in the response, used for paging. For any response, the actual number returned may be less than the specified maxResults. + * @return Google_PeopleFeed + */ + public function listByActivity($activityId, $collection, $optParams = array()) { + $params = array('activityId' => $activityId, 'collection' => $collection); + $params = array_merge($params, $optParams); + $data = $this->__call('listByActivity', array($params)); + if ($this->useObjects()) { + return new Google_PeopleFeed($data); + } else { + return $data; + } + } + /** + * Search all public profiles. (people.search) + * + * @param string $query Specify a query string for full text search of public text in all profiles. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of "nextPageToken" from the previous response. This token may be of any length. + * @opt_param string maxResults The maximum number of people to include in the response, used for paging. For any response, the actual number returned may be less than the specified maxResults. + * @opt_param string language Specify the preferred language to search with. See search language codes for available values. + * @return Google_PeopleFeed + */ + public function search($query, $optParams = array()) { + $params = array('query' => $query); + $params = array_merge($params, $optParams); + $data = $this->__call('search', array($params)); + if ($this->useObjects()) { + return new Google_PeopleFeed($data); + } else { + return $data; + } + } + /** + * Get a person's profile. (people.get) + * + * @param string $userId The ID of the person to get the profile for. The special value "me" can be used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return Google_Person + */ + public function get($userId, $optParams = array()) { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Person($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Plus (v1). + * + *

+ * The Google+ API enables developers to build on top of the Google+ platform. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_PlusService extends Google_Service { + public $activities; + public $comments; + public $people; + /** + * Constructs the internal representation of the Plus service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'plus/v1/'; + $this->version = 'v1'; + $this->serviceName = 'plus'; + + $client->addService($this->serviceName, $this->version); + $this->activities = new Google_ActivitiesServiceResource($this, $this->serviceName, 'activities', json_decode('{"methods": {"search": {"scopes": ["https://www.googleapis.com/auth/plus.me"], "parameters": {"orderBy": {"default": "recent", "enum": ["best", "recent"], "type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "maxResults": {"format": "uint32", "default": "10", "maximum": "20", "minimum": "1", "location": "query", "type": "integer"}, "language": {"default": "", "type": "string", "location": "query"}, "query": {"required": true, "type": "string", "location": "query"}}, "id": "plus.activities.search", "httpMethod": "GET", "path": "activities", "response": {"$ref": "ActivityFeed"}}, "list": {"scopes": ["https://www.googleapis.com/auth/plus.me"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "alt": {"default": "json", "enum": ["json"], "type": "string", "location": "query"}, "userId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"format": "uint32", "default": "20", "maximum": "100", "minimum": "1", "location": "query", "type": "integer"}, "collection": {"required": true, "type": "string", "location": "path", "enum": ["public"]}}, "id": "plus.activities.list", "httpMethod": "GET", "path": "people/{userId}/activities/{collection}", "response": {"$ref": "ActivityFeed"}}, "get": {"scopes": ["https://www.googleapis.com/auth/plus.me"], "parameters": {"activityId": {"required": true, "type": "string", "location": "path"}, "alt": {"default": "json", "enum": ["json"], "type": "string", "location": "query"}}, "id": "plus.activities.get", "httpMethod": "GET", "path": "activities/{activityId}", "response": {"$ref": "Activity"}}}}', true)); + $this->comments = new Google_CommentsServiceResource($this, $this->serviceName, 'comments', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/plus.me"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "activityId": {"required": true, "type": "string", "location": "path"}, "alt": {"default": "json", "enum": ["json"], "type": "string", "location": "query"}, "maxResults": {"format": "uint32", "default": "20", "maximum": "100", "minimum": "0", "location": "query", "type": "integer"}, "sortOrder": {"default": "ascending", "enum": ["ascending", "descending"], "type": "string", "location": "query"}}, "id": "plus.comments.list", "httpMethod": "GET", "path": "activities/{activityId}/comments", "response": {"$ref": "CommentFeed"}}, "get": {"scopes": ["https://www.googleapis.com/auth/plus.me"], "parameters": {"commentId": {"required": true, "type": "string", "location": "path"}}, "id": "plus.comments.get", "httpMethod": "GET", "path": "comments/{commentId}", "response": {"$ref": "Comment"}}}}', true)); + $this->people = new Google_PeopleServiceResource($this, $this->serviceName, 'people', json_decode('{"methods": {"listByActivity": {"scopes": ["https://www.googleapis.com/auth/plus.me"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "activityId": {"required": true, "type": "string", "location": "path"}, "maxResults": {"format": "uint32", "default": "20", "maximum": "100", "minimum": "1", "location": "query", "type": "integer"}, "collection": {"required": true, "type": "string", "location": "path", "enum": ["plusoners", "resharers"]}}, "id": "plus.people.listByActivity", "httpMethod": "GET", "path": "activities/{activityId}/people/{collection}", "response": {"$ref": "PeopleFeed"}}, "search": {"scopes": ["https://www.googleapis.com/auth/plus.me"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"format": "uint32", "default": "10", "maximum": "20", "minimum": "1", "location": "query", "type": "integer"}, "language": {"default": "", "type": "string", "location": "query"}, "query": {"required": true, "type": "string", "location": "query"}}, "id": "plus.people.search", "httpMethod": "GET", "path": "people", "response": {"$ref": "PeopleFeed"}}, "get": {"scopes": ["https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/userinfo.email"], "parameters": {"userId": {"required": true, "type": "string", "location": "path"}}, "id": "plus.people.get", "httpMethod": "GET", "path": "people/{userId}", "response": {"$ref": "Person"}}}}', true)); + + } +} + +class Google_Acl extends Google_Model { + protected $__itemsType = 'Google_PlusAclentryResource'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $description; + public function setItems($items) { + $this->assertIsArray($items, 'Google_PlusAclentryResource', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } +} + +class Google_Activity extends Google_Model { + public $placeName; + public $kind; + public $updated; + protected $__providerType = 'Google_ActivityProvider'; + protected $__providerDataType = ''; + public $provider; + public $title; + public $url; + public $geocode; + protected $__objectType = 'Google_ActivityObject'; + protected $__objectDataType = ''; + public $object; + public $placeId; + protected $__actorType = 'Google_ActivityActor'; + protected $__actorDataType = ''; + public $actor; + public $id; + protected $__accessType = 'Google_Acl'; + protected $__accessDataType = ''; + public $access; + public $verb; + public $etag; + public $radius; + public $address; + public $crosspostSource; + public $annotation; + public $published; + public function setPlaceName($placeName) { + $this->placeName = $placeName; + } + public function getPlaceName() { + return $this->placeName; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setProvider(Google_ActivityProvider $provider) { + $this->provider = $provider; + } + public function getProvider() { + return $this->provider; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setGeocode($geocode) { + $this->geocode = $geocode; + } + public function getGeocode() { + return $this->geocode; + } + public function setObject(Google_ActivityObject $object) { + $this->object = $object; + } + public function getObject() { + return $this->object; + } + public function setPlaceId($placeId) { + $this->placeId = $placeId; + } + public function getPlaceId() { + return $this->placeId; + } + public function setActor(Google_ActivityActor $actor) { + $this->actor = $actor; + } + public function getActor() { + return $this->actor; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setAccess(Google_Acl $access) { + $this->access = $access; + } + public function getAccess() { + return $this->access; + } + public function setVerb($verb) { + $this->verb = $verb; + } + public function getVerb() { + return $this->verb; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setRadius($radius) { + $this->radius = $radius; + } + public function getRadius() { + return $this->radius; + } + public function setAddress($address) { + $this->address = $address; + } + public function getAddress() { + return $this->address; + } + public function setCrosspostSource($crosspostSource) { + $this->crosspostSource = $crosspostSource; + } + public function getCrosspostSource() { + return $this->crosspostSource; + } + public function setAnnotation($annotation) { + $this->annotation = $annotation; + } + public function getAnnotation() { + return $this->annotation; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } +} + +class Google_ActivityActor extends Google_Model { + public $url; + protected $__imageType = 'Google_ActivityActorImage'; + protected $__imageDataType = ''; + public $image; + public $displayName; + public $id; + protected $__nameType = 'Google_ActivityActorName'; + protected $__nameDataType = ''; + public $name; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_ActivityActorImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setName(Google_ActivityActorName $name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_ActivityActorImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_ActivityActorName extends Google_Model { + public $givenName; + public $familyName; + public function setGivenName($givenName) { + $this->givenName = $givenName; + } + public function getGivenName() { + return $this->givenName; + } + public function setFamilyName($familyName) { + $this->familyName = $familyName; + } + public function getFamilyName() { + return $this->familyName; + } +} + +class Google_ActivityFeed extends Google_Model { + public $nextPageToken; + public $kind; + public $title; + protected $__itemsType = 'Google_Activity'; + protected $__itemsDataType = 'array'; + public $items; + public $updated; + public $nextLink; + public $etag; + public $id; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Activity', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ActivityObject extends Google_Model { + protected $__resharersType = 'Google_ActivityObjectResharers'; + protected $__resharersDataType = ''; + public $resharers; + protected $__attachmentsType = 'Google_ActivityObjectAttachments'; + protected $__attachmentsDataType = 'array'; + public $attachments; + public $originalContent; + protected $__plusonersType = 'Google_ActivityObjectPlusoners'; + protected $__plusonersDataType = ''; + public $plusoners; + protected $__actorType = 'Google_ActivityObjectActor'; + protected $__actorDataType = ''; + public $actor; + public $content; + public $url; + protected $__repliesType = 'Google_ActivityObjectReplies'; + protected $__repliesDataType = ''; + public $replies; + public $id; + public $objectType; + public function setResharers(Google_ActivityObjectResharers $resharers) { + $this->resharers = $resharers; + } + public function getResharers() { + return $this->resharers; + } + public function setAttachments($attachments) { + $this->assertIsArray($attachments, 'Google_ActivityObjectAttachments', __METHOD__); + $this->attachments = $attachments; + } + public function getAttachments() { + return $this->attachments; + } + public function setOriginalContent($originalContent) { + $this->originalContent = $originalContent; + } + public function getOriginalContent() { + return $this->originalContent; + } + public function setPlusoners(Google_ActivityObjectPlusoners $plusoners) { + $this->plusoners = $plusoners; + } + public function getPlusoners() { + return $this->plusoners; + } + public function setActor(Google_ActivityObjectActor $actor) { + $this->actor = $actor; + } + public function getActor() { + return $this->actor; + } + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setReplies(Google_ActivityObjectReplies $replies) { + $this->replies = $replies; + } + public function getReplies() { + return $this->replies; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setObjectType($objectType) { + $this->objectType = $objectType; + } + public function getObjectType() { + return $this->objectType; + } +} + +class Google_ActivityObjectActor extends Google_Model { + public $url; + protected $__imageType = 'Google_ActivityObjectActorImage'; + protected $__imageDataType = ''; + public $image; + public $displayName; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_ActivityObjectActorImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ActivityObjectActorImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_ActivityObjectAttachments extends Google_Model { + public $displayName; + protected $__fullImageType = 'Google_ActivityObjectAttachmentsFullImage'; + protected $__fullImageDataType = ''; + public $fullImage; + public $url; + protected $__imageType = 'Google_ActivityObjectAttachmentsImage'; + protected $__imageDataType = ''; + public $image; + public $content; + protected $__embedType = 'Google_ActivityObjectAttachmentsEmbed'; + protected $__embedDataType = ''; + public $embed; + public $id; + public $objectType; + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setFullImage(Google_ActivityObjectAttachmentsFullImage $fullImage) { + $this->fullImage = $fullImage; + } + public function getFullImage() { + return $this->fullImage; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_ActivityObjectAttachmentsImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setEmbed(Google_ActivityObjectAttachmentsEmbed $embed) { + $this->embed = $embed; + } + public function getEmbed() { + return $this->embed; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setObjectType($objectType) { + $this->objectType = $objectType; + } + public function getObjectType() { + return $this->objectType; + } +} + +class Google_ActivityObjectAttachmentsEmbed extends Google_Model { + public $url; + public $type; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_ActivityObjectAttachmentsFullImage extends Google_Model { + public $url; + public $width; + public $type; + public $height; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } +} + +class Google_ActivityObjectAttachmentsImage extends Google_Model { + public $url; + public $width; + public $type; + public $height; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } +} + +class Google_ActivityObjectPlusoners extends Google_Model { + public $totalItems; + public $selfLink; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ActivityObjectReplies extends Google_Model { + public $totalItems; + public $selfLink; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ActivityObjectResharers extends Google_Model { + public $totalItems; + public $selfLink; + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ActivityProvider extends Google_Model { + public $title; + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } +} + +class Google_Comment extends Google_Model { + protected $__inReplyToType = 'Google_CommentInReplyTo'; + protected $__inReplyToDataType = 'array'; + public $inReplyTo; + public $kind; + protected $__objectType = 'Google_CommentObject'; + protected $__objectDataType = ''; + public $object; + public $updated; + protected $__actorType = 'Google_CommentActor'; + protected $__actorDataType = ''; + public $actor; + public $verb; + public $etag; + public $published; + public $id; + public $selfLink; + public function setInReplyTo($inReplyTo) { + $this->assertIsArray($inReplyTo, 'Google_CommentInReplyTo', __METHOD__); + $this->inReplyTo = $inReplyTo; + } + public function getInReplyTo() { + return $this->inReplyTo; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setObject(Google_CommentObject $object) { + $this->object = $object; + } + public function getObject() { + return $this->object; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setActor(Google_CommentActor $actor) { + $this->actor = $actor; + } + public function getActor() { + return $this->actor; + } + public function setVerb($verb) { + $this->verb = $verb; + } + public function getVerb() { + return $this->verb; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setPublished($published) { + $this->published = $published; + } + public function getPublished() { + return $this->published; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_CommentActor extends Google_Model { + public $url; + protected $__imageType = 'Google_CommentActorImage'; + protected $__imageDataType = ''; + public $image; + public $displayName; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setImage(Google_CommentActorImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommentActorImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_CommentFeed extends Google_Model { + public $nextPageToken; + public $kind; + public $title; + protected $__itemsType = 'Google_Comment'; + protected $__itemsDataType = 'array'; + public $items; + public $updated; + public $nextLink; + public $etag; + public $id; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Comment', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommentInReplyTo extends Google_Model { + public $url; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_CommentObject extends Google_Model { + public $content; + public $objectType; + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setObjectType($objectType) { + $this->objectType = $objectType; + } + public function getObjectType() { + return $this->objectType; + } +} + +class Google_PeopleFeed extends Google_Model { + public $nextPageToken; + public $kind; + public $title; + protected $__itemsType = 'Google_Person'; + protected $__itemsDataType = 'array'; + public $items; + public $etag; + public $selfLink; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setItems($items) { + $this->assertIsArray($items, 'Google_Person', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_Person extends Google_Model { + public $relationshipStatus; + protected $__organizationsType = 'Google_PersonOrganizations'; + protected $__organizationsDataType = 'array'; + public $organizations; + public $kind; + public $displayName; + protected $__nameType = 'Google_PersonName'; + protected $__nameDataType = ''; + public $name; + public $url; + public $gender; + public $aboutMe; + public $tagline; + protected $__urlsType = 'Google_PersonUrls'; + protected $__urlsDataType = 'array'; + public $urls; + protected $__placesLivedType = 'Google_PersonPlacesLived'; + protected $__placesLivedDataType = 'array'; + public $placesLived; + protected $__emailsType = 'Google_PersonEmails'; + protected $__emailsDataType = 'array'; + public $emails; + public $nickname; + public $birthday; + public $etag; + protected $__imageType = 'Google_PersonImage'; + protected $__imageDataType = ''; + public $image; + public $hasApp; + public $id; + public $languagesSpoken; + public $currentLocation; + public $objectType; + public function setRelationshipStatus($relationshipStatus) { + $this->relationshipStatus = $relationshipStatus; + } + public function getRelationshipStatus() { + return $this->relationshipStatus; + } + public function setOrganizations($organizations) { + $this->assertIsArray($organizations, 'Google_PersonOrganizations', __METHOD__); + $this->organizations = $organizations; + } + public function getOrganizations() { + return $this->organizations; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setName(Google_PersonName $name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setGender($gender) { + $this->gender = $gender; + } + public function getGender() { + return $this->gender; + } + public function setAboutMe($aboutMe) { + $this->aboutMe = $aboutMe; + } + public function getAboutMe() { + return $this->aboutMe; + } + public function setTagline($tagline) { + $this->tagline = $tagline; + } + public function getTagline() { + return $this->tagline; + } + public function setUrls($urls) { + $this->assertIsArray($urls, 'Google_PersonUrls', __METHOD__); + $this->urls = $urls; + } + public function getUrls() { + return $this->urls; + } + public function setPlacesLived($placesLived) { + $this->assertIsArray($placesLived, 'Google_PersonPlacesLived', __METHOD__); + $this->placesLived = $placesLived; + } + public function getPlacesLived() { + return $this->placesLived; + } + public function setEmails($emails) { + $this->assertIsArray($emails, 'Google_PersonEmails', __METHOD__); + $this->emails = $emails; + } + public function getEmails() { + return $this->emails; + } + public function setNickname($nickname) { + $this->nickname = $nickname; + } + public function getNickname() { + return $this->nickname; + } + public function setBirthday($birthday) { + $this->birthday = $birthday; + } + public function getBirthday() { + return $this->birthday; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setImage(Google_PersonImage $image) { + $this->image = $image; + } + public function getImage() { + return $this->image; + } + public function setHasApp($hasApp) { + $this->hasApp = $hasApp; + } + public function getHasApp() { + return $this->hasApp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setLanguagesSpoken($languagesSpoken) { + $this->languagesSpoken = $languagesSpoken; + } + public function getLanguagesSpoken() { + return $this->languagesSpoken; + } + public function setCurrentLocation($currentLocation) { + $this->currentLocation = $currentLocation; + } + public function getCurrentLocation() { + return $this->currentLocation; + } + public function setObjectType($objectType) { + $this->objectType = $objectType; + } + public function getObjectType() { + return $this->objectType; + } +} + +class Google_PersonEmails extends Google_Model { + public $type; + public $primary; + public $value; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setPrimary($primary) { + $this->primary = $primary; + } + public function getPrimary() { + return $this->primary; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_PersonImage extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_PersonName extends Google_Model { + public $honorificPrefix; + public $middleName; + public $familyName; + public $formatted; + public $givenName; + public $honorificSuffix; + public function setHonorificPrefix($honorificPrefix) { + $this->honorificPrefix = $honorificPrefix; + } + public function getHonorificPrefix() { + return $this->honorificPrefix; + } + public function setMiddleName($middleName) { + $this->middleName = $middleName; + } + public function getMiddleName() { + return $this->middleName; + } + public function setFamilyName($familyName) { + $this->familyName = $familyName; + } + public function getFamilyName() { + return $this->familyName; + } + public function setFormatted($formatted) { + $this->formatted = $formatted; + } + public function getFormatted() { + return $this->formatted; + } + public function setGivenName($givenName) { + $this->givenName = $givenName; + } + public function getGivenName() { + return $this->givenName; + } + public function setHonorificSuffix($honorificSuffix) { + $this->honorificSuffix = $honorificSuffix; + } + public function getHonorificSuffix() { + return $this->honorificSuffix; + } +} + +class Google_PersonOrganizations extends Google_Model { + public $startDate; + public $endDate; + public $description; + public $title; + public $primary; + public $location; + public $department; + public $type; + public $name; + public function setStartDate($startDate) { + $this->startDate = $startDate; + } + public function getStartDate() { + return $this->startDate; + } + public function setEndDate($endDate) { + $this->endDate = $endDate; + } + public function getEndDate() { + return $this->endDate; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setPrimary($primary) { + $this->primary = $primary; + } + public function getPrimary() { + return $this->primary; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setDepartment($department) { + $this->department = $department; + } + public function getDepartment() { + return $this->department; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_PersonPlacesLived extends Google_Model { + public $primary; + public $value; + public function setPrimary($primary) { + $this->primary = $primary; + } + public function getPrimary() { + return $this->primary; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_PersonUrls extends Google_Model { + public $type; + public $primary; + public $value; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setPrimary($primary) { + $this->primary = $primary; + } + public function getPrimary() { + return $this->primary; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_PlusAclentryResource extends Google_Model { + public $type; + public $id; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} diff --git a/modules/oauth/src/google/contrib/Google_PredictionService.php b/modules/oauth/src/google/contrib/Google_PredictionService.php new file mode 100644 index 0000000..07bb81e --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_PredictionService.php @@ -0,0 +1,429 @@ + + * $predictionService = new Google_PredictionService(...); + * $trainedmodels = $predictionService->trainedmodels; + * + */ + class Google_TrainedmodelsServiceResource extends Google_ServiceResource { + + + /** + * Submit model id and request a prediction (trainedmodels.predict) + * + * @param string $id The unique name for the predictive model. + * @param Google_Input $postBody + * @param array $optParams Optional parameters. + * @return Google_Output + */ + public function predict($id, Google_Input $postBody, $optParams = array()) { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('predict', array($params)); + if ($this->useObjects()) { + return new Google_Output($data); + } else { + return $data; + } + } + /** + * Begin training your model. (trainedmodels.insert) + * + * @param Google_Training $postBody + * @param array $optParams Optional parameters. + * @return Google_Training + */ + public function insert(Google_Training $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Training($data); + } else { + return $data; + } + } + /** + * Check training status of your model. (trainedmodels.get) + * + * @param string $id The unique name for the predictive model. + * @param array $optParams Optional parameters. + * @return Google_Training + */ + public function get($id, $optParams = array()) { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Training($data); + } else { + return $data; + } + } + /** + * Add new data to a trained model. (trainedmodels.update) + * + * @param string $id The unique name for the predictive model. + * @param Google_Update $postBody + * @param array $optParams Optional parameters. + * @return Google_Training + */ + public function update($id, Google_Update $postBody, $optParams = array()) { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Training($data); + } else { + return $data; + } + } + /** + * Delete a trained model. (trainedmodels.delete) + * + * @param string $id The unique name for the predictive model. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "hostedmodels" collection of methods. + * Typical usage is: + * + * $predictionService = new Google_PredictionService(...); + * $hostedmodels = $predictionService->hostedmodels; + * + */ + class Google_HostedmodelsServiceResource extends Google_ServiceResource { + + + /** + * Submit input and request an output against a hosted model. (hostedmodels.predict) + * + * @param string $hostedModelName The name of a hosted model. + * @param Google_Input $postBody + * @param array $optParams Optional parameters. + * @return Google_Output + */ + public function predict($hostedModelName, Google_Input $postBody, $optParams = array()) { + $params = array('hostedModelName' => $hostedModelName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('predict', array($params)); + if ($this->useObjects()) { + return new Google_Output($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Prediction (v1.4). + * + *

+ * Lets you access a cloud hosted machine learning service that makes it easy to build smart apps + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_PredictionService extends Google_Service { + public $trainedmodels; + public $hostedmodels; + /** + * Constructs the internal representation of the Prediction service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'prediction/v1.4/'; + $this->version = 'v1.4'; + $this->serviceName = 'prediction'; + + $client->addService($this->serviceName, $this->version); + $this->trainedmodels = new Google_TrainedmodelsServiceResource($this, $this->serviceName, 'trainedmodels', json_decode('{"methods": {"predict": {"scopes": ["https://www.googleapis.com/auth/prediction"], "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Input"}, "response": {"$ref": "Output"}, "httpMethod": "POST", "path": "trainedmodels/{id}/predict", "id": "prediction.trainedmodels.predict"}, "insert": {"scopes": ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/prediction"], "request": {"$ref": "Training"}, "response": {"$ref": "Training"}, "httpMethod": "POST", "path": "trainedmodels", "id": "prediction.trainedmodels.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/prediction"], "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "id": "prediction.trainedmodels.get", "httpMethod": "GET", "path": "trainedmodels/{id}", "response": {"$ref": "Training"}}, "update": {"scopes": ["https://www.googleapis.com/auth/prediction"], "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Update"}, "response": {"$ref": "Training"}, "httpMethod": "PUT", "path": "trainedmodels/{id}", "id": "prediction.trainedmodels.update"}, "delete": {"scopes": ["https://www.googleapis.com/auth/prediction"], "path": "trainedmodels/{id}", "id": "prediction.trainedmodels.delete", "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->hostedmodels = new Google_HostedmodelsServiceResource($this, $this->serviceName, 'hostedmodels', json_decode('{"methods": {"predict": {"scopes": ["https://www.googleapis.com/auth/prediction"], "parameters": {"hostedModelName": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Input"}, "response": {"$ref": "Output"}, "httpMethod": "POST", "path": "hostedmodels/{hostedModelName}/predict", "id": "prediction.hostedmodels.predict"}}}', true)); + + } +} + +class Google_Input extends Google_Model { + protected $__inputType = 'Google_InputInput'; + protected $__inputDataType = ''; + public $input; + public function setInput(Google_InputInput $input) { + $this->input = $input; + } + public function getInput() { + return $this->input; + } +} + +class Google_InputInput extends Google_Model { + public $csvInstance; + public function setCsvInstance(/* array(Google_object) */ $csvInstance) { + $this->assertIsArray($csvInstance, 'Google_object', __METHOD__); + $this->csvInstance = $csvInstance; + } + public function getCsvInstance() { + return $this->csvInstance; + } +} + +class Google_Output extends Google_Model { + public $kind; + public $outputLabel; + public $id; + protected $__outputMultiType = 'Google_OutputOutputMulti'; + protected $__outputMultiDataType = 'array'; + public $outputMulti; + public $outputValue; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setOutputLabel($outputLabel) { + $this->outputLabel = $outputLabel; + } + public function getOutputLabel() { + return $this->outputLabel; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setOutputMulti(/* array(Google_OutputOutputMulti) */ $outputMulti) { + $this->assertIsArray($outputMulti, 'Google_OutputOutputMulti', __METHOD__); + $this->outputMulti = $outputMulti; + } + public function getOutputMulti() { + return $this->outputMulti; + } + public function setOutputValue($outputValue) { + $this->outputValue = $outputValue; + } + public function getOutputValue() { + return $this->outputValue; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_OutputOutputMulti extends Google_Model { + public $score; + public $label; + public function setScore($score) { + $this->score = $score; + } + public function getScore() { + return $this->score; + } + public function setLabel($label) { + $this->label = $label; + } + public function getLabel() { + return $this->label; + } +} + +class Google_Training extends Google_Model { + public $kind; + public $storageDataLocation; + public $storagePMMLModelLocation; + protected $__dataAnalysisType = 'Google_TrainingDataAnalysis'; + protected $__dataAnalysisDataType = ''; + public $dataAnalysis; + public $trainingStatus; + protected $__modelInfoType = 'Google_TrainingModelInfo'; + protected $__modelInfoDataType = ''; + public $modelInfo; + public $storagePMMLLocation; + public $id; + public $selfLink; + public $utility; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setStorageDataLocation($storageDataLocation) { + $this->storageDataLocation = $storageDataLocation; + } + public function getStorageDataLocation() { + return $this->storageDataLocation; + } + public function setStoragePMMLModelLocation($storagePMMLModelLocation) { + $this->storagePMMLModelLocation = $storagePMMLModelLocation; + } + public function getStoragePMMLModelLocation() { + return $this->storagePMMLModelLocation; + } + public function setDataAnalysis(Google_TrainingDataAnalysis $dataAnalysis) { + $this->dataAnalysis = $dataAnalysis; + } + public function getDataAnalysis() { + return $this->dataAnalysis; + } + public function setTrainingStatus($trainingStatus) { + $this->trainingStatus = $trainingStatus; + } + public function getTrainingStatus() { + return $this->trainingStatus; + } + public function setModelInfo(Google_TrainingModelInfo $modelInfo) { + $this->modelInfo = $modelInfo; + } + public function getModelInfo() { + return $this->modelInfo; + } + public function setStoragePMMLLocation($storagePMMLLocation) { + $this->storagePMMLLocation = $storagePMMLLocation; + } + public function getStoragePMMLLocation() { + return $this->storagePMMLLocation; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setUtility(/* array(Google_double) */ $utility) { + $this->assertIsArray($utility, 'Google_double', __METHOD__); + $this->utility = $utility; + } + public function getUtility() { + return $this->utility; + } +} + +class Google_TrainingDataAnalysis extends Google_Model { + public $warnings; + public function setWarnings(/* array(Google_string) */ $warnings) { + $this->assertIsArray($warnings, 'Google_string', __METHOD__); + $this->warnings = $warnings; + } + public function getWarnings() { + return $this->warnings; + } +} + +class Google_TrainingModelInfo extends Google_Model { + public $confusionMatrixRowTotals; + public $numberLabels; + public $confusionMatrix; + public $meanSquaredError; + public $modelType; + public $numberInstances; + public $classWeightedAccuracy; + public $classificationAccuracy; + public function setConfusionMatrixRowTotals($confusionMatrixRowTotals) { + $this->confusionMatrixRowTotals = $confusionMatrixRowTotals; + } + public function getConfusionMatrixRowTotals() { + return $this->confusionMatrixRowTotals; + } + public function setNumberLabels($numberLabels) { + $this->numberLabels = $numberLabels; + } + public function getNumberLabels() { + return $this->numberLabels; + } + public function setConfusionMatrix($confusionMatrix) { + $this->confusionMatrix = $confusionMatrix; + } + public function getConfusionMatrix() { + return $this->confusionMatrix; + } + public function setMeanSquaredError($meanSquaredError) { + $this->meanSquaredError = $meanSquaredError; + } + public function getMeanSquaredError() { + return $this->meanSquaredError; + } + public function setModelType($modelType) { + $this->modelType = $modelType; + } + public function getModelType() { + return $this->modelType; + } + public function setNumberInstances($numberInstances) { + $this->numberInstances = $numberInstances; + } + public function getNumberInstances() { + return $this->numberInstances; + } + public function setClassWeightedAccuracy($classWeightedAccuracy) { + $this->classWeightedAccuracy = $classWeightedAccuracy; + } + public function getClassWeightedAccuracy() { + return $this->classWeightedAccuracy; + } + public function setClassificationAccuracy($classificationAccuracy) { + $this->classificationAccuracy = $classificationAccuracy; + } + public function getClassificationAccuracy() { + return $this->classificationAccuracy; + } +} + +class Google_Update extends Google_Model { + public $csvInstance; + public $label; + public function setCsvInstance(/* array(Google_object) */ $csvInstance) { + $this->assertIsArray($csvInstance, 'Google_object', __METHOD__); + $this->csvInstance = $csvInstance; + } + public function getCsvInstance() { + return $this->csvInstance; + } + public function setLabel($label) { + $this->label = $label; + } + public function getLabel() { + return $this->label; + } +} diff --git a/modules/oauth/src/google/contrib/Google_ShoppingService.php b/modules/oauth/src/google/contrib/Google_ShoppingService.php new file mode 100644 index 0000000..68dc854 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_ShoppingService.php @@ -0,0 +1,1311 @@ + + * $shoppingService = new Google_ShoppingService(...); + * $products = $shoppingService->products; + * + */ + class Google_ProductsServiceResource extends Google_ServiceResource { + + + /** + * Returns a list of products and content modules (products.list) + * + * @param string $source Query source + * @param array $optParams Optional parameters. + * + * @opt_param string facets.include Facets to include (applies when useGcsConfig == false) + * @opt_param bool plusOne.enabled Whether to return +1 button code + * @opt_param bool plusOne.useGcsConfig Whether to use +1 button styles configured in the GCS account + * @opt_param bool facets.enabled Whether to return facet information + * @opt_param bool relatedQueries.useGcsConfig This parameter is currently ignored + * @opt_param bool promotions.enabled Whether to return promotion information + * @opt_param string channels Channels specification + * @opt_param string currency Currency restriction (ISO 4217) + * @opt_param bool categoryRecommendations.enabled Whether to return category recommendation information + * @opt_param string facets.discover Facets to discover + * @opt_param string categoryRecommendations.category Category for which to retrieve recommendations + * @opt_param string startIndex Index (1-based) of first product to return + * @opt_param string availability Comma separated list of availabilities (outOfStock, limited, inStock, backOrder, preOrder, onDisplayToOrder) to return + * @opt_param string crowdBy Crowding specification + * @opt_param bool spelling.enabled Whether to return spelling suggestions + * @opt_param string taxonomy Taxonomy name + * @opt_param bool spelling.useGcsConfig This parameter is currently ignored + * @opt_param string useCase One of CommerceSearchUseCase, ShoppingApiUseCase + * @opt_param string location Location used to determine tax and shipping + * @opt_param int maxVariants Maximum number of variant results to return per result + * @opt_param string categories.include Category specification + * @opt_param string boostBy Boosting specification + * @opt_param bool safe Whether safe search is enabled. Default: true + * @opt_param bool categories.useGcsConfig This parameter is currently ignored + * @opt_param string maxResults Maximum number of results to return + * @opt_param bool facets.useGcsConfig Whether to return facet information as configured in the GCS account + * @opt_param bool categories.enabled Whether to return category information + * @opt_param string plusOne.styles +1 button rendering styles + * @opt_param string attributeFilter Comma separated list of attributes to return + * @opt_param bool clickTracking Whether to add a click tracking parameter to offer URLs + * @opt_param string thumbnails Image thumbnails specification + * @opt_param string language Language restriction (BCP 47) + * @opt_param string categoryRecommendations.include Category recommendation specification + * @opt_param string country Country restriction (ISO 3166) + * @opt_param string rankBy Ranking specification + * @opt_param string restrictBy Restriction specification + * @opt_param string q Search query + * @opt_param bool redirects.enabled Whether to return redirect information + * @opt_param bool redirects.useGcsConfig Whether to return redirect information as configured in the GCS account + * @opt_param bool relatedQueries.enabled Whether to return related queries + * @opt_param bool categoryRecommendations.useGcsConfig This parameter is currently ignored + * @opt_param bool promotions.useGcsConfig Whether to return promotion information as configured in the GCS account + * @return Google_Products + */ + public function listProducts($source, $optParams = array()) { + $params = array('source' => $source); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Products($data); + } else { + return $data; + } + } + /** + * Returns a single product (products.get) + * + * @param string $source Query source + * @param string $accountId Merchant center account id + * @param string $productIdType Type of productId + * @param string $productId Id of product + * @param array $optParams Optional parameters. + * + * @opt_param string categories.include Category specification + * @opt_param bool recommendations.enabled Whether to return recommendation information + * @opt_param string thumbnails Thumbnail specification + * @opt_param bool plusOne.useGcsConfig Whether to use +1 button styles configured in the GCS account + * @opt_param string taxonomy Merchant taxonomy + * @opt_param bool categories.useGcsConfig This parameter is currently ignored + * @opt_param string plusOne.styles +1 button rendering styles + * @opt_param string recommendations.include Recommendation specification + * @opt_param bool categories.enabled Whether to return category information + * @opt_param string location Location used to determine tax and shipping + * @opt_param bool plusOne.enabled Whether to return +1 button code + * @opt_param string attributeFilter Comma separated list of attributes to return + * @opt_param bool recommendations.useGcsConfig This parameter is currently ignored + * @return Google_Product + */ + public function get($source, $accountId, $productIdType, $productId, $optParams = array()) { + $params = array('source' => $source, 'accountId' => $accountId, 'productIdType' => $productIdType, 'productId' => $productId); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Product($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Shopping (v1). + * + *

+ * Lets you search over product data. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_ShoppingService extends Google_Service { + public $products; + /** + * Constructs the internal representation of the Shopping service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'shopping/search/v1/'; + $this->version = 'v1'; + $this->serviceName = 'shopping'; + + $client->addService($this->serviceName, $this->version); + $this->products = new Google_ProductsServiceResource($this, $this->serviceName, 'products', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/shoppingapi"], "parameters": {"facets.include": {"type": "string", "location": "query"}, "plusOne.enabled": {"type": "boolean", "location": "query"}, "plusOne.useGcsConfig": {"type": "boolean", "location": "query"}, "facets.enabled": {"type": "boolean", "location": "query"}, "relatedQueries.useGcsConfig": {"type": "boolean", "location": "query"}, "promotions.enabled": {"type": "boolean", "location": "query"}, "channels": {"type": "string", "location": "query"}, "currency": {"type": "string", "location": "query"}, "startIndex": {"type": "integer", "location": "query", "format": "uint32"}, "facets.discover": {"type": "string", "location": "query"}, "categoryRecommendations.category": {"type": "string", "location": "query"}, "availability": {"type": "string", "location": "query"}, "crowdBy": {"type": "string", "location": "query"}, "spelling.enabled": {"type": "boolean", "location": "query"}, "taxonomy": {"type": "string", "location": "query"}, "spelling.useGcsConfig": {"type": "boolean", "location": "query"}, "source": {"required": true, "type": "string", "location": "path"}, "useCase": {"type": "string", "location": "query"}, "location": {"type": "string", "location": "query"}, "maxVariants": {"type": "integer", "location": "query", "format": "int32"}, "categories.include": {"type": "string", "location": "query"}, "boostBy": {"type": "string", "location": "query"}, "safe": {"type": "boolean", "location": "query"}, "categories.useGcsConfig": {"type": "boolean", "location": "query"}, "maxResults": {"type": "integer", "location": "query", "format": "uint32"}, "facets.useGcsConfig": {"type": "boolean", "location": "query"}, "categories.enabled": {"type": "boolean", "location": "query"}, "plusOne.styles": {"type": "string", "location": "query"}, "attributeFilter": {"type": "string", "location": "query"}, "clickTracking": {"type": "boolean", "location": "query"}, "categoryRecommendations.enabled": {"type": "boolean", "location": "query"}, "thumbnails": {"type": "string", "location": "query"}, "language": {"type": "string", "location": "query"}, "categoryRecommendations.include": {"type": "string", "location": "query"}, "country": {"type": "string", "location": "query"}, "rankBy": {"type": "string", "location": "query"}, "restrictBy": {"type": "string", "location": "query"}, "q": {"type": "string", "location": "query"}, "redirects.enabled": {"type": "boolean", "location": "query"}, "redirects.useGcsConfig": {"type": "boolean", "location": "query"}, "relatedQueries.enabled": {"type": "boolean", "location": "query"}, "categoryRecommendations.useGcsConfig": {"type": "boolean", "location": "query"}, "promotions.useGcsConfig": {"type": "boolean", "location": "query"}}, "id": "shopping.products.list", "httpMethod": "GET", "path": "{source}/products", "response": {"$ref": "Products"}}, "get": {"scopes": ["https://www.googleapis.com/auth/shoppingapi"], "parameters": {"categories.include": {"type": "string", "location": "query"}, "recommendations.enabled": {"type": "boolean", "location": "query"}, "thumbnails": {"type": "string", "location": "query"}, "plusOne.useGcsConfig": {"type": "boolean", "location": "query"}, "source": {"required": true, "type": "string", "location": "path"}, "taxonomy": {"type": "string", "location": "query"}, "productIdType": {"required": true, "type": "string", "location": "path"}, "categories.useGcsConfig": {"type": "boolean", "location": "query"}, "plusOne.styles": {"type": "string", "location": "query"}, "recommendations.include": {"type": "string", "location": "query"}, "categories.enabled": {"type": "boolean", "location": "query"}, "location": {"type": "string", "location": "query"}, "plusOne.enabled": {"type": "boolean", "location": "query"}, "attributeFilter": {"type": "string", "location": "query"}, "recommendations.useGcsConfig": {"type": "boolean", "location": "query"}, "productId": {"required": true, "type": "string", "location": "path"}, "accountId": {"required": true, "type": "integer", "location": "path", "format": "uint32"}}, "id": "shopping.products.get", "httpMethod": "GET", "path": "{source}/products/{accountId}/{productIdType}/{productId}", "response": {"$ref": "Product"}}}}', true)); + + } +} + +class Google_Product extends Google_Model { + public $selfLink; + public $kind; + protected $__productType = 'Google_ShoppingModelProductJsonV1'; + protected $__productDataType = ''; + public $product; + public $requestId; + protected $__recommendationsType = 'Google_ShoppingModelRecommendationsJsonV1'; + protected $__recommendationsDataType = 'array'; + public $recommendations; + protected $__debugType = 'Google_ShoppingModelDebugJsonV1'; + protected $__debugDataType = ''; + public $debug; + public $id; + protected $__categoriesType = 'Google_ShoppingModelCategoryJsonV1'; + protected $__categoriesDataType = 'array'; + public $categories; + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setProduct(Google_ShoppingModelProductJsonV1 $product) { + $this->product = $product; + } + public function getProduct() { + return $this->product; + } + public function setRequestId($requestId) { + $this->requestId = $requestId; + } + public function getRequestId() { + return $this->requestId; + } + public function setRecommendations(/* array(Google_ShoppingModelRecommendationsJsonV1) */ $recommendations) { + $this->assertIsArray($recommendations, 'Google_ShoppingModelRecommendationsJsonV1', __METHOD__); + $this->recommendations = $recommendations; + } + public function getRecommendations() { + return $this->recommendations; + } + public function setDebug(Google_ShoppingModelDebugJsonV1 $debug) { + $this->debug = $debug; + } + public function getDebug() { + return $this->debug; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setCategories(/* array(Google_ShoppingModelCategoryJsonV1) */ $categories) { + $this->assertIsArray($categories, 'Google_ShoppingModelCategoryJsonV1', __METHOD__); + $this->categories = $categories; + } + public function getCategories() { + return $this->categories; + } +} + +class Google_Products extends Google_Model { + protected $__promotionsType = 'Google_ProductsPromotions'; + protected $__promotionsDataType = 'array'; + public $promotions; + public $selfLink; + public $kind; + protected $__storesType = 'Google_ProductsStores'; + protected $__storesDataType = 'array'; + public $stores; + public $currentItemCount; + protected $__itemsType = 'Google_Product'; + protected $__itemsDataType = 'array'; + public $items; + protected $__facetsType = 'Google_ProductsFacets'; + protected $__facetsDataType = 'array'; + public $facets; + public $itemsPerPage; + public $redirects; + public $nextLink; + public $relatedQueries; + public $totalItems; + public $startIndex; + public $etag; + public $requestId; + protected $__categoryRecommendationsType = 'Google_ShoppingModelRecommendationsJsonV1'; + protected $__categoryRecommendationsDataType = 'array'; + public $categoryRecommendations; + protected $__debugType = 'Google_ShoppingModelDebugJsonV1'; + protected $__debugDataType = ''; + public $debug; + protected $__spellingType = 'Google_ProductsSpelling'; + protected $__spellingDataType = ''; + public $spelling; + public $previousLink; + public $id; + protected $__categoriesType = 'Google_ShoppingModelCategoryJsonV1'; + protected $__categoriesDataType = 'array'; + public $categories; + public function setPromotions(/* array(Google_ProductsPromotions) */ $promotions) { + $this->assertIsArray($promotions, 'Google_ProductsPromotions', __METHOD__); + $this->promotions = $promotions; + } + public function getPromotions() { + return $this->promotions; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setStores(/* array(Google_ProductsStores) */ $stores) { + $this->assertIsArray($stores, 'Google_ProductsStores', __METHOD__); + $this->stores = $stores; + } + public function getStores() { + return $this->stores; + } + public function setCurrentItemCount($currentItemCount) { + $this->currentItemCount = $currentItemCount; + } + public function getCurrentItemCount() { + return $this->currentItemCount; + } + public function setItems(/* array(Google_Product) */ $items) { + $this->assertIsArray($items, 'Google_Product', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setFacets(/* array(Google_ProductsFacets) */ $facets) { + $this->assertIsArray($facets, 'Google_ProductsFacets', __METHOD__); + $this->facets = $facets; + } + public function getFacets() { + return $this->facets; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setRedirects(/* array(Google_string) */ $redirects) { + $this->assertIsArray($redirects, 'Google_string', __METHOD__); + $this->redirects = $redirects; + } + public function getRedirects() { + return $this->redirects; + } + public function setNextLink($nextLink) { + $this->nextLink = $nextLink; + } + public function getNextLink() { + return $this->nextLink; + } + public function setRelatedQueries(/* array(Google_string) */ $relatedQueries) { + $this->assertIsArray($relatedQueries, 'Google_string', __METHOD__); + $this->relatedQueries = $relatedQueries; + } + public function getRelatedQueries() { + return $this->relatedQueries; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setRequestId($requestId) { + $this->requestId = $requestId; + } + public function getRequestId() { + return $this->requestId; + } + public function setCategoryRecommendations(/* array(Google_ShoppingModelRecommendationsJsonV1) */ $categoryRecommendations) { + $this->assertIsArray($categoryRecommendations, 'Google_ShoppingModelRecommendationsJsonV1', __METHOD__); + $this->categoryRecommendations = $categoryRecommendations; + } + public function getCategoryRecommendations() { + return $this->categoryRecommendations; + } + public function setDebug(Google_ShoppingModelDebugJsonV1 $debug) { + $this->debug = $debug; + } + public function getDebug() { + return $this->debug; + } + public function setSpelling(Google_ProductsSpelling $spelling) { + $this->spelling = $spelling; + } + public function getSpelling() { + return $this->spelling; + } + public function setPreviousLink($previousLink) { + $this->previousLink = $previousLink; + } + public function getPreviousLink() { + return $this->previousLink; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setCategories(/* array(Google_ShoppingModelCategoryJsonV1) */ $categories) { + $this->assertIsArray($categories, 'Google_ShoppingModelCategoryJsonV1', __METHOD__); + $this->categories = $categories; + } + public function getCategories() { + return $this->categories; + } +} + +class Google_ProductsFacets extends Google_Model { + public $count; + public $displayName; + public $name; + protected $__bucketsType = 'Google_ProductsFacetsBuckets'; + protected $__bucketsDataType = 'array'; + public $buckets; + public $property; + public $type; + public $unit; + public function setCount($count) { + $this->count = $count; + } + public function getCount() { + return $this->count; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setBuckets(/* array(Google_ProductsFacetsBuckets) */ $buckets) { + $this->assertIsArray($buckets, 'Google_ProductsFacetsBuckets', __METHOD__); + $this->buckets = $buckets; + } + public function getBuckets() { + return $this->buckets; + } + public function setProperty($property) { + $this->property = $property; + } + public function getProperty() { + return $this->property; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setUnit($unit) { + $this->unit = $unit; + } + public function getUnit() { + return $this->unit; + } +} + +class Google_ProductsFacetsBuckets extends Google_Model { + public $count; + public $minExclusive; + public $min; + public $max; + public $value; + public $maxExclusive; + public function setCount($count) { + $this->count = $count; + } + public function getCount() { + return $this->count; + } + public function setMinExclusive($minExclusive) { + $this->minExclusive = $minExclusive; + } + public function getMinExclusive() { + return $this->minExclusive; + } + public function setMin($min) { + $this->min = $min; + } + public function getMin() { + return $this->min; + } + public function setMax($max) { + $this->max = $max; + } + public function getMax() { + return $this->max; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } + public function setMaxExclusive($maxExclusive) { + $this->maxExclusive = $maxExclusive; + } + public function getMaxExclusive() { + return $this->maxExclusive; + } +} + +class Google_ProductsPromotions extends Google_Model { + protected $__productType = 'Google_ShoppingModelProductJsonV1'; + protected $__productDataType = ''; + public $product; + public $description; + public $imageLink; + public $destLink; + public $customHtml; + protected $__customFieldsType = 'Google_ProductsPromotionsCustomFields'; + protected $__customFieldsDataType = 'array'; + public $customFields; + public $type; + public $name; + public function setProduct(Google_ShoppingModelProductJsonV1 $product) { + $this->product = $product; + } + public function getProduct() { + return $this->product; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setImageLink($imageLink) { + $this->imageLink = $imageLink; + } + public function getImageLink() { + return $this->imageLink; + } + public function setDestLink($destLink) { + $this->destLink = $destLink; + } + public function getDestLink() { + return $this->destLink; + } + public function setCustomHtml($customHtml) { + $this->customHtml = $customHtml; + } + public function getCustomHtml() { + return $this->customHtml; + } + public function setCustomFields(/* array(Google_ProductsPromotionsCustomFields) */ $customFields) { + $this->assertIsArray($customFields, 'Google_ProductsPromotionsCustomFields', __METHOD__); + $this->customFields = $customFields; + } + public function getCustomFields() { + return $this->customFields; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } +} + +class Google_ProductsPromotionsCustomFields extends Google_Model { + public $name; + public $value; + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } +} + +class Google_ProductsSpelling extends Google_Model { + public $suggestion; + public function setSuggestion($suggestion) { + $this->suggestion = $suggestion; + } + public function getSuggestion() { + return $this->suggestion; + } +} + +class Google_ProductsStores extends Google_Model { + public $storeCode; + public $name; + public $storeName; + public $storeId; + public $telephone; + public $location; + public $address; + public function setStoreCode($storeCode) { + $this->storeCode = $storeCode; + } + public function getStoreCode() { + return $this->storeCode; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setStoreName($storeName) { + $this->storeName = $storeName; + } + public function getStoreName() { + return $this->storeName; + } + public function setStoreId($storeId) { + $this->storeId = $storeId; + } + public function getStoreId() { + return $this->storeId; + } + public function setTelephone($telephone) { + $this->telephone = $telephone; + } + public function getTelephone() { + return $this->telephone; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setAddress($address) { + $this->address = $address; + } + public function getAddress() { + return $this->address; + } +} + +class Google_ShoppingModelCategoryJsonV1 extends Google_Model { + public $url; + public $shortName; + public $parents; + public $id; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } + public function setShortName($shortName) { + $this->shortName = $shortName; + } + public function getShortName() { + return $this->shortName; + } + public function setParents(/* array(Google_string) */ $parents) { + $this->assertIsArray($parents, 'Google_string', __METHOD__); + $this->parents = $parents; + } + public function getParents() { + return $this->parents; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ShoppingModelDebugJsonV1 extends Google_Model { + public $searchRequest; + public $rdcResponse; + public $facetsRequest; + public $searchResponse; + public $elapsedMillis; + public $facetsResponse; + protected $__backendTimesType = 'Google_ShoppingModelDebugJsonV1BackendTimes'; + protected $__backendTimesDataType = 'array'; + public $backendTimes; + public function setSearchRequest($searchRequest) { + $this->searchRequest = $searchRequest; + } + public function getSearchRequest() { + return $this->searchRequest; + } + public function setRdcResponse($rdcResponse) { + $this->rdcResponse = $rdcResponse; + } + public function getRdcResponse() { + return $this->rdcResponse; + } + public function setFacetsRequest($facetsRequest) { + $this->facetsRequest = $facetsRequest; + } + public function getFacetsRequest() { + return $this->facetsRequest; + } + public function setSearchResponse($searchResponse) { + $this->searchResponse = $searchResponse; + } + public function getSearchResponse() { + return $this->searchResponse; + } + public function setElapsedMillis($elapsedMillis) { + $this->elapsedMillis = $elapsedMillis; + } + public function getElapsedMillis() { + return $this->elapsedMillis; + } + public function setFacetsResponse($facetsResponse) { + $this->facetsResponse = $facetsResponse; + } + public function getFacetsResponse() { + return $this->facetsResponse; + } + public function setBackendTimes(/* array(Google_ShoppingModelDebugJsonV1BackendTimes) */ $backendTimes) { + $this->assertIsArray($backendTimes, 'Google_ShoppingModelDebugJsonV1BackendTimes', __METHOD__); + $this->backendTimes = $backendTimes; + } + public function getBackendTimes() { + return $this->backendTimes; + } +} + +class Google_ShoppingModelDebugJsonV1BackendTimes extends Google_Model { + public $serverMillis; + public $hostName; + public $name; + public $elapsedMillis; + public function setServerMillis($serverMillis) { + $this->serverMillis = $serverMillis; + } + public function getServerMillis() { + return $this->serverMillis; + } + public function setHostName($hostName) { + $this->hostName = $hostName; + } + public function getHostName() { + return $this->hostName; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setElapsedMillis($elapsedMillis) { + $this->elapsedMillis = $elapsedMillis; + } + public function getElapsedMillis() { + return $this->elapsedMillis; + } +} + +class Google_ShoppingModelProductJsonV1 extends Google_Model { + public $queryMatched; + public $gtin; + protected $__imagesType = 'Google_ShoppingModelProductJsonV1Images'; + protected $__imagesDataType = 'array'; + public $images; + protected $__inventoriesType = 'Google_ShoppingModelProductJsonV1Inventories'; + protected $__inventoriesDataType = 'array'; + public $inventories; + protected $__authorType = 'Google_ShoppingModelProductJsonV1Author'; + protected $__authorDataType = ''; + public $author; + public $score; + public $condition; + public $providedId; + public $internal8; + public $description; + public $gtins; + public $internal1; + public $brand; + public $internal3; + protected $__internal4Type = 'Google_ShoppingModelProductJsonV1Internal4'; + protected $__internal4DataType = 'array'; + public $internal4; + public $internal6; + public $internal7; + public $link; + public $mpns; + protected $__attributesType = 'Google_ShoppingModelProductJsonV1Attributes'; + protected $__attributesDataType = 'array'; + public $attributes; + public $totalMatchingVariants; + protected $__variantsType = 'Google_ShoppingModelProductJsonV1Variants'; + protected $__variantsDataType = 'array'; + public $variants; + public $modificationTime; + public $categories; + public $language; + public $country; + public $title; + public $creationTime; + public $internal14; + public $internal12; + public $internal13; + public $internal10; + public $plusOne; + public $googleId; + public $internal15; + public function setQueryMatched($queryMatched) { + $this->queryMatched = $queryMatched; + } + public function getQueryMatched() { + return $this->queryMatched; + } + public function setGtin($gtin) { + $this->gtin = $gtin; + } + public function getGtin() { + return $this->gtin; + } + public function setImages(/* array(Google_ShoppingModelProductJsonV1Images) */ $images) { + $this->assertIsArray($images, 'Google_ShoppingModelProductJsonV1Images', __METHOD__); + $this->images = $images; + } + public function getImages() { + return $this->images; + } + public function setInventories(/* array(Google_ShoppingModelProductJsonV1Inventories) */ $inventories) { + $this->assertIsArray($inventories, 'Google_ShoppingModelProductJsonV1Inventories', __METHOD__); + $this->inventories = $inventories; + } + public function getInventories() { + return $this->inventories; + } + public function setAuthor(Google_ShoppingModelProductJsonV1Author $author) { + $this->author = $author; + } + public function getAuthor() { + return $this->author; + } + public function setScore($score) { + $this->score = $score; + } + public function getScore() { + return $this->score; + } + public function setCondition($condition) { + $this->condition = $condition; + } + public function getCondition() { + return $this->condition; + } + public function setProvidedId($providedId) { + $this->providedId = $providedId; + } + public function getProvidedId() { + return $this->providedId; + } + public function setInternal8(/* array(Google_string) */ $internal8) { + $this->assertIsArray($internal8, 'Google_string', __METHOD__); + $this->internal8 = $internal8; + } + public function getInternal8() { + return $this->internal8; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setGtins(/* array(Google_string) */ $gtins) { + $this->assertIsArray($gtins, 'Google_string', __METHOD__); + $this->gtins = $gtins; + } + public function getGtins() { + return $this->gtins; + } + public function setInternal1(/* array(Google_string) */ $internal1) { + $this->assertIsArray($internal1, 'Google_string', __METHOD__); + $this->internal1 = $internal1; + } + public function getInternal1() { + return $this->internal1; + } + public function setBrand($brand) { + $this->brand = $brand; + } + public function getBrand() { + return $this->brand; + } + public function setInternal3($internal3) { + $this->internal3 = $internal3; + } + public function getInternal3() { + return $this->internal3; + } + public function setInternal4(/* array(Google_ShoppingModelProductJsonV1Internal4) */ $internal4) { + $this->assertIsArray($internal4, 'Google_ShoppingModelProductJsonV1Internal4', __METHOD__); + $this->internal4 = $internal4; + } + public function getInternal4() { + return $this->internal4; + } + public function setInternal6($internal6) { + $this->internal6 = $internal6; + } + public function getInternal6() { + return $this->internal6; + } + public function setInternal7($internal7) { + $this->internal7 = $internal7; + } + public function getInternal7() { + return $this->internal7; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setMpns(/* array(Google_string) */ $mpns) { + $this->assertIsArray($mpns, 'Google_string', __METHOD__); + $this->mpns = $mpns; + } + public function getMpns() { + return $this->mpns; + } + public function setAttributes(/* array(Google_ShoppingModelProductJsonV1Attributes) */ $attributes) { + $this->assertIsArray($attributes, 'Google_ShoppingModelProductJsonV1Attributes', __METHOD__); + $this->attributes = $attributes; + } + public function getAttributes() { + return $this->attributes; + } + public function setTotalMatchingVariants($totalMatchingVariants) { + $this->totalMatchingVariants = $totalMatchingVariants; + } + public function getTotalMatchingVariants() { + return $this->totalMatchingVariants; + } + public function setVariants(/* array(Google_ShoppingModelProductJsonV1Variants) */ $variants) { + $this->assertIsArray($variants, 'Google_ShoppingModelProductJsonV1Variants', __METHOD__); + $this->variants = $variants; + } + public function getVariants() { + return $this->variants; + } + public function setModificationTime($modificationTime) { + $this->modificationTime = $modificationTime; + } + public function getModificationTime() { + return $this->modificationTime; + } + public function setCategories(/* array(Google_string) */ $categories) { + $this->assertIsArray($categories, 'Google_string', __METHOD__); + $this->categories = $categories; + } + public function getCategories() { + return $this->categories; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } + public function setCountry($country) { + $this->country = $country; + } + public function getCountry() { + return $this->country; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setCreationTime($creationTime) { + $this->creationTime = $creationTime; + } + public function getCreationTime() { + return $this->creationTime; + } + public function setInternal14($internal14) { + $this->internal14 = $internal14; + } + public function getInternal14() { + return $this->internal14; + } + public function setInternal12($internal12) { + $this->internal12 = $internal12; + } + public function getInternal12() { + return $this->internal12; + } + public function setInternal13($internal13) { + $this->internal13 = $internal13; + } + public function getInternal13() { + return $this->internal13; + } + public function setInternal10(/* array(Google_string) */ $internal10) { + $this->assertIsArray($internal10, 'Google_string', __METHOD__); + $this->internal10 = $internal10; + } + public function getInternal10() { + return $this->internal10; + } + public function setPlusOne($plusOne) { + $this->plusOne = $plusOne; + } + public function getPlusOne() { + return $this->plusOne; + } + public function setGoogleId($googleId) { + $this->googleId = $googleId; + } + public function getGoogleId() { + return $this->googleId; + } + public function setInternal15($internal15) { + $this->internal15 = $internal15; + } + public function getInternal15() { + return $this->internal15; + } +} + +class Google_ShoppingModelProductJsonV1Attributes extends Google_Model { + public $type; + public $value; + public $displayName; + public $name; + public $unit; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setValue($value) { + $this->value = $value; + } + public function getValue() { + return $this->value; + } + public function setDisplayName($displayName) { + $this->displayName = $displayName; + } + public function getDisplayName() { + return $this->displayName; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setUnit($unit) { + $this->unit = $unit; + } + public function getUnit() { + return $this->unit; + } +} + +class Google_ShoppingModelProductJsonV1Author extends Google_Model { + public $name; + public $accountId; + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setAccountId($accountId) { + $this->accountId = $accountId; + } + public function getAccountId() { + return $this->accountId; + } +} + +class Google_ShoppingModelProductJsonV1Images extends Google_Model { + public $status; + public $link; + protected $__thumbnailsType = 'Google_ShoppingModelProductJsonV1ImagesThumbnails'; + protected $__thumbnailsDataType = 'array'; + public $thumbnails; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setThumbnails(/* array(Google_ShoppingModelProductJsonV1ImagesThumbnails) */ $thumbnails) { + $this->assertIsArray($thumbnails, 'Google_ShoppingModelProductJsonV1ImagesThumbnails', __METHOD__); + $this->thumbnails = $thumbnails; + } + public function getThumbnails() { + return $this->thumbnails; + } +} + +class Google_ShoppingModelProductJsonV1ImagesThumbnails extends Google_Model { + public $content; + public $width; + public $link; + public $height; + public function setContent($content) { + $this->content = $content; + } + public function getContent() { + return $this->content; + } + public function setWidth($width) { + $this->width = $width; + } + public function getWidth() { + return $this->width; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setHeight($height) { + $this->height = $height; + } + public function getHeight() { + return $this->height; + } +} + +class Google_ShoppingModelProductJsonV1Internal4 extends Google_Model { + public $node; + public $confidence; + public function setNode($node) { + $this->node = $node; + } + public function getNode() { + return $this->node; + } + public function setConfidence($confidence) { + $this->confidence = $confidence; + } + public function getConfidence() { + return $this->confidence; + } +} + +class Google_ShoppingModelProductJsonV1Inventories extends Google_Model { + public $installmentPrice; + public $installmentMonths; + public $distance; + public $price; + public $storeId; + public $tax; + public $shipping; + public $currency; + public $salePrice; + public $originalPrice; + public $distanceUnit; + public $saleStartDate; + public $availability; + public $channel; + public $saleEndDate; + public function setInstallmentPrice($installmentPrice) { + $this->installmentPrice = $installmentPrice; + } + public function getInstallmentPrice() { + return $this->installmentPrice; + } + public function setInstallmentMonths($installmentMonths) { + $this->installmentMonths = $installmentMonths; + } + public function getInstallmentMonths() { + return $this->installmentMonths; + } + public function setDistance($distance) { + $this->distance = $distance; + } + public function getDistance() { + return $this->distance; + } + public function setPrice($price) { + $this->price = $price; + } + public function getPrice() { + return $this->price; + } + public function setStoreId($storeId) { + $this->storeId = $storeId; + } + public function getStoreId() { + return $this->storeId; + } + public function setTax($tax) { + $this->tax = $tax; + } + public function getTax() { + return $this->tax; + } + public function setShipping($shipping) { + $this->shipping = $shipping; + } + public function getShipping() { + return $this->shipping; + } + public function setCurrency($currency) { + $this->currency = $currency; + } + public function getCurrency() { + return $this->currency; + } + public function setSalePrice($salePrice) { + $this->salePrice = $salePrice; + } + public function getSalePrice() { + return $this->salePrice; + } + public function setOriginalPrice($originalPrice) { + $this->originalPrice = $originalPrice; + } + public function getOriginalPrice() { + return $this->originalPrice; + } + public function setDistanceUnit($distanceUnit) { + $this->distanceUnit = $distanceUnit; + } + public function getDistanceUnit() { + return $this->distanceUnit; + } + public function setSaleStartDate($saleStartDate) { + $this->saleStartDate = $saleStartDate; + } + public function getSaleStartDate() { + return $this->saleStartDate; + } + public function setAvailability($availability) { + $this->availability = $availability; + } + public function getAvailability() { + return $this->availability; + } + public function setChannel($channel) { + $this->channel = $channel; + } + public function getChannel() { + return $this->channel; + } + public function setSaleEndDate($saleEndDate) { + $this->saleEndDate = $saleEndDate; + } + public function getSaleEndDate() { + return $this->saleEndDate; + } +} + +class Google_ShoppingModelProductJsonV1Variants extends Google_Model { + protected $__variantType = 'Google_ShoppingModelProductJsonV1'; + protected $__variantDataType = ''; + public $variant; + public function setVariant(Google_ShoppingModelProductJsonV1 $variant) { + $this->variant = $variant; + } + public function getVariant() { + return $this->variant; + } +} + +class Google_ShoppingModelRecommendationsJsonV1 extends Google_Model { + protected $__recommendationListType = 'Google_ShoppingModelRecommendationsJsonV1RecommendationList'; + protected $__recommendationListDataType = 'array'; + public $recommendationList; + public $type; + public function setRecommendationList(/* array(Google_ShoppingModelRecommendationsJsonV1RecommendationList) */ $recommendationList) { + $this->assertIsArray($recommendationList, 'Google_ShoppingModelRecommendationsJsonV1RecommendationList', __METHOD__); + $this->recommendationList = $recommendationList; + } + public function getRecommendationList() { + return $this->recommendationList; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_ShoppingModelRecommendationsJsonV1RecommendationList extends Google_Model { + protected $__productType = 'Google_ShoppingModelProductJsonV1'; + protected $__productDataType = ''; + public $product; + public function setProduct(Google_ShoppingModelProductJsonV1 $product) { + $this->product = $product; + } + public function getProduct() { + return $this->product; + } +} diff --git a/modules/oauth/src/google/contrib/Google_SiteVerificationService.php b/modules/oauth/src/google/contrib/Google_SiteVerificationService.php new file mode 100644 index 0000000..f9ef9ce --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_SiteVerificationService.php @@ -0,0 +1,287 @@ + + * $siteVerificationService = new Google_SiteVerificationService(...); + * $webResource = $siteVerificationService->webResource; + * + */ + class Google_WebResourceServiceResource extends Google_ServiceResource { + + + /** + * Attempt verification of a website or domain. (webResource.insert) + * + * @param string $verificationMethod The method to use for verifying a site or domain. + * @param Google_SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return Google_SiteVerificationWebResourceResource + */ + public function insert($verificationMethod, Google_SiteVerificationWebResourceResource $postBody, $optParams = array()) { + $params = array('verificationMethod' => $verificationMethod, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_SiteVerificationWebResourceResource($data); + } else { + return $data; + } + } + /** + * Get the most current data for a website or domain. (webResource.get) + * + * @param string $id The id of a verified site or domain. + * @param array $optParams Optional parameters. + * @return Google_SiteVerificationWebResourceResource + */ + public function get($id, $optParams = array()) { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_SiteVerificationWebResourceResource($data); + } else { + return $data; + } + } + /** + * Get the list of your verified websites and domains. (webResource.list) + * + * @param array $optParams Optional parameters. + * @return Google_SiteVerificationWebResourceListResponse + */ + public function listWebResource($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SiteVerificationWebResourceListResponse($data); + } else { + return $data; + } + } + /** + * Modify the list of owners for your website or domain. (webResource.update) + * + * @param string $id The id of a verified site or domain. + * @param Google_SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return Google_SiteVerificationWebResourceResource + */ + public function update($id, Google_SiteVerificationWebResourceResource $postBody, $optParams = array()) { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_SiteVerificationWebResourceResource($data); + } else { + return $data; + } + } + /** + * Modify the list of owners for your website or domain. This method supports patch semantics. + * (webResource.patch) + * + * @param string $id The id of a verified site or domain. + * @param Google_SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return Google_SiteVerificationWebResourceResource + */ + public function patch($id, Google_SiteVerificationWebResourceResource $postBody, $optParams = array()) { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_SiteVerificationWebResourceResource($data); + } else { + return $data; + } + } + /** + * Get a verification token for placing on a website or domain. (webResource.getToken) + * + * @param Google_SiteVerificationWebResourceGettokenRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_SiteVerificationWebResourceGettokenResponse + */ + public function getToken(Google_SiteVerificationWebResourceGettokenRequest $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('getToken', array($params)); + if ($this->useObjects()) { + return new Google_SiteVerificationWebResourceGettokenResponse($data); + } else { + return $data; + } + } + /** + * Relinquish ownership of a website or domain. (webResource.delete) + * + * @param string $id The id of a verified site or domain. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_SiteVerification (v1). + * + *

+ * Lets you programatically verify ownership of websites or domains with Google. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_SiteVerificationService extends Google_Service { + public $webResource; + /** + * Constructs the internal representation of the SiteVerification service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'siteVerification/v1/'; + $this->version = 'v1'; + $this->serviceName = 'siteVerification'; + + $client->addService($this->serviceName, $this->version); + $this->webResource = new Google_WebResourceServiceResource($this, $this->serviceName, 'webResource', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/siteverification", "https://www.googleapis.com/auth/siteverification.verify_only"], "parameters": {"verificationMethod": {"required": true, "type": "string", "location": "query"}}, "request": {"$ref": "SiteVerificationWebResourceResource"}, "response": {"$ref": "SiteVerificationWebResourceResource"}, "httpMethod": "POST", "path": "webResource", "id": "siteVerification.webResource.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/siteverification"], "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "id": "siteVerification.webResource.get", "httpMethod": "GET", "path": "webResource/{id}", "response": {"$ref": "SiteVerificationWebResourceResource"}}, "list": {"scopes": ["https://www.googleapis.com/auth/siteverification"], "path": "webResource", "response": {"$ref": "SiteVerificationWebResourceListResponse"}, "id": "siteVerification.webResource.list", "httpMethod": "GET"}, "update": {"scopes": ["https://www.googleapis.com/auth/siteverification"], "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "SiteVerificationWebResourceResource"}, "response": {"$ref": "SiteVerificationWebResourceResource"}, "httpMethod": "PUT", "path": "webResource/{id}", "id": "siteVerification.webResource.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/siteverification"], "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "SiteVerificationWebResourceResource"}, "response": {"$ref": "SiteVerificationWebResourceResource"}, "httpMethod": "PATCH", "path": "webResource/{id}", "id": "siteVerification.webResource.patch"}, "getToken": {"scopes": ["https://www.googleapis.com/auth/siteverification", "https://www.googleapis.com/auth/siteverification.verify_only"], "request": {"$ref": "SiteVerificationWebResourceGettokenRequest"}, "response": {"$ref": "SiteVerificationWebResourceGettokenResponse"}, "httpMethod": "POST", "path": "token", "id": "siteVerification.webResource.getToken"}, "delete": {"scopes": ["https://www.googleapis.com/auth/siteverification"], "path": "webResource/{id}", "id": "siteVerification.webResource.delete", "parameters": {"id": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_SiteVerificationWebResourceGettokenRequest extends Google_Model { + public $verificationMethod; + protected $__siteType = 'Google_SiteVerificationWebResourceGettokenRequestSite'; + protected $__siteDataType = ''; + public $site; + public function setVerificationMethod($verificationMethod) { + $this->verificationMethod = $verificationMethod; + } + public function getVerificationMethod() { + return $this->verificationMethod; + } + public function setSite(Google_SiteVerificationWebResourceGettokenRequestSite $site) { + $this->site = $site; + } + public function getSite() { + return $this->site; + } +} + +class Google_SiteVerificationWebResourceGettokenRequestSite extends Google_Model { + public $identifier; + public $type; + public function setIdentifier($identifier) { + $this->identifier = $identifier; + } + public function getIdentifier() { + return $this->identifier; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} + +class Google_SiteVerificationWebResourceGettokenResponse extends Google_Model { + public $token; + public $method; + public function setToken($token) { + $this->token = $token; + } + public function getToken() { + return $this->token; + } + public function setMethod($method) { + $this->method = $method; + } + public function getMethod() { + return $this->method; + } +} + +class Google_SiteVerificationWebResourceListResponse extends Google_Model { + protected $__itemsType = 'Google_SiteVerificationWebResourceResource'; + protected $__itemsDataType = 'array'; + public $items; + public function setItems(/* array(Google_SiteVerificationWebResourceResource) */ $items) { + $this->assertIsArray($items, 'Google_SiteVerificationWebResourceResource', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } +} + +class Google_SiteVerificationWebResourceResource extends Google_Model { + public $owners; + public $id; + protected $__siteType = 'Google_SiteVerificationWebResourceResourceSite'; + protected $__siteDataType = ''; + public $site; + public function setOwners(/* array(Google_string) */ $owners) { + $this->assertIsArray($owners, 'Google_string', __METHOD__); + $this->owners = $owners; + } + public function getOwners() { + return $this->owners; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSite(Google_SiteVerificationWebResourceResourceSite $site) { + $this->site = $site; + } + public function getSite() { + return $this->site; + } +} + +class Google_SiteVerificationWebResourceResourceSite extends Google_Model { + public $identifier; + public $type; + public function setIdentifier($identifier) { + $this->identifier = $identifier; + } + public function getIdentifier() { + return $this->identifier; + } + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } +} diff --git a/modules/oauth/src/google/contrib/Google_StorageService.php b/modules/oauth/src/google/contrib/Google_StorageService.php new file mode 100644 index 0000000..7f58b32 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_StorageService.php @@ -0,0 +1,1076 @@ + + * $storageService = new Google_StorageService(...); + * $objectAccessControls = $storageService->objectAccessControls; + * + */ + class Google_ObjectAccessControlsServiceResource extends Google_ServiceResource { + + + /** + * Creates a new ACL entry on the specified object. (objectAccessControls.insert) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_ObjectAccessControl + */ + public function insert($bucket, $object, Google_ObjectAccessControl $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_ObjectAccessControl($data); + } else { + return $data; + } + } + /** + * Returns the ACL entry for the specified entity on the specified object. + * (objectAccessControls.get) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * @return Google_ObjectAccessControl + */ + public function get($bucket, $object, $entity, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_ObjectAccessControl($data); + } else { + return $data; + } + } + /** + * Retrieves ACL entries on the specified object. (objectAccessControls.list) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param array $optParams Optional parameters. + * @return Google_ObjectAccessControls + */ + public function listObjectAccessControls($bucket, $object, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ObjectAccessControls($data); + } else { + return $data; + } + } + /** + * Updates an ACL entry on the specified object. (objectAccessControls.update) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_ObjectAccessControl + */ + public function update($bucket, $object, $entity, Google_ObjectAccessControl $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_ObjectAccessControl($data); + } else { + return $data; + } + } + /** + * Updates an ACL entry on the specified object. This method supports patch semantics. + * (objectAccessControls.patch) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_ObjectAccessControl + */ + public function patch($bucket, $object, $entity, Google_ObjectAccessControl $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_ObjectAccessControl($data); + } else { + return $data; + } + } + /** + * Deletes the ACL entry for the specified entity on the specified object. + * (objectAccessControls.delete) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $object, $entity, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "bucketAccessControls" collection of methods. + * Typical usage is: + * + * $storageService = new Google_StorageService(...); + * $bucketAccessControls = $storageService->bucketAccessControls; + * + */ + class Google_BucketAccessControlsServiceResource extends Google_ServiceResource { + + + /** + * Creates a new ACL entry on the specified bucket. (bucketAccessControls.insert) + * + * @param string $bucket Name of a bucket. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_BucketAccessControl + */ + public function insert($bucket, Google_BucketAccessControl $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_BucketAccessControl($data); + } else { + return $data; + } + } + /** + * Returns the ACL entry for the specified entity on the specified bucket. + * (bucketAccessControls.get) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * @return Google_BucketAccessControl + */ + public function get($bucket, $entity, $optParams = array()) { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_BucketAccessControl($data); + } else { + return $data; + } + } + /** + * Retrieves ACL entries on the specified bucket. (bucketAccessControls.list) + * + * @param string $bucket Name of a bucket. + * @param array $optParams Optional parameters. + * @return Google_BucketAccessControls + */ + public function listBucketAccessControls($bucket, $optParams = array()) { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_BucketAccessControls($data); + } else { + return $data; + } + } + /** + * Updates an ACL entry on the specified bucket. (bucketAccessControls.update) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_BucketAccessControl + */ + public function update($bucket, $entity, Google_BucketAccessControl $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_BucketAccessControl($data); + } else { + return $data; + } + } + /** + * Updates an ACL entry on the specified bucket. This method supports patch semantics. + * (bucketAccessControls.patch) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_BucketAccessControl + */ + public function patch($bucket, $entity, Google_BucketAccessControl $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_BucketAccessControl($data); + } else { + return $data; + } + } + /** + * Deletes the ACL entry for the specified entity on the specified bucket. + * (bucketAccessControls.delete) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $entity, $optParams = array()) { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "objects" collection of methods. + * Typical usage is: + * + * $storageService = new Google_StorageService(...); + * $objects = $storageService->objects; + * + */ + class Google_ObjectsServiceResource extends Google_ServiceResource { + + + /** + * Stores new data blobs and associated metadata. (objects.insert) + * + * @param string $bucket Name of the bucket in which to store the new object. Overrides the provided object metadata's bucket value, if any. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string name Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any. + * @opt_param string projection Set of properties to return. Defaults to no_acl, unless the object resource specifies the acl property, when it defaults to full. + * @return Google_StorageObject + */ + public function insert($bucket, Google_StorageObject $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_StorageObject($data); + } else { + return $data; + } + } + /** + * Retrieves objects or their associated metadata. (objects.get) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to no_acl. + * @return Google_StorageObject + */ + public function get($bucket, $object, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_StorageObject($data); + } else { + return $data; + } + } + /** + * Retrieves a list of objects matching the criteria. (objects.list) + * + * @param string $bucket Name of the bucket in which to look for objects. + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of items plus prefixes to return. As duplicate prefixes are omitted, fewer total results may be returned than requested. + * @opt_param string projection Set of properties to return. Defaults to no_acl. + * @opt_param string prefix Filter results to objects whose names begin with this prefix. + * @opt_param string pageToken A previously-returned page token representing part of the larger set of results to view. + * @opt_param string delimiter Returns results in a directory-like mode. items will contain only objects whose names, aside from the prefix, do not contain delimiter. Objects whose names, aside from the prefix, contain delimiter will have their name, truncated after the delimiter, returned in prefixes. Duplicate prefixes are omitted. + * @return Google_Objects + */ + public function listObjects($bucket, $optParams = array()) { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Objects($data); + } else { + return $data; + } + } + /** + * Updates a data blob's associated metadata. (objects.update) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to full. + * @return Google_StorageObject + */ + public function update($bucket, $object, Google_StorageObject $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_StorageObject($data); + } else { + return $data; + } + } + /** + * Updates a data blob's associated metadata. This method supports patch semantics. (objects.patch) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to full. + * @return Google_StorageObject + */ + public function patch($bucket, $object, Google_StorageObject $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_StorageObject($data); + } else { + return $data; + } + } + /** + * Deletes data blobs and associated metadata. (objects.delete) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $object, $optParams = array()) { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "buckets" collection of methods. + * Typical usage is: + * + * $storageService = new Google_StorageService(...); + * $buckets = $storageService->buckets; + * + */ + class Google_BucketsServiceResource extends Google_ServiceResource { + + + /** + * Creates a new bucket. (buckets.insert) + * + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to no_acl, unless the bucket resource specifies acl or defaultObjectAcl properties, when it defaults to full. + * @return Google_Bucket + */ + public function insert(Google_Bucket $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Bucket($data); + } else { + return $data; + } + } + /** + * Returns metadata for the specified bucket. (buckets.get) + * + * @param string $bucket Name of a bucket. + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to no_acl. + * @return Google_Bucket + */ + public function get($bucket, $optParams = array()) { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Bucket($data); + } else { + return $data; + } + } + /** + * Retrieves a list of buckets for a given project. (buckets.list) + * + * @param string $projectId A valid API project identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string max-results Maximum number of buckets to return. + * @opt_param string pageToken A previously-returned page token representing part of the larger set of results to view. + * @opt_param string projection Set of properties to return. Defaults to no_acl. + * @return Google_Buckets + */ + public function listBuckets($projectId, $optParams = array()) { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Buckets($data); + } else { + return $data; + } + } + /** + * Updates a bucket. (buckets.update) + * + * @param string $bucket Name of a bucket. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to full. + * @return Google_Bucket + */ + public function update($bucket, Google_Bucket $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Bucket($data); + } else { + return $data; + } + } + /** + * Updates a bucket. This method supports patch semantics. (buckets.patch) + * + * @param string $bucket Name of a bucket. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to full. + * @return Google_Bucket + */ + public function patch($bucket, Google_Bucket $postBody, $optParams = array()) { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Bucket($data); + } else { + return $data; + } + } + /** + * Deletes an empty bucket. (buckets.delete) + * + * @param string $bucket Name of a bucket. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $optParams = array()) { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Storage (v1beta1). + * + *

+ * Lets you store and retrieve potentially-large, immutable data objects. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_StorageService extends Google_Service { + public $objectAccessControls; + public $bucketAccessControls; + public $objects; + public $buckets; + /** + * Constructs the internal representation of the Storage service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'storage/v1beta1/'; + $this->version = 'v1beta1'; + $this->serviceName = 'storage'; + + $client->addService($this->serviceName, $this->version); + $this->objectAccessControls = new Google_ObjectAccessControlsServiceResource($this, $this->serviceName, 'objectAccessControls', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "ObjectAccessControl"}, "response": {"$ref": "ObjectAccessControl"}, "httpMethod": "POST", "path": "b/{bucket}/o/{object}/acl", "id": "storage.objectAccessControls.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "id": "storage.objectAccessControls.get", "httpMethod": "GET", "path": "b/{bucket}/o/{object}/acl/{entity}", "response": {"$ref": "ObjectAccessControl"}}, "list": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}}, "id": "storage.objectAccessControls.list", "httpMethod": "GET", "path": "b/{bucket}/o/{object}/acl", "response": {"$ref": "ObjectAccessControls"}}, "update": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "ObjectAccessControl"}, "response": {"$ref": "ObjectAccessControl"}, "httpMethod": "PUT", "path": "b/{bucket}/o/{object}/acl/{entity}", "id": "storage.objectAccessControls.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "ObjectAccessControl"}, "response": {"$ref": "ObjectAccessControl"}, "httpMethod": "PATCH", "path": "b/{bucket}/o/{object}/acl/{entity}", "id": "storage.objectAccessControls.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "path": "b/{bucket}/o/{object}/acl/{entity}", "id": "storage.objectAccessControls.delete", "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->bucketAccessControls = new Google_BucketAccessControlsServiceResource($this, $this->serviceName, 'bucketAccessControls', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "BucketAccessControl"}, "response": {"$ref": "BucketAccessControl"}, "httpMethod": "POST", "path": "b/{bucket}/acl", "id": "storage.bucketAccessControls.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "id": "storage.bucketAccessControls.get", "httpMethod": "GET", "path": "b/{bucket}/acl/{entity}", "response": {"$ref": "BucketAccessControl"}}, "list": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}}, "id": "storage.bucketAccessControls.list", "httpMethod": "GET", "path": "b/{bucket}/acl", "response": {"$ref": "BucketAccessControls"}}, "update": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "BucketAccessControl"}, "response": {"$ref": "BucketAccessControl"}, "httpMethod": "PUT", "path": "b/{bucket}/acl/{entity}", "id": "storage.bucketAccessControls.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "BucketAccessControl"}, "response": {"$ref": "BucketAccessControl"}, "httpMethod": "PATCH", "path": "b/{bucket}/acl/{entity}", "id": "storage.bucketAccessControls.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control"], "path": "b/{bucket}/acl/{entity}", "id": "storage.bucketAccessControls.delete", "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "entity": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->objects = new Google_ObjectsServiceResource($this, $this->serviceName, 'objects', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "name": {"type": "string", "location": "query"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "supportsMediaUpload": true, "request": {"$ref": "Object"}, "mediaUpload": {"protocols": {"simple": {"path": "/upload/storage/v1beta1/b/{bucket}/o", "multipart": true}, "resumable": {"path": "/resumable/upload/storage/v1beta1/b/{bucket}/o", "multipart": true}}, "accept": ["*/*"]}, "response": {"$ref": "Object"}, "httpMethod": "POST", "path": "b/{bucket}/o", "id": "storage.objects.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "id": "storage.objects.get", "httpMethod": "GET", "supportsMediaDownload": true, "path": "b/{bucket}/o/{object}", "response": {"$ref": "Object"}}, "list": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"max-results": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}, "bucket": {"required": true, "type": "string", "location": "path"}, "prefix": {"type": "string", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "delimiter": {"type": "string", "location": "query"}}, "response": {"$ref": "Objects"}, "httpMethod": "GET", "supportsSubscription": true, "path": "b/{bucket}/o", "id": "storage.objects.list"}, "update": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "request": {"$ref": "Object"}, "response": {"$ref": "Object"}, "httpMethod": "PUT", "path": "b/{bucket}/o/{object}", "id": "storage.objects.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "request": {"$ref": "Object"}, "response": {"$ref": "Object"}, "httpMethod": "PATCH", "path": "b/{bucket}/o/{object}", "id": "storage.objects.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "path": "b/{bucket}/o/{object}", "id": "storage.objects.delete", "parameters": {"object": {"required": true, "type": "string", "location": "path"}, "bucket": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->buckets = new Google_BucketsServiceResource($this, $this->serviceName, 'buckets', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "request": {"$ref": "Bucket"}, "response": {"$ref": "Bucket"}, "httpMethod": "POST", "path": "b", "id": "storage.buckets.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "id": "storage.buckets.get", "httpMethod": "GET", "path": "b/{bucket}", "response": {"$ref": "Bucket"}}, "list": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"max-results": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "pageToken": {"type": "string", "location": "query"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}, "projectId": {"required": true, "type": "string", "location": "query", "format": "uint64"}}, "id": "storage.buckets.list", "httpMethod": "GET", "path": "b", "response": {"$ref": "Buckets"}}, "update": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "request": {"$ref": "Bucket"}, "response": {"$ref": "Bucket"}, "httpMethod": "PUT", "path": "b/{bucket}", "id": "storage.buckets.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}, "projection": {"enum": ["full", "no_acl"], "type": "string", "location": "query"}}, "request": {"$ref": "Bucket"}, "response": {"$ref": "Bucket"}, "httpMethod": "PATCH", "path": "b/{bucket}", "id": "storage.buckets.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/devstorage.full_control", "https://www.googleapis.com/auth/devstorage.read_write"], "path": "b/{bucket}", "id": "storage.buckets.delete", "parameters": {"bucket": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_Bucket extends Google_Model { + protected $__websiteType = 'Google_BucketWebsite'; + protected $__websiteDataType = ''; + public $website; + public $kind; + public $timeCreated; + public $projectId; + protected $__aclType = 'Google_BucketAccessControl'; + protected $__aclDataType = 'array'; + public $acl; + protected $__defaultObjectAclType = 'Google_ObjectAccessControl'; + protected $__defaultObjectAclDataType = 'array'; + public $defaultObjectAcl; + public $location; + protected $__ownerType = 'Google_BucketOwner'; + protected $__ownerDataType = ''; + public $owner; + public $id; + public $selfLink; + public function setWebsite(Google_BucketWebsite $website) { + $this->website = $website; + } + public function getWebsite() { + return $this->website; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTimeCreated($timeCreated) { + $this->timeCreated = $timeCreated; + } + public function getTimeCreated() { + return $this->timeCreated; + } + public function setProjectId($projectId) { + $this->projectId = $projectId; + } + public function getProjectId() { + return $this->projectId; + } + public function setAcl(/* array(Google_BucketAccessControl) */ $acl) { + $this->assertIsArray($acl, 'Google_BucketAccessControl', __METHOD__); + $this->acl = $acl; + } + public function getAcl() { + return $this->acl; + } + public function setDefaultObjectAcl(/* array(Google_ObjectAccessControl) */ $defaultObjectAcl) { + $this->assertIsArray($defaultObjectAcl, 'Google_ObjectAccessControl', __METHOD__); + $this->defaultObjectAcl = $defaultObjectAcl; + } + public function getDefaultObjectAcl() { + return $this->defaultObjectAcl; + } + public function setLocation($location) { + $this->location = $location; + } + public function getLocation() { + return $this->location; + } + public function setOwner(Google_BucketOwner $owner) { + $this->owner = $owner; + } + public function getOwner() { + return $this->owner; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_BucketAccessControl extends Google_Model { + public $domain; + public $bucket; + public $kind; + public $id; + public $role; + public $entityId; + public $entity; + public $email; + public $selfLink; + public function setDomain($domain) { + $this->domain = $domain; + } + public function getDomain() { + return $this->domain; + } + public function setBucket($bucket) { + $this->bucket = $bucket; + } + public function getBucket() { + return $this->bucket; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setRole($role) { + $this->role = $role; + } + public function getRole() { + return $this->role; + } + public function setEntityId($entityId) { + $this->entityId = $entityId; + } + public function getEntityId() { + return $this->entityId; + } + public function setEntity($entity) { + $this->entity = $entity; + } + public function getEntity() { + return $this->entity; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_BucketAccessControls extends Google_Model { + protected $__itemsType = 'Google_BucketAccessControl'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_BucketAccessControl) */ $items) { + $this->assertIsArray($items, 'Google_BucketAccessControl', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_BucketOwner extends Google_Model { + public $entityId; + public $entity; + public function setEntityId($entityId) { + $this->entityId = $entityId; + } + public function getEntityId() { + return $this->entityId; + } + public function setEntity($entity) { + $this->entity = $entity; + } + public function getEntity() { + return $this->entity; + } +} + +class Google_BucketWebsite extends Google_Model { + public $notFoundPage; + public $mainPageSuffix; + public function setNotFoundPage($notFoundPage) { + $this->notFoundPage = $notFoundPage; + } + public function getNotFoundPage() { + return $this->notFoundPage; + } + public function setMainPageSuffix($mainPageSuffix) { + $this->mainPageSuffix = $mainPageSuffix; + } + public function getMainPageSuffix() { + return $this->mainPageSuffix; + } +} + +class Google_Buckets extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Bucket'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Bucket) */ $items) { + $this->assertIsArray($items, 'Google_Bucket', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_ObjectAccessControl extends Google_Model { + public $domain; + public $object; + public $bucket; + public $kind; + public $id; + public $role; + public $entityId; + public $entity; + public $email; + public $selfLink; + public function setDomain($domain) { + $this->domain = $domain; + } + public function getDomain() { + return $this->domain; + } + public function setObject($object) { + $this->object = $object; + } + public function getObject() { + return $this->object; + } + public function setBucket($bucket) { + $this->bucket = $bucket; + } + public function getBucket() { + return $this->bucket; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setRole($role) { + $this->role = $role; + } + public function getRole() { + return $this->role; + } + public function setEntityId($entityId) { + $this->entityId = $entityId; + } + public function getEntityId() { + return $this->entityId; + } + public function setEntity($entity) { + $this->entity = $entity; + } + public function getEntity() { + return $this->entity; + } + public function setEmail($email) { + $this->email = $email; + } + public function getEmail() { + return $this->email; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_ObjectAccessControls extends Google_Model { + protected $__itemsType = 'Google_ObjectAccessControl'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_ObjectAccessControl) */ $items) { + $this->assertIsArray($items, 'Google_ObjectAccessControl', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Objects extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_StorageObject'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $prefixes; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_StorageObject) */ $items) { + $this->assertIsArray($items, 'Google_StorageObject', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setPrefixes(/* array(Google_string) */ $prefixes) { + $this->assertIsArray($prefixes, 'Google_string', __METHOD__); + $this->prefixes = $prefixes; + } + public function getPrefixes() { + return $this->prefixes; + } +} + +class Google_StorageObject extends Google_Model { + public $kind; + public $name; + protected $__mediaType = 'Google_StorageObjectMedia'; + protected $__mediaDataType = ''; + public $media; + public $bucket; + public $contentEncoding; + public $selfLink; + protected $__ownerType = 'Google_StorageObjectOwner'; + protected $__ownerDataType = ''; + public $owner; + public $cacheControl; + protected $__aclType = 'Google_ObjectAccessControl'; + protected $__aclDataType = 'array'; + public $acl; + public $id; + public $contentDisposition; + public $metadata; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setMedia(Google_StorageObjectMedia $media) { + $this->media = $media; + } + public function getMedia() { + return $this->media; + } + public function setBucket($bucket) { + $this->bucket = $bucket; + } + public function getBucket() { + return $this->bucket; + } + public function setContentEncoding($contentEncoding) { + $this->contentEncoding = $contentEncoding; + } + public function getContentEncoding() { + return $this->contentEncoding; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } + public function setOwner(Google_StorageObjectOwner $owner) { + $this->owner = $owner; + } + public function getOwner() { + return $this->owner; + } + public function setCacheControl($cacheControl) { + $this->cacheControl = $cacheControl; + } + public function getCacheControl() { + return $this->cacheControl; + } + public function setAcl(/* array(Google_ObjectAccessControl) */ $acl) { + $this->assertIsArray($acl, 'Google_ObjectAccessControl', __METHOD__); + $this->acl = $acl; + } + public function getAcl() { + return $this->acl; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setContentDisposition($contentDisposition) { + $this->contentDisposition = $contentDisposition; + } + public function getContentDisposition() { + return $this->contentDisposition; + } + public function setMetadata($metadata) { + $this->metadata = $metadata; + } + public function getMetadata() { + return $this->metadata; + } +} + +class Google_StorageObjectMedia extends Google_Model { + public $contentType; + public $timeCreated; + public $algorithm; + public $length; + public $link; + public $hash; + public $data; + public function setContentType($contentType) { + $this->contentType = $contentType; + } + public function getContentType() { + return $this->contentType; + } + public function setTimeCreated($timeCreated) { + $this->timeCreated = $timeCreated; + } + public function getTimeCreated() { + return $this->timeCreated; + } + public function setAlgorithm($algorithm) { + $this->algorithm = $algorithm; + } + public function getAlgorithm() { + return $this->algorithm; + } + public function setLength($length) { + $this->length = $length; + } + public function getLength() { + return $this->length; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setHash($hash) { + $this->hash = $hash; + } + public function getHash() { + return $this->hash; + } + public function setData($data) { + $this->data = $data; + } + public function getData() { + return $this->data; + } +} + +class Google_StorageObjectOwner extends Google_Model { + public $entityId; + public $entity; + public function setEntityId($entityId) { + $this->entityId = $entityId; + } + public function getEntityId() { + return $this->entityId; + } + public function setEntity($entity) { + $this->entity = $entity; + } + public function getEntity() { + return $this->entity; + } +} diff --git a/modules/oauth/src/google/contrib/Google_TaskqueueService.php b/modules/oauth/src/google/contrib/Google_TaskqueueService.php new file mode 100644 index 0000000..3d58183 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_TaskqueueService.php @@ -0,0 +1,423 @@ + + * $taskqueueService = new Google_TaskqueueService(...); + * $taskqueues = $taskqueueService->taskqueues; + * + */ + class Google_TaskqueuesServiceResource extends Google_ServiceResource { + + + /** + * Get detailed information about a TaskQueue. (taskqueues.get) + * + * @param string $project The project under which the queue lies. + * @param string $taskqueue The id of the taskqueue to get the properties of. + * @param array $optParams Optional parameters. + * + * @opt_param bool getStats Whether to get stats. Optional. + * @return Google_TaskQueue + */ + public function get($project, $taskqueue, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_TaskQueue($data); + } else { + return $data; + } + } + } + + /** + * The "tasks" collection of methods. + * Typical usage is: + * + * $taskqueueService = new Google_TaskqueueService(...); + * $tasks = $taskqueueService->tasks; + * + */ + class Google_TasksServiceResource extends Google_ServiceResource { + + + /** + * Insert a new task in a TaskQueue (tasks.insert) + * + * @param string $project The project under which the queue lies + * @param string $taskqueue The taskqueue to insert the task into + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Task + */ + public function insert($project, $taskqueue, Google_Task $postBody, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Get a particular task from a TaskQueue. (tasks.get) + * + * @param string $project The project under which the queue lies. + * @param string $taskqueue The taskqueue in which the task belongs. + * @param string $task The task to get properties of. + * @param array $optParams Optional parameters. + * @return Google_Task + */ + public function get($project, $taskqueue, $task, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * List Tasks in a TaskQueue (tasks.list) + * + * @param string $project The project under which the queue lies. + * @param string $taskqueue The id of the taskqueue to list tasks from. + * @param array $optParams Optional parameters. + * @return Google_Tasks2 + */ + public function listTasks($project, $taskqueue, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Tasks2($data); + } else { + return $data; + } + } + /** + * Update tasks that are leased out of a TaskQueue. (tasks.update) + * + * @param string $project The project under which the queue lies. + * @param string $taskqueue + * @param string $task + * @param int $newLeaseSeconds The new lease in seconds. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Task + */ + public function update($project, $taskqueue, $task, $newLeaseSeconds, Google_Task $postBody, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task, 'newLeaseSeconds' => $newLeaseSeconds, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Update tasks that are leased out of a TaskQueue. This method supports patch semantics. + * (tasks.patch) + * + * @param string $project The project under which the queue lies. + * @param string $taskqueue + * @param string $task + * @param int $newLeaseSeconds The new lease in seconds. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Task + */ + public function patch($project, $taskqueue, $task, $newLeaseSeconds, Google_Task $postBody, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task, 'newLeaseSeconds' => $newLeaseSeconds, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Delete a task from a TaskQueue. (tasks.delete) + * + * @param string $project The project under which the queue lies. + * @param string $taskqueue The taskqueue to delete a task from. + * @param string $task The id of the task to delete. + * @param array $optParams Optional parameters. + */ + public function delete($project, $taskqueue, $task, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + /** + * Lease 1 or more tasks from a TaskQueue. (tasks.lease) + * + * @param string $project The project under which the queue lies. + * @param string $taskqueue The taskqueue to lease a task from. + * @param int $numTasks The number of tasks to lease. + * @param int $leaseSecs The lease in seconds. + * @param array $optParams Optional parameters. + * + * @opt_param bool groupByTag When true, all returned tasks will have the same tag + * @opt_param string tag The tag allowed for tasks in the response. Must only be specified if group_by_tag is true. If group_by_tag is true and tag is not specified the tag will be that of the oldest task by eta, i.e. the first available tag + * @return Google_Tasks + */ + public function lease($project, $taskqueue, $numTasks, $leaseSecs, $optParams = array()) { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'numTasks' => $numTasks, 'leaseSecs' => $leaseSecs); + $params = array_merge($params, $optParams); + $data = $this->__call('lease', array($params)); + if ($this->useObjects()) { + return new Google_Tasks($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Taskqueue (v1beta2). + * + *

+ * Lets you access a Google App Engine Pull Task Queue over REST. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_TaskqueueService extends Google_Service { + public $taskqueues; + public $tasks; + /** + * Constructs the internal representation of the Taskqueue service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'taskqueue/v1beta2/projects/'; + $this->version = 'v1beta2'; + $this->serviceName = 'taskqueue'; + + $client->addService($this->serviceName, $this->version); + $this->taskqueues = new Google_TaskqueuesServiceResource($this, $this->serviceName, 'taskqueues', json_decode('{"methods": {"get": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}, "getStats": {"type": "boolean", "location": "query"}}, "id": "taskqueue.taskqueues.get", "httpMethod": "GET", "path": "{project}/taskqueues/{taskqueue}", "response": {"$ref": "TaskQueue"}}}}', true)); + $this->tasks = new Google_TasksServiceResource($this, $this->serviceName, 'tasks', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Task"}, "response": {"$ref": "Task"}, "httpMethod": "POST", "path": "{project}/taskqueues/{taskqueue}/tasks", "id": "taskqueue.tasks.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}}, "id": "taskqueue.tasks.get", "httpMethod": "GET", "path": "{project}/taskqueues/{taskqueue}/tasks/{task}", "response": {"$ref": "Task"}}, "list": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}}, "id": "taskqueue.tasks.list", "httpMethod": "GET", "path": "{project}/taskqueues/{taskqueue}/tasks", "response": {"$ref": "Tasks2"}}, "update": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}, "newLeaseSeconds": {"required": true, "type": "integer", "location": "query", "format": "int32"}}, "request": {"$ref": "Task"}, "response": {"$ref": "Task"}, "httpMethod": "POST", "path": "{project}/taskqueues/{taskqueue}/tasks/{task}", "id": "taskqueue.tasks.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}, "newLeaseSeconds": {"required": true, "type": "integer", "location": "query", "format": "int32"}}, "request": {"$ref": "Task"}, "response": {"$ref": "Task"}, "httpMethod": "PATCH", "path": "{project}/taskqueues/{taskqueue}/tasks/{task}", "id": "taskqueue.tasks.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "path": "{project}/taskqueues/{taskqueue}/tasks/{task}", "id": "taskqueue.tasks.delete", "parameters": {"project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}, "lease": {"scopes": ["https://www.googleapis.com/auth/taskqueue", "https://www.googleapis.com/auth/taskqueue.consumer"], "parameters": {"groupByTag": {"type": "boolean", "location": "query"}, "leaseSecs": {"required": true, "type": "integer", "location": "query", "format": "int32"}, "project": {"required": true, "type": "string", "location": "path"}, "taskqueue": {"required": true, "type": "string", "location": "path"}, "tag": {"type": "string", "location": "query"}, "numTasks": {"required": true, "type": "integer", "location": "query", "format": "int32"}}, "id": "taskqueue.tasks.lease", "httpMethod": "POST", "path": "{project}/taskqueues/{taskqueue}/tasks/lease", "response": {"$ref": "Tasks"}}}}', true)); + + } +} + +class Google_Task extends Google_Model { + public $kind; + public $leaseTimestamp; + public $id; + public $tag; + public $payloadBase64; + public $queueName; + public $enqueueTimestamp; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setLeaseTimestamp($leaseTimestamp) { + $this->leaseTimestamp = $leaseTimestamp; + } + public function getLeaseTimestamp() { + return $this->leaseTimestamp; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setTag($tag) { + $this->tag = $tag; + } + public function getTag() { + return $this->tag; + } + public function setPayloadBase64($payloadBase64) { + $this->payloadBase64 = $payloadBase64; + } + public function getPayloadBase64() { + return $this->payloadBase64; + } + public function setQueueName($queueName) { + $this->queueName = $queueName; + } + public function getQueueName() { + return $this->queueName; + } + public function setEnqueueTimestamp($enqueueTimestamp) { + $this->enqueueTimestamp = $enqueueTimestamp; + } + public function getEnqueueTimestamp() { + return $this->enqueueTimestamp; + } +} + +class Google_TaskQueue extends Google_Model { + public $kind; + protected $__statsType = 'Google_TaskQueueStats'; + protected $__statsDataType = ''; + public $stats; + public $id; + public $maxLeases; + protected $__aclType = 'Google_TaskQueueAcl'; + protected $__aclDataType = ''; + public $acl; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setStats(Google_TaskQueueStats $stats) { + $this->stats = $stats; + } + public function getStats() { + return $this->stats; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setMaxLeases($maxLeases) { + $this->maxLeases = $maxLeases; + } + public function getMaxLeases() { + return $this->maxLeases; + } + public function setAcl(Google_TaskQueueAcl $acl) { + $this->acl = $acl; + } + public function getAcl() { + return $this->acl; + } +} + +class Google_TaskQueueAcl extends Google_Model { + public $consumerEmails; + public $producerEmails; + public $adminEmails; + public function setConsumerEmails(/* array(Google_string) */ $consumerEmails) { + $this->assertIsArray($consumerEmails, 'Google_string', __METHOD__); + $this->consumerEmails = $consumerEmails; + } + public function getConsumerEmails() { + return $this->consumerEmails; + } + public function setProducerEmails(/* array(Google_string) */ $producerEmails) { + $this->assertIsArray($producerEmails, 'Google_string', __METHOD__); + $this->producerEmails = $producerEmails; + } + public function getProducerEmails() { + return $this->producerEmails; + } + public function setAdminEmails(/* array(Google_string) */ $adminEmails) { + $this->assertIsArray($adminEmails, 'Google_string', __METHOD__); + $this->adminEmails = $adminEmails; + } + public function getAdminEmails() { + return $this->adminEmails; + } +} + +class Google_TaskQueueStats extends Google_Model { + public $oldestTask; + public $leasedLastMinute; + public $totalTasks; + public $leasedLastHour; + public function setOldestTask($oldestTask) { + $this->oldestTask = $oldestTask; + } + public function getOldestTask() { + return $this->oldestTask; + } + public function setLeasedLastMinute($leasedLastMinute) { + $this->leasedLastMinute = $leasedLastMinute; + } + public function getLeasedLastMinute() { + return $this->leasedLastMinute; + } + public function setTotalTasks($totalTasks) { + $this->totalTasks = $totalTasks; + } + public function getTotalTasks() { + return $this->totalTasks; + } + public function setLeasedLastHour($leasedLastHour) { + $this->leasedLastHour = $leasedLastHour; + } + public function getLeasedLastHour() { + return $this->leasedLastHour; + } +} + +class Google_Tasks extends Google_Model { + protected $__itemsType = 'Google_Task'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Task) */ $items) { + $this->assertIsArray($items, 'Google_Task', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} + +class Google_Tasks2 extends Google_Model { + protected $__itemsType = 'Google_Task'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Task) */ $items) { + $this->assertIsArray($items, 'Google_Task', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} diff --git a/modules/oauth/src/google/contrib/Google_TasksService.php b/modules/oauth/src/google/contrib/Google_TasksService.php new file mode 100644 index 0000000..ed0cc64 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_TasksService.php @@ -0,0 +1,580 @@ + + * $tasksService = new Google_TasksService(...); + * $tasks = $tasksService->tasks; + * + */ + class Google_TasksServiceResource extends Google_ServiceResource { + + + /** + * Creates a new task on the specified task list. (tasks.insert) + * + * @param string $tasklist Task list identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string parent Parent task identifier. If the task is created at the top level, this parameter is omitted. Optional. + * @opt_param string previous Previous sibling task identifier. If the task is created at the first position among its siblings, this parameter is omitted. Optional. + * @return Google_Task + */ + public function insert($tasklist, Google_Task $postBody, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Returns the specified task. (tasks.get) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param array $optParams Optional parameters. + * @return Google_Task + */ + public function get($tasklist, $task, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Clears all completed tasks from the specified task list. The affected tasks will be marked as + * 'hidden' and no longer be returned by default when retrieving all tasks for a task list. + * (tasks.clear) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + */ + public function clear($tasklist, $optParams = array()) { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + $data = $this->__call('clear', array($params)); + return $data; + } + /** + * Moves the specified task to another position in the task list. This can include putting it as a + * child task under a new parent and/or move it to a different position among its sibling tasks. + * (tasks.move) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string parent New parent task identifier. If the task is moved to the top level, this parameter is omitted. Optional. + * @opt_param string previous New previous sibling task identifier. If the task is moved to the first position among its siblings, this parameter is omitted. Optional. + * @return Google_Task + */ + public function move($tasklist, $task, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + $data = $this->__call('move', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Returns all tasks in the specified task list. (tasks.list) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string dueMax Upper bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by due date. + * @opt_param bool showDeleted Flag indicating whether deleted tasks are returned in the result. Optional. The default is False. + * @opt_param string updatedMin Lower bound for a task's last modification time (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by last modification time. + * @opt_param string completedMin Lower bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by completion date. + * @opt_param string maxResults Maximum number of task lists returned on one page. Optional. The default is 100. + * @opt_param bool showCompleted Flag indicating whether completed tasks are returned in the result. Optional. The default is True. + * @opt_param string pageToken Token specifying the result page to return. Optional. + * @opt_param string completedMax Upper bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by completion date. + * @opt_param bool showHidden Flag indicating whether hidden tasks are returned in the result. Optional. The default is False. + * @opt_param string dueMin Lower bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by due date. + * @return Google_Tasks + */ + public function listTasks($tasklist, $optParams = array()) { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_Tasks($data); + } else { + return $data; + } + } + /** + * Updates the specified task. (tasks.update) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Task + */ + public function update($tasklist, $task, Google_Task $postBody, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'task' => $task, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Updates the specified task. This method supports patch semantics. (tasks.patch) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Task + */ + public function patch($tasklist, $task, Google_Task $postBody, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'task' => $task, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_Task($data); + } else { + return $data; + } + } + /** + * Deletes the specified task from the task list. (tasks.delete) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param array $optParams Optional parameters. + */ + public function delete($tasklist, $task, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + + /** + * The "tasklists" collection of methods. + * Typical usage is: + * + * $tasksService = new Google_TasksService(...); + * $tasklists = $tasksService->tasklists; + * + */ + class Google_TasklistsServiceResource extends Google_ServiceResource { + + + /** + * Creates a new task list and adds it to the authenticated user's task lists. (tasklists.insert) + * + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_TaskList + */ + public function insert(Google_TaskList $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_TaskList($data); + } else { + return $data; + } + } + /** + * Returns the authenticated user's specified task list. (tasklists.get) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + * @return Google_TaskList + */ + public function get($tasklist, $optParams = array()) { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_TaskList($data); + } else { + return $data; + } + } + /** + * Returns all the authenticated user's task lists. (tasklists.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token specifying the result page to return. Optional. + * @opt_param string maxResults Maximum number of task lists returned on one page. Optional. The default is 100. + * @return Google_TaskLists + */ + public function listTasklists($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TaskLists($data); + } else { + return $data; + } + } + /** + * Updates the authenticated user's specified task list. (tasklists.update) + * + * @param string $tasklist Task list identifier. + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_TaskList + */ + public function update($tasklist, Google_TaskList $postBody, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('update', array($params)); + if ($this->useObjects()) { + return new Google_TaskList($data); + } else { + return $data; + } + } + /** + * Updates the authenticated user's specified task list. This method supports patch semantics. + * (tasklists.patch) + * + * @param string $tasklist Task list identifier. + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_TaskList + */ + public function patch($tasklist, Google_TaskList $postBody, $optParams = array()) { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('patch', array($params)); + if ($this->useObjects()) { + return new Google_TaskList($data); + } else { + return $data; + } + } + /** + * Deletes the authenticated user's specified task list. (tasklists.delete) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + */ + public function delete($tasklist, $optParams = array()) { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + $data = $this->__call('delete', array($params)); + return $data; + } + } + +/** + * Service definition for Google_Tasks (v1). + * + *

+ * Lets you manage your tasks and task lists. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_TasksService extends Google_Service { + public $tasks; + public $tasklists; + /** + * Constructs the internal representation of the Tasks service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'tasks/v1/'; + $this->version = 'v1'; + $this->serviceName = 'tasks'; + + $client->addService($this->serviceName, $this->version); + $this->tasks = new Google_TasksServiceResource($this, $this->serviceName, 'tasks', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/tasks"], "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}, "parent": {"type": "string", "location": "query"}, "previous": {"type": "string", "location": "query"}}, "request": {"$ref": "Task"}, "response": {"$ref": "Task"}, "httpMethod": "POST", "path": "lists/{tasklist}/tasks", "id": "tasks.tasks.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/tasks", "https://www.googleapis.com/auth/tasks.readonly"], "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}}, "id": "tasks.tasks.get", "httpMethod": "GET", "path": "lists/{tasklist}/tasks/{task}", "response": {"$ref": "Task"}}, "clear": {"scopes": ["https://www.googleapis.com/auth/tasks"], "path": "lists/{tasklist}/clear", "id": "tasks.tasks.clear", "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "POST"}, "move": {"scopes": ["https://www.googleapis.com/auth/tasks"], "parameters": {"task": {"required": true, "type": "string", "location": "path"}, "tasklist": {"required": true, "type": "string", "location": "path"}, "parent": {"type": "string", "location": "query"}, "previous": {"type": "string", "location": "query"}}, "id": "tasks.tasks.move", "httpMethod": "POST", "path": "lists/{tasklist}/tasks/{task}/move", "response": {"$ref": "Task"}}, "list": {"scopes": ["https://www.googleapis.com/auth/tasks", "https://www.googleapis.com/auth/tasks.readonly"], "parameters": {"dueMax": {"type": "string", "location": "query"}, "tasklist": {"required": true, "type": "string", "location": "path"}, "showDeleted": {"type": "boolean", "location": "query"}, "updatedMin": {"type": "string", "location": "query"}, "completedMin": {"type": "string", "location": "query"}, "maxResults": {"type": "string", "location": "query", "format": "int64"}, "showCompleted": {"type": "boolean", "location": "query"}, "pageToken": {"type": "string", "location": "query"}, "completedMax": {"type": "string", "location": "query"}, "showHidden": {"type": "boolean", "location": "query"}, "dueMin": {"type": "string", "location": "query"}}, "id": "tasks.tasks.list", "httpMethod": "GET", "path": "lists/{tasklist}/tasks", "response": {"$ref": "Tasks"}}, "update": {"scopes": ["https://www.googleapis.com/auth/tasks"], "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Task"}, "response": {"$ref": "Task"}, "httpMethod": "PUT", "path": "lists/{tasklist}/tasks/{task}", "id": "tasks.tasks.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/tasks"], "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "Task"}, "response": {"$ref": "Task"}, "httpMethod": "PATCH", "path": "lists/{tasklist}/tasks/{task}", "id": "tasks.tasks.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/tasks"], "path": "lists/{tasklist}/tasks/{task}", "id": "tasks.tasks.delete", "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}, "task": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + $this->tasklists = new Google_TasklistsServiceResource($this, $this->serviceName, 'tasklists', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/tasks"], "request": {"$ref": "TaskList"}, "response": {"$ref": "TaskList"}, "httpMethod": "POST", "path": "users/@me/lists", "id": "tasks.tasklists.insert"}, "get": {"scopes": ["https://www.googleapis.com/auth/tasks", "https://www.googleapis.com/auth/tasks.readonly"], "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}}, "id": "tasks.tasklists.get", "httpMethod": "GET", "path": "users/@me/lists/{tasklist}", "response": {"$ref": "TaskList"}}, "list": {"scopes": ["https://www.googleapis.com/auth/tasks", "https://www.googleapis.com/auth/tasks.readonly"], "parameters": {"pageToken": {"type": "string", "location": "query"}, "maxResults": {"type": "string", "location": "query", "format": "int64"}}, "response": {"$ref": "TaskLists"}, "httpMethod": "GET", "path": "users/@me/lists", "id": "tasks.tasklists.list"}, "update": {"scopes": ["https://www.googleapis.com/auth/tasks"], "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "TaskList"}, "response": {"$ref": "TaskList"}, "httpMethod": "PUT", "path": "users/@me/lists/{tasklist}", "id": "tasks.tasklists.update"}, "patch": {"scopes": ["https://www.googleapis.com/auth/tasks"], "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}}, "request": {"$ref": "TaskList"}, "response": {"$ref": "TaskList"}, "httpMethod": "PATCH", "path": "users/@me/lists/{tasklist}", "id": "tasks.tasklists.patch"}, "delete": {"scopes": ["https://www.googleapis.com/auth/tasks"], "path": "users/@me/lists/{tasklist}", "id": "tasks.tasklists.delete", "parameters": {"tasklist": {"required": true, "type": "string", "location": "path"}}, "httpMethod": "DELETE"}}}', true)); + + } +} + +class Google_Task extends Google_Model { + public $status; + public $kind; + public $updated; + public $parent; + protected $__linksType = 'Google_TaskLinks'; + protected $__linksDataType = 'array'; + public $links; + public $title; + public $deleted; + public $completed; + public $due; + public $etag; + public $notes; + public $position; + public $hidden; + public $id; + public $selfLink; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setParent($parent) { + $this->parent = $parent; + } + public function getParent() { + return $this->parent; + } + public function setLinks(/* array(Google_TaskLinks) */ $links) { + $this->assertIsArray($links, 'Google_TaskLinks', __METHOD__); + $this->links = $links; + } + public function getLinks() { + return $this->links; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setDeleted($deleted) { + $this->deleted = $deleted; + } + public function getDeleted() { + return $this->deleted; + } + public function setCompleted($completed) { + $this->completed = $completed; + } + public function getCompleted() { + return $this->completed; + } + public function setDue($due) { + $this->due = $due; + } + public function getDue() { + return $this->due; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setNotes($notes) { + $this->notes = $notes; + } + public function getNotes() { + return $this->notes; + } + public function setPosition($position) { + $this->position = $position; + } + public function getPosition() { + return $this->position; + } + public function setHidden($hidden) { + $this->hidden = $hidden; + } + public function getHidden() { + return $this->hidden; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_TaskLinks extends Google_Model { + public $type; + public $link; + public $description; + public function setType($type) { + $this->type = $type; + } + public function getType() { + return $this->type; + } + public function setLink($link) { + $this->link = $link; + } + public function getLink() { + return $this->link; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } +} + +class Google_TaskList extends Google_Model { + public $kind; + public $title; + public $updated; + public $etag; + public $id; + public $selfLink; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setUpdated($updated) { + $this->updated = $updated; + } + public function getUpdated() { + return $this->updated; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } + public function setSelfLink($selfLink) { + $this->selfLink = $selfLink; + } + public function getSelfLink() { + return $this->selfLink; + } +} + +class Google_TaskLists extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_TaskList'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_TaskList) */ $items) { + $this->assertIsArray($items, 'Google_TaskList', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_Tasks extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Task'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $etag; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Task) */ $items) { + $this->assertIsArray($items, 'Google_Task', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} diff --git a/modules/oauth/src/google/contrib/Google_TranslateService.php b/modules/oauth/src/google/contrib/Google_TranslateService.php new file mode 100644 index 0000000..059bd41 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_TranslateService.php @@ -0,0 +1,244 @@ + + * $translateService = new Google_TranslateService(...); + * $languages = $translateService->languages; + * + */ + class Google_LanguagesServiceResource extends Google_ServiceResource { + + + /** + * List the source/target languages supported by the API (languages.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string target the language and collation in which the localized results should be returned + * @return Google_LanguagesListResponse + */ + public function listLanguages($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_LanguagesListResponse($data); + } else { + return $data; + } + } + } + + /** + * The "detections" collection of methods. + * Typical usage is: + * + * $translateService = new Google_TranslateService(...); + * $detections = $translateService->detections; + * + */ + class Google_DetectionsServiceResource extends Google_ServiceResource { + + + /** + * Detect the language of text. (detections.list) + * + * @param string $q The text to detect + * @param array $optParams Optional parameters. + * @return Google_DetectionsListResponse + */ + public function listDetections($q, $optParams = array()) { + $params = array('q' => $q); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_DetectionsListResponse($data); + } else { + return $data; + } + } + } + + /** + * The "translations" collection of methods. + * Typical usage is: + * + * $translateService = new Google_TranslateService(...); + * $translations = $translateService->translations; + * + */ + class Google_TranslationsServiceResource extends Google_ServiceResource { + + + /** + * Returns text translations from one language to another. (translations.list) + * + * @param string $q The text to translate + * @param string $target The target language into which the text should be translated + * @param array $optParams Optional parameters. + * + * @opt_param string source The source language of the text + * @opt_param string format The format of the text + * @opt_param string cid The customization id for translate + * @return Google_TranslationsListResponse + */ + public function listTranslations($q, $target, $optParams = array()) { + $params = array('q' => $q, 'target' => $target); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_TranslationsListResponse($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Translate (v2). + * + *

+ * Lets you translate text from one language to another + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_TranslateService extends Google_Service { + public $languages; + public $detections; + public $translations; + /** + * Constructs the internal representation of the Translate service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'language/translate/'; + $this->version = 'v2'; + $this->serviceName = 'translate'; + + $client->addService($this->serviceName, $this->version); + $this->languages = new Google_LanguagesServiceResource($this, $this->serviceName, 'languages', json_decode('{"methods": {"list": {"httpMethod": "GET", "response": {"$ref": "LanguagesListResponse"}, "id": "language.languages.list", "parameters": {"target": {"type": "string", "location": "query"}}, "path": "v2/languages"}}}', true)); + $this->detections = new Google_DetectionsServiceResource($this, $this->serviceName, 'detections', json_decode('{"methods": {"list": {"httpMethod": "GET", "response": {"$ref": "DetectionsListResponse"}, "id": "language.detections.list", "parameters": {"q": {"repeated": true, "required": true, "type": "string", "location": "query"}}, "path": "v2/detect"}}}', true)); + $this->translations = new Google_TranslationsServiceResource($this, $this->serviceName, 'translations', json_decode('{"methods": {"list": {"httpMethod": "GET", "response": {"$ref": "TranslationsListResponse"}, "id": "language.translations.list", "parameters": {"q": {"repeated": true, "required": true, "type": "string", "location": "query"}, "source": {"type": "string", "location": "query"}, "format": {"enum": ["html", "text"], "type": "string", "location": "query"}, "target": {"required": true, "type": "string", "location": "query"}, "cid": {"repeated": true, "type": "string", "location": "query"}}, "path": "v2"}}}', true)); + + } +} + +class Google_DetectionsListResponse extends Google_Model { + protected $__detectionsType = 'Google_DetectionsResourceItems'; + protected $__detectionsDataType = 'array'; + public $detections; + public function setDetections(/* array(Google_DetectionsResourceItems) */ $detections) { + $this->assertIsArray($detections, 'Google_DetectionsResourceItems', __METHOD__); + $this->detections = $detections; + } + public function getDetections() { + return $this->detections; + } +} + +class Google_DetectionsResourceItems extends Google_Model { + public $isReliable; + public $confidence; + public $language; + public function setIsReliable($isReliable) { + $this->isReliable = $isReliable; + } + public function getIsReliable() { + return $this->isReliable; + } + public function setConfidence($confidence) { + $this->confidence = $confidence; + } + public function getConfidence() { + return $this->confidence; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } +} + +class Google_LanguagesListResponse extends Google_Model { + protected $__languagesType = 'Google_LanguagesResource'; + protected $__languagesDataType = 'array'; + public $languages; + public function setLanguages(/* array(Google_LanguagesResource) */ $languages) { + $this->assertIsArray($languages, 'Google_LanguagesResource', __METHOD__); + $this->languages = $languages; + } + public function getLanguages() { + return $this->languages; + } +} + +class Google_LanguagesResource extends Google_Model { + public $name; + public $language; + public function setName($name) { + $this->name = $name; + } + public function getName() { + return $this->name; + } + public function setLanguage($language) { + $this->language = $language; + } + public function getLanguage() { + return $this->language; + } +} + +class Google_TranslationsListResponse extends Google_Model { + protected $__translationsType = 'Google_TranslationsResource'; + protected $__translationsDataType = 'array'; + public $translations; + public function setTranslations(/* array(Google_TranslationsResource) */ $translations) { + $this->assertIsArray($translations, 'Google_TranslationsResource', __METHOD__); + $this->translations = $translations; + } + public function getTranslations() { + return $this->translations; + } +} + +class Google_TranslationsResource extends Google_Model { + public $detectedSourceLanguage; + public $translatedText; + public function setDetectedSourceLanguage($detectedSourceLanguage) { + $this->detectedSourceLanguage = $detectedSourceLanguage; + } + public function getDetectedSourceLanguage() { + return $this->detectedSourceLanguage; + } + public function setTranslatedText($translatedText) { + $this->translatedText = $translatedText; + } + public function getTranslatedText() { + return $this->translatedText; + } +} diff --git a/modules/oauth/src/google/contrib/Google_UrlshortenerService.php b/modules/oauth/src/google/contrib/Google_UrlshortenerService.php new file mode 100644 index 0000000..71af5d0 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_UrlshortenerService.php @@ -0,0 +1,325 @@ + + * $urlshortenerService = new Google_UrlshortenerService(...); + * $url = $urlshortenerService->url; + * + */ + class Google_UrlServiceResource extends Google_ServiceResource { + + + /** + * Creates a new short URL. (url.insert) + * + * @param Google_Url $postBody + * @param array $optParams Optional parameters. + * @return Google_Url + */ + public function insert(Google_Url $postBody, $optParams = array()) { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + $data = $this->__call('insert', array($params)); + if ($this->useObjects()) { + return new Google_Url($data); + } else { + return $data; + } + } + /** + * Retrieves a list of URLs shortened by a user. (url.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string start-token Token for requesting successive pages of results. + * @opt_param string projection Additional information to return. + * @return Google_UrlHistory + */ + public function listUrl($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_UrlHistory($data); + } else { + return $data; + } + } + /** + * Expands a short URL or gets creation time and analytics. (url.get) + * + * @param string $shortUrl The short URL, including the protocol. + * @param array $optParams Optional parameters. + * + * @opt_param string projection Additional information to return. + * @return Google_Url + */ + public function get($shortUrl, $optParams = array()) { + $params = array('shortUrl' => $shortUrl); + $params = array_merge($params, $optParams); + $data = $this->__call('get', array($params)); + if ($this->useObjects()) { + return new Google_Url($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Urlshortener (v1). + * + *

+ * Lets you create, inspect, and manage goo.gl short URLs + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_UrlshortenerService extends Google_Service { + public $url; + /** + * Constructs the internal representation of the Urlshortener service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'urlshortener/v1/'; + $this->version = 'v1'; + $this->serviceName = 'urlshortener'; + + $client->addService($this->serviceName, $this->version); + $this->url = new Google_UrlServiceResource($this, $this->serviceName, 'url', json_decode('{"methods": {"insert": {"scopes": ["https://www.googleapis.com/auth/urlshortener"], "request": {"$ref": "Url"}, "response": {"$ref": "Url"}, "httpMethod": "POST", "path": "url", "id": "urlshortener.url.insert"}, "list": {"scopes": ["https://www.googleapis.com/auth/urlshortener"], "parameters": {"start-token": {"type": "string", "location": "query"}, "projection": {"enum": ["ANALYTICS_CLICKS", "FULL"], "type": "string", "location": "query"}}, "response": {"$ref": "UrlHistory"}, "httpMethod": "GET", "path": "url/history", "id": "urlshortener.url.list"}, "get": {"httpMethod": "GET", "response": {"$ref": "Url"}, "id": "urlshortener.url.get", "parameters": {"shortUrl": {"required": true, "type": "string", "location": "query"}, "projection": {"enum": ["ANALYTICS_CLICKS", "ANALYTICS_TOP_STRINGS", "FULL"], "type": "string", "location": "query"}}, "path": "url"}}}', true)); + + } +} + +class Google_AnalyticsSnapshot extends Google_Model { + public $shortUrlClicks; + protected $__countriesType = 'Google_StringCount'; + protected $__countriesDataType = 'array'; + public $countries; + protected $__platformsType = 'Google_StringCount'; + protected $__platformsDataType = 'array'; + public $platforms; + protected $__browsersType = 'Google_StringCount'; + protected $__browsersDataType = 'array'; + public $browsers; + protected $__referrersType = 'Google_StringCount'; + protected $__referrersDataType = 'array'; + public $referrers; + public $longUrlClicks; + public function setShortUrlClicks($shortUrlClicks) { + $this->shortUrlClicks = $shortUrlClicks; + } + public function getShortUrlClicks() { + return $this->shortUrlClicks; + } + public function setCountries(/* array(Google_StringCount) */ $countries) { + $this->assertIsArray($countries, 'Google_StringCount', __METHOD__); + $this->countries = $countries; + } + public function getCountries() { + return $this->countries; + } + public function setPlatforms(/* array(Google_StringCount) */ $platforms) { + $this->assertIsArray($platforms, 'Google_StringCount', __METHOD__); + $this->platforms = $platforms; + } + public function getPlatforms() { + return $this->platforms; + } + public function setBrowsers(/* array(Google_StringCount) */ $browsers) { + $this->assertIsArray($browsers, 'Google_StringCount', __METHOD__); + $this->browsers = $browsers; + } + public function getBrowsers() { + return $this->browsers; + } + public function setReferrers(/* array(Google_StringCount) */ $referrers) { + $this->assertIsArray($referrers, 'Google_StringCount', __METHOD__); + $this->referrers = $referrers; + } + public function getReferrers() { + return $this->referrers; + } + public function setLongUrlClicks($longUrlClicks) { + $this->longUrlClicks = $longUrlClicks; + } + public function getLongUrlClicks() { + return $this->longUrlClicks; + } +} + +class Google_AnalyticsSummary extends Google_Model { + protected $__weekType = 'Google_AnalyticsSnapshot'; + protected $__weekDataType = ''; + public $week; + protected $__allTimeType = 'Google_AnalyticsSnapshot'; + protected $__allTimeDataType = ''; + public $allTime; + protected $__twoHoursType = 'Google_AnalyticsSnapshot'; + protected $__twoHoursDataType = ''; + public $twoHours; + protected $__dayType = 'Google_AnalyticsSnapshot'; + protected $__dayDataType = ''; + public $day; + protected $__monthType = 'Google_AnalyticsSnapshot'; + protected $__monthDataType = ''; + public $month; + public function setWeek(Google_AnalyticsSnapshot $week) { + $this->week = $week; + } + public function getWeek() { + return $this->week; + } + public function setAllTime(Google_AnalyticsSnapshot $allTime) { + $this->allTime = $allTime; + } + public function getAllTime() { + return $this->allTime; + } + public function setTwoHours(Google_AnalyticsSnapshot $twoHours) { + $this->twoHours = $twoHours; + } + public function getTwoHours() { + return $this->twoHours; + } + public function setDay(Google_AnalyticsSnapshot $day) { + $this->day = $day; + } + public function getDay() { + return $this->day; + } + public function setMonth(Google_AnalyticsSnapshot $month) { + $this->month = $month; + } + public function getMonth() { + return $this->month; + } +} + +class Google_StringCount extends Google_Model { + public $count; + public $id; + public function setCount($count) { + $this->count = $count; + } + public function getCount() { + return $this->count; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_Url extends Google_Model { + public $status; + public $kind; + public $created; + protected $__analyticsType = 'Google_AnalyticsSummary'; + protected $__analyticsDataType = ''; + public $analytics; + public $longUrl; + public $id; + public function setStatus($status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setCreated($created) { + $this->created = $created; + } + public function getCreated() { + return $this->created; + } + public function setAnalytics(Google_AnalyticsSummary $analytics) { + $this->analytics = $analytics; + } + public function getAnalytics() { + return $this->analytics; + } + public function setLongUrl($longUrl) { + $this->longUrl = $longUrl; + } + public function getLongUrl() { + return $this->longUrl; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_UrlHistory extends Google_Model { + public $nextPageToken; + protected $__itemsType = 'Google_Url'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public $itemsPerPage; + public $totalItems; + public function setNextPageToken($nextPageToken) { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() { + return $this->nextPageToken; + } + public function setItems(/* array(Google_Url) */ $items) { + $this->assertIsArray($items, 'Google_Url', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setItemsPerPage($itemsPerPage) { + $this->itemsPerPage = $itemsPerPage; + } + public function getItemsPerPage() { + return $this->itemsPerPage; + } + public function setTotalItems($totalItems) { + $this->totalItems = $totalItems; + } + public function getTotalItems() { + return $this->totalItems; + } +} diff --git a/modules/oauth/src/google/contrib/Google_WebfontsService.php b/modules/oauth/src/google/contrib/Google_WebfontsService.php new file mode 100644 index 0000000..addd47a --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_WebfontsService.php @@ -0,0 +1,130 @@ + + * $webfontsService = new Google_WebfontsService(...); + * $webfonts = $webfontsService->webfonts; + * + */ + class Google_WebfontsServiceResource extends Google_ServiceResource { + + + /** + * Retrieves the list of fonts currently served by the Google Web Fonts Developer API + * (webfonts.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string sort Enables sorting of the list + * @return Google_WebfontList + */ + public function listWebfonts($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_WebfontList($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Webfonts (v1). + * + *

+ * The Google Web Fonts Developer API. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_WebfontsService extends Google_Service { + public $webfonts; + /** + * Constructs the internal representation of the Webfonts service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'webfonts/v1/'; + $this->version = 'v1'; + $this->serviceName = 'webfonts'; + + $client->addService($this->serviceName, $this->version); + $this->webfonts = new Google_WebfontsServiceResource($this, $this->serviceName, 'webfonts', json_decode('{"methods": {"list": {"httpMethod": "GET", "response": {"$ref": "WebfontList"}, "id": "webfonts.webfonts.list", "parameters": {"sort": {"enum": ["alpha", "date", "popularity", "style", "trending"], "type": "string", "location": "query"}}, "path": "webfonts"}}}', true)); + + } +} + +class Google_Webfont extends Google_Model { + public $kind; + public $variants; + public $subsets; + public $family; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setVariants($variants) { + $this->variants = $variants; + } + public function getVariants() { + return $this->variants; + } + public function setSubsets($subsets) { + $this->subsets = $subsets; + } + public function getSubsets() { + return $this->subsets; + } + public function setFamily($family) { + $this->family = $family; + } + public function getFamily() { + return $this->family; + } +} + +class Google_WebfontList extends Google_Model { + protected $__itemsType = 'Google_Webfont'; + protected $__itemsDataType = 'array'; + public $items; + public $kind; + public function setItems(/* array(Google_Webfont) */ $items) { + $this->assertIsArray($items, 'Google_Webfont', __METHOD__); + $this->items = $items; + } + public function getItems() { + return $this->items; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } +} diff --git a/modules/oauth/src/google/contrib/Google_YoutubeService.php b/modules/oauth/src/google/contrib/Google_YoutubeService.php new file mode 100644 index 0000000..4ee8de7 --- /dev/null +++ b/modules/oauth/src/google/contrib/Google_YoutubeService.php @@ -0,0 +1,996 @@ + + * $youtubeService = new Google_YoutubeService(...); + * $channels = $youtubeService->channels; + * + */ + class Google_ChannelsServiceResource extends Google_ServiceResource { + + + /** + * Browse the YouTube channel collection. Either the 'id' or 'mine' parameter must be set. + * (channels.list) + * + * @param string $part Parts of the channel resource to be returned. + * @param array $optParams Optional parameters. + * + * @opt_param string id YouTube IDs of the channels to be returned. + * @opt_param string mine Flag indicating only return the channel ids of the authenticated user. + * @return Google_ChannelListResponse + */ + public function listChannels($part, $optParams = array()) { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_ChannelListResponse($data); + } else { + return $data; + } + } + } + + /** + * The "search" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_YoutubeService(...); + * $search = $youtubeService->search; + * + */ + class Google_SearchServiceResource extends Google_ServiceResource { + + + /** + * Universal search for youtube. (search.list) + * + * @param array $optParams Optional parameters. + * + * @opt_param string q Query to search in Youtube. + * @opt_param string startIndex Index of the first search result to return. + * @opt_param string type Type of resource to search. + * @opt_param string order Sort order. + * @opt_param string maxResults Maximum number of search results to return per page. + * @return Google_SearchListResponse + */ + public function listSearch($optParams = array()) { + $params = array(); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_SearchListResponse($data); + } else { + return $data; + } + } + } + + /** + * The "playlistitems" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_YoutubeService(...); + * $playlistitems = $youtubeService->playlistitems; + * + */ + class Google_PlaylistitemsServiceResource extends Google_ServiceResource { + + + /** + * Browse the YouTube playlist collection. (playlistitems.list) + * + * @param string $part Parts of the playlist resource to be returned. + * @param array $optParams Optional parameters. + * + * @opt_param string startIndex Index of the first element to return (starts at 0) + * @opt_param string playlistId Retrieves playlist items from the given playlist id. + * @opt_param string id YouTube IDs of the playlists to be returned. + * @opt_param string maxResults Maximum number of results to return + * @return Google_PlaylistItemListResponse + */ + public function listPlaylistitems($part, $optParams = array()) { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_PlaylistItemListResponse($data); + } else { + return $data; + } + } + } + + /** + * The "playlists" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_YoutubeService(...); + * $playlists = $youtubeService->playlists; + * + */ + class Google_PlaylistsServiceResource extends Google_ServiceResource { + + + /** + * Browse the YouTube playlist collection. (playlists.list) + * + * @param string $id YouTube IDs of the playlists to be returned. + * @param string $part Parts of the playlist resource to be returned. + * @param array $optParams Optional parameters. + * @return Google_PlaylistListResponse + */ + public function listPlaylists($id, $part, $optParams = array()) { + $params = array('id' => $id, 'part' => $part); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_PlaylistListResponse($data); + } else { + return $data; + } + } + } + + /** + * The "videos" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_YoutubeService(...); + * $videos = $youtubeService->videos; + * + */ + class Google_VideosServiceResource extends Google_ServiceResource { + + + /** + * Browse the YouTube video collection. (videos.list) + * + * @param string $id YouTube IDs of the videos to be returned. + * @param string $part Parts of the video resource to be returned. + * @param array $optParams Optional parameters. + * @return Google_VideoListResponse + */ + public function listVideos($id, $part, $optParams = array()) { + $params = array('id' => $id, 'part' => $part); + $params = array_merge($params, $optParams); + $data = $this->__call('list', array($params)); + if ($this->useObjects()) { + return new Google_VideoListResponse($data); + } else { + return $data; + } + } + } + +/** + * Service definition for Google_Youtube (v3alpha). + * + *

+ * Programmatic access to YouTube features. + *

+ * + *

+ * For more information about this service, see the + * API Documentation + *

+ * + * @author Google, Inc. + */ +class Google_YoutubeService extends Google_Service { + public $channels; + public $search; + public $playlistitems; + public $playlists; + public $videos; + /** + * Constructs the internal representation of the Youtube service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) { + $this->servicePath = 'youtube/v3alpha/'; + $this->version = 'v3alpha'; + $this->serviceName = 'youtube'; + + $client->addService($this->serviceName, $this->version); + $this->channels = new Google_ChannelsServiceResource($this, $this->serviceName, 'channels', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/youtube"], "parameters": {"part": {"required": true, "type": "string", "location": "query"}, "id": {"type": "string", "location": "query"}, "mine": {"type": "string", "location": "query"}}, "id": "youtube.channels.list", "httpMethod": "GET", "path": "channels", "response": {"$ref": "ChannelListResponse"}}}}', true)); + $this->search = new Google_SearchServiceResource($this, $this->serviceName, 'search', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/youtube"], "parameters": {"q": {"type": "string", "location": "query"}, "startIndex": {"format": "uint32", "default": "0", "maximum": "1000", "minimum": "0", "location": "query", "type": "integer"}, "type": {"repeated": true, "enum": ["channel", "playlist", "video"], "type": "string", "location": "query"}, "order": {"default": "SEARCH_SORT_RELEVANCE", "enum": ["date", "rating", "relevance", "view_count"], "type": "string", "location": "query"}, "maxResults": {"format": "uint32", "default": "25", "maximum": "50", "minimum": "0", "location": "query", "type": "integer"}}, "response": {"$ref": "SearchListResponse"}, "httpMethod": "GET", "path": "search", "id": "youtube.search.list"}}}', true)); + $this->playlistitems = new Google_PlaylistitemsServiceResource($this, $this->serviceName, 'playlistitems', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/youtube"], "parameters": {"startIndex": {"minimum": "0", "type": "integer", "location": "query", "format": "uint32"}, "part": {"required": true, "type": "string", "location": "query"}, "playlistId": {"type": "string", "location": "query"}, "id": {"type": "string", "location": "query"}, "maxResults": {"default": "50", "minimum": "0", "type": "integer", "location": "query", "format": "uint32"}}, "id": "youtube.playlistitems.list", "httpMethod": "GET", "path": "playlistitems", "response": {"$ref": "PlaylistItemListResponse"}}}}', true)); + $this->playlists = new Google_PlaylistsServiceResource($this, $this->serviceName, 'playlists', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/youtube"], "parameters": {"part": {"required": true, "type": "string", "location": "query"}, "id": {"required": true, "type": "string", "location": "query"}}, "id": "youtube.playlists.list", "httpMethod": "GET", "path": "playlists", "response": {"$ref": "PlaylistListResponse"}}}}', true)); + $this->videos = new Google_VideosServiceResource($this, $this->serviceName, 'videos', json_decode('{"methods": {"list": {"scopes": ["https://www.googleapis.com/auth/youtube"], "parameters": {"part": {"required": true, "type": "string", "location": "query"}, "id": {"required": true, "type": "string", "location": "query"}}, "id": "youtube.videos.list", "httpMethod": "GET", "path": "videos", "response": {"$ref": "VideoListResponse"}}}}', true)); + + } +} + +class Google_Channel extends Google_Model { + public $kind; + protected $__statisticsType = 'Google_ChannelStatistics'; + protected $__statisticsDataType = ''; + public $statistics; + protected $__contentDetailsType = 'Google_ChannelContentDetails'; + protected $__contentDetailsDataType = ''; + public $contentDetails; + protected $__snippetType = 'Google_ChannelSnippet'; + protected $__snippetDataType = ''; + public $snippet; + public $etag; + public $id; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setStatistics(Google_ChannelStatistics $statistics) { + $this->statistics = $statistics; + } + public function getStatistics() { + return $this->statistics; + } + public function setContentDetails(Google_ChannelContentDetails $contentDetails) { + $this->contentDetails = $contentDetails; + } + public function getContentDetails() { + return $this->contentDetails; + } + public function setSnippet(Google_ChannelSnippet $snippet) { + $this->snippet = $snippet; + } + public function getSnippet() { + return $this->snippet; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_ChannelContentDetails extends Google_Model { + public $privacyStatus; + public $uploads; + public function setPrivacyStatus($privacyStatus) { + $this->privacyStatus = $privacyStatus; + } + public function getPrivacyStatus() { + return $this->privacyStatus; + } + public function setUploads($uploads) { + $this->uploads = $uploads; + } + public function getUploads() { + return $this->uploads; + } +} + +class Google_ChannelListResponse extends Google_Model { + protected $__channelsType = 'Google_Channel'; + protected $__channelsDataType = 'map'; + public $channels; + public $kind; + public $etag; + public function setChannels(Google_Channel $channels) { + $this->channels = $channels; + } + public function getChannels() { + return $this->channels; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_ChannelSnippet extends Google_Model { + public $title; + public $description; + protected $__thumbnailsType = 'Google_Thumbnail'; + protected $__thumbnailsDataType = 'map'; + public $thumbnails; + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setThumbnails(Google_Thumbnail $thumbnails) { + $this->thumbnails = $thumbnails; + } + public function getThumbnails() { + return $this->thumbnails; + } +} + +class Google_ChannelStatistics extends Google_Model { + public $commentCount; + public $subscriberCount; + public $videoCount; + public $viewCount; + public function setCommentCount($commentCount) { + $this->commentCount = $commentCount; + } + public function getCommentCount() { + return $this->commentCount; + } + public function setSubscriberCount($subscriberCount) { + $this->subscriberCount = $subscriberCount; + } + public function getSubscriberCount() { + return $this->subscriberCount; + } + public function setVideoCount($videoCount) { + $this->videoCount = $videoCount; + } + public function getVideoCount() { + return $this->videoCount; + } + public function setViewCount($viewCount) { + $this->viewCount = $viewCount; + } + public function getViewCount() { + return $this->viewCount; + } +} + +class Google_PageInfo extends Google_Model { + public $totalResults; + public $startIndex; + public $resultPerPage; + public function setTotalResults($totalResults) { + $this->totalResults = $totalResults; + } + public function getTotalResults() { + return $this->totalResults; + } + public function setStartIndex($startIndex) { + $this->startIndex = $startIndex; + } + public function getStartIndex() { + return $this->startIndex; + } + public function setResultPerPage($resultPerPage) { + $this->resultPerPage = $resultPerPage; + } + public function getResultPerPage() { + return $this->resultPerPage; + } +} + +class Google_Playlist extends Google_Model { + protected $__snippetType = 'Google_PlaylistSnippet'; + protected $__snippetDataType = ''; + public $snippet; + public $kind; + public $etag; + public $id; + public function setSnippet(Google_PlaylistSnippet $snippet) { + $this->snippet = $snippet; + } + public function getSnippet() { + return $this->snippet; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_PlaylistItem extends Google_Model { + protected $__snippetType = 'Google_PlaylistItemSnippet'; + protected $__snippetDataType = ''; + public $snippet; + public $kind; + public $etag; + public $id; + public function setSnippet(Google_PlaylistItemSnippet $snippet) { + $this->snippet = $snippet; + } + public function getSnippet() { + return $this->snippet; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_PlaylistItemListResponse extends Google_Model { + protected $__playlistItemsType = 'Google_PlaylistItem'; + protected $__playlistItemsDataType = 'map'; + public $playlistItems; + public $kind; + public $etag; + public function setPlaylistItems(Google_PlaylistItem $playlistItems) { + $this->playlistItems = $playlistItems; + } + public function getPlaylistItems() { + return $this->playlistItems; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } +} + +class Google_PlaylistItemSnippet extends Google_Model { + public $playlistId; + public $description; + public $title; + protected $__resourceIdType = 'Google_ResourceId'; + protected $__resourceIdDataType = ''; + public $resourceId; + public $channelId; + public $publishedAt; + public $position; + public function setPlaylistId($playlistId) { + $this->playlistId = $playlistId; + } + public function getPlaylistId() { + return $this->playlistId; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setResourceId(Google_ResourceId $resourceId) { + $this->resourceId = $resourceId; + } + public function getResourceId() { + return $this->resourceId; + } + public function setChannelId($channelId) { + $this->channelId = $channelId; + } + public function getChannelId() { + return $this->channelId; + } + public function setPublishedAt($publishedAt) { + $this->publishedAt = $publishedAt; + } + public function getPublishedAt() { + return $this->publishedAt; + } + public function setPosition($position) { + $this->position = $position; + } + public function getPosition() { + return $this->position; + } +} + +class Google_PlaylistListResponse extends Google_Model { + public $kind; + public $etag; + protected $__playlistsType = 'Google_Playlist'; + protected $__playlistsDataType = 'map'; + public $playlists; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setPlaylists(Google_Playlist $playlists) { + $this->playlists = $playlists; + } + public function getPlaylists() { + return $this->playlists; + } +} + +class Google_PlaylistSnippet extends Google_Model { + public $title; + public $channelId; + public $description; + public $publishedAt; + public $tags; + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setChannelId($channelId) { + $this->channelId = $channelId; + } + public function getChannelId() { + return $this->channelId; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setPublishedAt($publishedAt) { + $this->publishedAt = $publishedAt; + } + public function getPublishedAt() { + return $this->publishedAt; + } + public function setTags(/* array(Google_string) */ $tags) { + $this->assertIsArray($tags, 'Google_string', __METHOD__); + $this->tags = $tags; + } + public function getTags() { + return $this->tags; + } +} + +class Google_ResourceId extends Google_Model { + public $kind; + public $channelId; + public $playlistId; + public $videoId; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setChannelId($channelId) { + $this->channelId = $channelId; + } + public function getChannelId() { + return $this->channelId; + } + public function setPlaylistId($playlistId) { + $this->playlistId = $playlistId; + } + public function getPlaylistId() { + return $this->playlistId; + } + public function setVideoId($videoId) { + $this->videoId = $videoId; + } + public function getVideoId() { + return $this->videoId; + } +} + +class Google_SearchListResponse extends Google_Model { + protected $__searchResultsType = 'Google_SearchResult'; + protected $__searchResultsDataType = 'array'; + public $searchResults; + public $kind; + public $etag; + protected $__pageInfoType = 'Google_PageInfo'; + protected $__pageInfoDataType = ''; + public $pageInfo; + public function setSearchResults(/* array(Google_SearchResult) */ $searchResults) { + $this->assertIsArray($searchResults, 'Google_SearchResult', __METHOD__); + $this->searchResults = $searchResults; + } + public function getSearchResults() { + return $this->searchResults; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setPageInfo(Google_PageInfo $pageInfo) { + $this->pageInfo = $pageInfo; + } + public function getPageInfo() { + return $this->pageInfo; + } +} + +class Google_SearchResult extends Google_Model { + protected $__snippetType = 'Google_SearchResultSnippet'; + protected $__snippetDataType = ''; + public $snippet; + public $kind; + public $etag; + protected $__idType = 'Google_ResourceId'; + protected $__idDataType = ''; + public $id; + public function setSnippet(Google_SearchResultSnippet $snippet) { + $this->snippet = $snippet; + } + public function getSnippet() { + return $this->snippet; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId(Google_ResourceId $id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_SearchResultSnippet extends Google_Model { + public $channelId; + public $description; + public $publishedAt; + public $title; + public function setChannelId($channelId) { + $this->channelId = $channelId; + } + public function getChannelId() { + return $this->channelId; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } + public function setPublishedAt($publishedAt) { + $this->publishedAt = $publishedAt; + } + public function getPublishedAt() { + return $this->publishedAt; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } +} + +class Google_Thumbnail extends Google_Model { + public $url; + public function setUrl($url) { + $this->url = $url; + } + public function getUrl() { + return $this->url; + } +} + +class Google_Video extends Google_Model { + protected $__statusType = 'Google_VideoStatus'; + protected $__statusDataType = ''; + public $status; + public $kind; + protected $__statisticsType = 'Google_VideoStatistics'; + protected $__statisticsDataType = ''; + public $statistics; + protected $__contentDetailsType = 'Google_VideoContentDetails'; + protected $__contentDetailsDataType = ''; + public $contentDetails; + protected $__snippetType = 'Google_VideoSnippet'; + protected $__snippetDataType = ''; + public $snippet; + protected $__playerType = 'Google_VideoPlayer'; + protected $__playerDataType = ''; + public $player; + public $etag; + public $id; + public function setStatus(Google_VideoStatus $status) { + $this->status = $status; + } + public function getStatus() { + return $this->status; + } + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setStatistics(Google_VideoStatistics $statistics) { + $this->statistics = $statistics; + } + public function getStatistics() { + return $this->statistics; + } + public function setContentDetails(Google_VideoContentDetails $contentDetails) { + $this->contentDetails = $contentDetails; + } + public function getContentDetails() { + return $this->contentDetails; + } + public function setSnippet(Google_VideoSnippet $snippet) { + $this->snippet = $snippet; + } + public function getSnippet() { + return $this->snippet; + } + public function setPlayer(Google_VideoPlayer $player) { + $this->player = $player; + } + public function getPlayer() { + return $this->player; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setId($id) { + $this->id = $id; + } + public function getId() { + return $this->id; + } +} + +class Google_VideoContentDetails extends Google_Model { + public $duration; + public $aspectRatio; + public function setDuration($duration) { + $this->duration = $duration; + } + public function getDuration() { + return $this->duration; + } + public function setAspectRatio($aspectRatio) { + $this->aspectRatio = $aspectRatio; + } + public function getAspectRatio() { + return $this->aspectRatio; + } +} + +class Google_VideoListResponse extends Google_Model { + public $kind; + public $etag; + protected $__videosType = 'Google_Video'; + protected $__videosDataType = 'map'; + public $videos; + public function setKind($kind) { + $this->kind = $kind; + } + public function getKind() { + return $this->kind; + } + public function setEtag($etag) { + $this->etag = $etag; + } + public function getEtag() { + return $this->etag; + } + public function setVideos(Google_Video $videos) { + $this->videos = $videos; + } + public function getVideos() { + return $this->videos; + } +} + +class Google_VideoPlayer extends Google_Model { + public $embedHtml; + public function setEmbedHtml($embedHtml) { + $this->embedHtml = $embedHtml; + } + public function getEmbedHtml() { + return $this->embedHtml; + } +} + +class Google_VideoSnippet extends Google_Model { + protected $__thumbnailsType = 'Google_Thumbnail'; + protected $__thumbnailsDataType = 'map'; + public $thumbnails; + public $tags; + public $channelId; + public $publishedAt; + public $title; + public $categoryId; + public $description; + public function setThumbnails(Google_Thumbnail $thumbnails) { + $this->thumbnails = $thumbnails; + } + public function getThumbnails() { + return $this->thumbnails; + } + public function setTags(/* array(Google_string) */ $tags) { + $this->assertIsArray($tags, 'Google_string', __METHOD__); + $this->tags = $tags; + } + public function getTags() { + return $this->tags; + } + public function setChannelId($channelId) { + $this->channelId = $channelId; + } + public function getChannelId() { + return $this->channelId; + } + public function setPublishedAt($publishedAt) { + $this->publishedAt = $publishedAt; + } + public function getPublishedAt() { + return $this->publishedAt; + } + public function setTitle($title) { + $this->title = $title; + } + public function getTitle() { + return $this->title; + } + public function setCategoryId($categoryId) { + $this->categoryId = $categoryId; + } + public function getCategoryId() { + return $this->categoryId; + } + public function setDescription($description) { + $this->description = $description; + } + public function getDescription() { + return $this->description; + } +} + +class Google_VideoStatistics extends Google_Model { + public $commentCount; + public $viewCount; + public $favoriteCount; + public $dislikeCount; + public $likeCount; + public function setCommentCount($commentCount) { + $this->commentCount = $commentCount; + } + public function getCommentCount() { + return $this->commentCount; + } + public function setViewCount($viewCount) { + $this->viewCount = $viewCount; + } + public function getViewCount() { + return $this->viewCount; + } + public function setFavoriteCount($favoriteCount) { + $this->favoriteCount = $favoriteCount; + } + public function getFavoriteCount() { + return $this->favoriteCount; + } + public function setDislikeCount($dislikeCount) { + $this->dislikeCount = $dislikeCount; + } + public function getDislikeCount() { + return $this->dislikeCount; + } + public function setLikeCount($likeCount) { + $this->likeCount = $likeCount; + } + public function getLikeCount() { + return $this->likeCount; + } +} + +class Google_VideoStatus extends Google_Model { + public $privacyStatus; + public $uploadStatus; + public $rejectionReason; + public $failureReason; + public function setPrivacyStatus($privacyStatus) { + $this->privacyStatus = $privacyStatus; + } + public function getPrivacyStatus() { + return $this->privacyStatus; + } + public function setUploadStatus($uploadStatus) { + $this->uploadStatus = $uploadStatus; + } + public function getUploadStatus() { + return $this->uploadStatus; + } + public function setRejectionReason($rejectionReason) { + $this->rejectionReason = $rejectionReason; + } + public function getRejectionReason() { + return $this->rejectionReason; + } + public function setFailureReason($failureReason) { + $this->failureReason = $failureReason; + } + public function getFailureReason() { + return $this->failureReason; + } +} diff --git a/modules/oauth/src/google/external/URITemplateParser.php b/modules/oauth/src/google/external/URITemplateParser.php new file mode 100644 index 0000000..594adbb --- /dev/null +++ b/modules/oauth/src/google/external/URITemplateParser.php @@ -0,0 +1,209 @@ +template = $template; + } + + public function expand($data) { + // Modification to make this a bit more performant (since gettype is very slow) + if (! is_array($data)) { + $data = (array)$data; + } + /* + // Original code, which uses a slow gettype() statement, kept in place for if the assumption that is_array always works here is incorrect + switch (gettype($data)) { + case "boolean": + case "integer": + case "double": + case "string": + case "object": + $data = (array)$data; + break; + } +*/ + + // Resolve template vars + preg_match_all('/\{([^\}]*)\}/', $this->template, $em); + + foreach ($em[1] as $i => $bare_expression) { + preg_match('/^([\+\;\?\/\.]{1})?(.*)$/', $bare_expression, $lm); + $exp = new StdClass(); + $exp->expression = $em[0][$i]; + $exp->operator = $lm[1]; + $exp->variable_list = $lm[2]; + $exp->varspecs = explode(',', $exp->variable_list); + $exp->vars = array(); + foreach ($exp->varspecs as $varspec) { + preg_match('/^([a-zA-Z0-9_]+)([\*\+]{1})?([\:\^][0-9-]+)?(\=[^,]+)?$/', $varspec, $vm); + $var = new StdClass(); + $var->name = $vm[1]; + $var->modifier = isset($vm[2]) && $vm[2] ? $vm[2] : null; + $var->modifier = isset($vm[3]) && $vm[3] ? $vm[3] : $var->modifier; + $var->default = isset($vm[4]) ? substr($vm[4], 1) : null; + $exp->vars[] = $var; + } + + // Add processing flags + $exp->reserved = false; + $exp->prefix = ''; + $exp->delimiter = ','; + switch ($exp->operator) { + case '+': + $exp->reserved = 'true'; + break; + case ';': + $exp->prefix = ';'; + $exp->delimiter = ';'; + break; + case '?': + $exp->prefix = '?'; + $exp->delimiter = '&'; + break; + case '/': + $exp->prefix = '/'; + $exp->delimiter = '/'; + break; + case '.': + $exp->prefix = '.'; + $exp->delimiter = '.'; + break; + } + $expressions[] = $exp; + } + + // Expansion + $this->expansion = $this->template; + + foreach ($expressions as $exp) { + $part = $exp->prefix; + $exp->one_var_defined = false; + foreach ($exp->vars as $var) { + $val = ''; + if ($exp->one_var_defined && isset($data[$var->name])) { + $part .= $exp->delimiter; + } + // Variable present + if (isset($data[$var->name])) { + $exp->one_var_defined = true; + $var->data = $data[$var->name]; + + $val = self::val_from_var($var, $exp); + + // Variable missing + } else { + if ($var->default) { + $exp->one_var_defined = true; + $val = $var->default; + } + } + $part .= $val; + } + if (! $exp->one_var_defined) $part = ''; + $this->expansion = str_replace($exp->expression, $part, $this->expansion); + } + + return $this->expansion; + } + + private function val_from_var($var, $exp) { + $val = ''; + if (is_array($var->data)) { + $i = 0; + if ($exp->operator == '?' && ! $var->modifier) { + $val .= $var->name . '='; + } + foreach ($var->data as $k => $v) { + $del = $var->modifier ? $exp->delimiter : ','; + $ek = rawurlencode($k); + $ev = rawurlencode($v); + + // Array + if ($k !== $i) { + if ($var->modifier == '+') { + $val .= $var->name . '.'; + } + if ($exp->operator == '?' && $var->modifier || $exp->operator == ';' && $var->modifier == '*' || $exp->operator == ';' && $var->modifier == '+') { + $val .= $ek . '='; + } else { + $val .= $ek . $del; + } + + // List + } else { + if ($var->modifier == '+') { + if ($exp->operator == ';' && $var->modifier == '*' || $exp->operator == ';' && $var->modifier == '+' || $exp->operator == '?' && $var->modifier == '+') { + $val .= $var->name . '='; + } else { + $val .= $var->name . '.'; + } + } + } + $val .= $ev . $del; + $i ++; + } + $val = trim($val, $del); + + // Strings, numbers, etc. + } else { + if ($exp->operator == '?') { + $val = $var->name . (isset($var->data) ? '=' : ''); + } else if ($exp->operator == ';') { + $val = $var->name . ($var->data ? '=' : ''); + } + $val .= rawurlencode($var->data); + if ($exp->operator == '+') { + $val = str_replace(self::$reserved_pct, self::$reserved, $val); + } + } + return $val; + } + + public function match($uri) {} + + public function __toString() { + return $this->template; + } +} diff --git a/modules/oauth/src/google/io/Google_CacheParser.php b/modules/oauth/src/google/io/Google_CacheParser.php new file mode 100644 index 0000000..7f5accf --- /dev/null +++ b/modules/oauth/src/google/io/Google_CacheParser.php @@ -0,0 +1,173 @@ + + */ +class Google_CacheParser { + public static $CACHEABLE_HTTP_METHODS = array('GET', 'HEAD'); + public static $CACHEABLE_STATUS_CODES = array('200', '203', '300', '301'); + + private function __construct() {} + + /** + * Check if an HTTP request can be cached by a private local cache. + * + * @static + * @param Google_HttpRequest $resp + * @return bool True if the request is cacheable. + * False if the request is uncacheable. + */ + public static function isRequestCacheable (Google_HttpRequest $resp) { + $method = $resp->getRequestMethod(); + if (! in_array($method, self::$CACHEABLE_HTTP_METHODS)) { + return false; + } + + // Don't cache authorized requests/responses. + // [rfc2616-14.8] When a shared cache receives a request containing an + // Authorization field, it MUST NOT return the corresponding response + // as a reply to any other request... + if ($resp->getRequestHeader("authorization")) { + return false; + } + + return true; + } + + /** + * Check if an HTTP response can be cached by a private local cache. + * + * @static + * @param Google_HttpRequest $resp + * @return bool True if the response is cacheable. + * False if the response is un-cacheable. + */ + public static function isResponseCacheable (Google_HttpRequest $resp) { + // First, check if the HTTP request was cacheable before inspecting the + // HTTP response. + if (false == self::isRequestCacheable($resp)) { + return false; + } + + $code = $resp->getResponseHttpCode(); + if (! in_array($code, self::$CACHEABLE_STATUS_CODES)) { + return false; + } + + // The resource is uncacheable if the resource is already expired and + // the resource doesn't have an ETag for revalidation. + $etag = $resp->getResponseHeader("etag"); + if (self::isExpired($resp) && $etag == false) { + return false; + } + + // [rfc2616-14.9.2] If [no-store is] sent in a response, a cache MUST NOT + // store any part of either this response or the request that elicited it. + $cacheControl = $resp->getParsedCacheControl(); + if (isset($cacheControl['no-store'])) { + return false; + } + + // Pragma: no-cache is an http request directive, but is occasionally + // used as a response header incorrectly. + $pragma = $resp->getResponseHeader('pragma'); + if ($pragma == 'no-cache' || strpos($pragma, 'no-cache') !== false) { + return false; + } + + // [rfc2616-14.44] Vary: * is extremely difficult to cache. "It implies that + // a cache cannot determine from the request headers of a subsequent request + // whether this response is the appropriate representation." + // Given this, we deem responses with the Vary header as uncacheable. + $vary = $resp->getResponseHeader('vary'); + if ($vary) { + return false; + } + + return true; + } + + /** + * @static + * @param Google_HttpRequest $resp + * @return bool True if the HTTP response is considered to be expired. + * False if it is considered to be fresh. + */ + public static function isExpired(Google_HttpRequest $resp) { + // HTTP/1.1 clients and caches MUST treat other invalid date formats, + // especially including the value “0”, as in the past. + $parsedExpires = false; + $responseHeaders = $resp->getResponseHeaders(); + if (isset($responseHeaders['expires'])) { + $rawExpires = $responseHeaders['expires']; + // Check for a malformed expires header first. + if (empty($rawExpires) || (is_numeric($rawExpires) && $rawExpires <= 0)) { + return true; + } + + // See if we can parse the expires header. + $parsedExpires = strtotime($rawExpires); + if (false == $parsedExpires || $parsedExpires <= 0) { + return true; + } + } + + // Calculate the freshness of an http response. + $freshnessLifetime = false; + $cacheControl = $resp->getParsedCacheControl(); + if (isset($cacheControl['max-age'])) { + $freshnessLifetime = $cacheControl['max-age']; + } + + $rawDate = $resp->getResponseHeader('date'); + $parsedDate = strtotime($rawDate); + + if (empty($rawDate) || false == $parsedDate) { + $parsedDate = time(); + } + if (false == $freshnessLifetime && isset($responseHeaders['expires'])) { + $freshnessLifetime = $parsedExpires - $parsedDate; + } + + if (false == $freshnessLifetime) { + return true; + } + + // Calculate the age of an http response. + $age = max(0, time() - $parsedDate); + if (isset($responseHeaders['age'])) { + $age = max($age, strtotime($responseHeaders['age'])); + } + + return $freshnessLifetime <= $age; + } + + /** + * Determine if a cache entry should be revalidated with by the origin. + * + * @param Google_HttpRequest $response + * @return bool True if the entry is expired, else return false. + */ + public static function mustRevalidate(Google_HttpRequest $response) { + // [13.3] When a cache has a stale entry that it would like to use as a + // response to a client's request, it first has to check with the origin + // server to see if its cached entry is still usable. + return self::isExpired($response); + } +} \ No newline at end of file diff --git a/modules/oauth/src/google/io/Google_CurlIO.php b/modules/oauth/src/google/io/Google_CurlIO.php new file mode 100644 index 0000000..65352f2 --- /dev/null +++ b/modules/oauth/src/google/io/Google_CurlIO.php @@ -0,0 +1,278 @@ + + * @author Chirag Shah + */ + +require_once 'Google_CacheParser.php'; + +class Google_CurlIO implements Google_IO { + const CONNECTION_ESTABLISHED = "HTTP/1.0 200 Connection established\r\n\r\n"; + const FORM_URLENCODED = 'application/x-www-form-urlencoded'; + + private static $ENTITY_HTTP_METHODS = array("POST" => null, "PUT" => null); + private static $HOP_BY_HOP = array( + 'connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', + 'te', 'trailers', 'transfer-encoding', 'upgrade'); + + private $curlParams = array ( + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FOLLOWLOCATION => 0, + CURLOPT_FAILONERROR => false, + CURLOPT_SSL_VERIFYPEER => true, + CURLOPT_HEADER => true, + CURLOPT_VERBOSE => false, + ); + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_HttpRequest $request + * @return Google_HttpRequest The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_HttpRequest $request) { + $request = Google_Client::$auth->sign($request); + return $this->makeRequest($request); + } + + /** + * Execute a apiHttpRequest + * + * @param Google_HttpRequest $request the http request to be executed + * @return Google_HttpRequest http request with the response http code, response + * headers and response body filled in + * @throws Google_IOException on curl or IO error + */ + public function makeRequest(Google_HttpRequest $request) { + // First, check to see if we have a valid cached version. + $cached = $this->getCachedRequest($request); + if ($cached !== false) { + if (Google_CacheParser::mustRevalidate($cached)) { + $addHeaders = array(); + if ($cached->getResponseHeader('etag')) { + // [13.3.4] If an entity tag has been provided by the origin server, + // we must use that entity tag in any cache-conditional request. + $addHeaders['If-None-Match'] = $cached->getResponseHeader('etag'); + } elseif ($cached->getResponseHeader('date')) { + $addHeaders['If-Modified-Since'] = $cached->getResponseHeader('date'); + } + + $request->setRequestHeaders($addHeaders); + } else { + // No need to revalidate the request, return it directly + return $cached; + } + } + + if (array_key_exists($request->getRequestMethod(), + self::$ENTITY_HTTP_METHODS)) { + $request = $this->processEntityRequest($request); + } + + $ch = curl_init(); + curl_setopt_array($ch, $this->curlParams); + curl_setopt($ch, CURLOPT_URL, $request->getUrl()); + if ($request->getPostBody()) { + curl_setopt($ch, CURLOPT_POSTFIELDS, $request->getPostBody()); + } + + $requestHeaders = $request->getRequestHeaders(); + if ($requestHeaders && is_array($requestHeaders)) { + $parsed = array(); + foreach ($requestHeaders as $k => $v) { + $parsed[] = "$k: $v"; + } + curl_setopt($ch, CURLOPT_HTTPHEADER, $parsed); + } + + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $request->getRequestMethod()); + curl_setopt($ch, CURLOPT_USERAGENT, $request->getUserAgent()); + $respData = curl_exec($ch); + + // Retry if certificates are missing. + if (curl_errno($ch) == CURLE_SSL_CACERT) { + error_log('SSL certificate problem, verify that the CA cert is OK.' + . ' Retrying with the CA cert bundle from google-api-php-client.'); + curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacerts.pem'); + $respData = curl_exec($ch); + } + + $respHeaderSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); + $respHttpCode = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE); + $curlErrorNum = curl_errno($ch); + $curlError = curl_error($ch); + curl_close($ch); + if ($curlErrorNum != CURLE_OK) { + throw new Google_IOException("HTTP Error: ($respHttpCode) $curlError"); + } + + // Parse out the raw response into usable bits + list($responseHeaders, $responseBody) = + self::parseHttpResponse($respData, $respHeaderSize); + + if ($respHttpCode == 304 && $cached) { + // If the server responded NOT_MODIFIED, return the cached request. + if (isset($responseHeaders['connection'])) { + $hopByHop = array_merge( + self::$HOP_BY_HOP, + explode(',', $responseHeaders['connection']) + ); + + $endToEnd = array(); + foreach($hopByHop as $key) { + if (isset($responseHeaders[$key])) { + $endToEnd[$key] = $responseHeaders[$key]; + } + } + $cached->setResponseHeaders($endToEnd); + } + return $cached; + } + + // Fill in the apiHttpRequest with the response values + $request->setResponseHttpCode($respHttpCode); + $request->setResponseHeaders($responseHeaders); + $request->setResponseBody($responseBody); + // Store the request in cache (the function checks to see if the request + // can actually be cached) + $this->setCachedRequest($request); + // And finally return it + return $request; + } + + /** + * @visible for testing. + * Cache the response to an HTTP request if it is cacheable. + * @param Google_HttpRequest $request + * @return bool Returns true if the insertion was successful. + * Otherwise, return false. + */ + public function setCachedRequest(Google_HttpRequest $request) { + // Determine if the request is cacheable. + if (Google_CacheParser::isResponseCacheable($request)) { + Google_Client::$cache->set($request->getCacheKey(), $request); + return true; + } + + return false; + } + + /** + * @visible for testing. + * @param Google_HttpRequest $request + * @return Google_HttpRequest|bool Returns the cached object or + * false if the operation was unsuccessful. + */ + public function getCachedRequest(Google_HttpRequest $request) { + if (false == Google_CacheParser::isRequestCacheable($request)) { + false; + } + + return Google_Client::$cache->get($request->getCacheKey()); + } + + /** + * @param $respData + * @param $headerSize + * @return array + */ + public static function parseHttpResponse($respData, $headerSize) { + if (stripos($respData, self::CONNECTION_ESTABLISHED) !== false) { + $respData = str_ireplace(self::CONNECTION_ESTABLISHED, '', $respData); + } + + if ($headerSize) { + $responseBody = substr($respData, $headerSize); + $responseHeaders = substr($respData, 0, $headerSize); + } else { + list($responseHeaders, $responseBody) = explode("\r\n\r\n", $respData, 2); + } + + $responseHeaders = self::parseResponseHeaders($responseHeaders); + return array($responseHeaders, $responseBody); + } + + public static function parseResponseHeaders($rawHeaders) { + $responseHeaders = array(); + + $responseHeaderLines = explode("\r\n", $rawHeaders); + foreach ($responseHeaderLines as $headerLine) { + if ($headerLine && strpos($headerLine, ':') !== false) { + list($header, $value) = explode(': ', $headerLine, 2); + $header = strtolower($header); + if (isset($responseHeaders[$header])) { + $responseHeaders[$header] .= "\n" . $value; + } else { + $responseHeaders[$header] = $value; + } + } + } + return $responseHeaders; + } + + /** + * @visible for testing + * Process an http request that contains an enclosed entity. + * @param Google_HttpRequest $request + * @return Google_HttpRequest Processed request with the enclosed entity. + */ + public function processEntityRequest(Google_HttpRequest $request) { + $postBody = $request->getPostBody(); + $contentType = $request->getRequestHeader("content-type"); + + // Set the default content-type as application/x-www-form-urlencoded. + if (false == $contentType) { + $contentType = self::FORM_URLENCODED; + $request->setRequestHeaders(array('content-type' => $contentType)); + } + + // Force the payload to match the content-type asserted in the header. + if ($contentType == self::FORM_URLENCODED && is_array($postBody)) { + $postBody = http_build_query($postBody, '', '&'); + $request->setPostBody($postBody); + } + + // Make sure the content-length header is set. + if (!$postBody || is_string($postBody)) { + $postsLength = strlen($postBody); + $request->setRequestHeaders(array('content-length' => $postsLength)); + } + + return $request; + } + + /** + * Set options that update cURL's default behavior. + * The list of accepted options are: + * {@link http://php.net/manual/en/function.curl-setopt.php] + * + * @param array $optCurlParams Multiple options used by a cURL session. + */ + public function setOptions($optCurlParams) { + foreach ($optCurlParams as $key => $val) { + $this->curlParams[$key] = $val; + } + } +} \ No newline at end of file diff --git a/modules/oauth/src/google/io/Google_HttpRequest.php b/modules/oauth/src/google/io/Google_HttpRequest.php new file mode 100644 index 0000000..b98eae5 --- /dev/null +++ b/modules/oauth/src/google/io/Google_HttpRequest.php @@ -0,0 +1,304 @@ + + * @author Chirag Shah + * + */ +class Google_HttpRequest { + const USER_AGENT_SUFFIX = "google-api-php-client/0.6.0"; + private $batchHeaders = array( + 'Content-Type' => 'application/http', + 'Content-Transfer-Encoding' => 'binary', + 'MIME-Version' => '1.0', + 'Content-Length' => '' + ); + + protected $url; + protected $requestMethod; + protected $requestHeaders; + protected $postBody; + protected $userAgent; + + protected $responseHttpCode; + protected $responseHeaders; + protected $responseBody; + + public $accessKey; + + public function __construct($url, $method = 'GET', $headers = array(), $postBody = null) { + $this->setUrl($url); + $this->setRequestMethod($method); + $this->setRequestHeaders($headers); + $this->setPostBody($postBody); + + global $apiConfig; + if (empty($apiConfig['application_name'])) { + $this->userAgent = self::USER_AGENT_SUFFIX; + } else { + $this->userAgent = $apiConfig['application_name'] . " " . self::USER_AGENT_SUFFIX; + } + } + + /** + * Misc function that returns the base url component of the $url + * used by the OAuth signing class to calculate the base string + * @return string The base url component of the $url. + * @see http://oauth.net/core/1.0a/#anchor13 + */ + public function getBaseUrl() { + if ($pos = strpos($this->url, '?')) { + return substr($this->url, 0, $pos); + } + return $this->url; + } + + /** + * Misc function that returns an array of the query parameters of the current + * url used by the OAuth signing class to calculate the signature + * @return array Query parameters in the query string. + */ + public function getQueryParams() { + if ($pos = strpos($this->url, '?')) { + $queryStr = substr($this->url, $pos + 1); + $params = array(); + parse_str($queryStr, $params); + return $params; + } + return array(); + } + + /** + * @return string HTTP Response Code. + */ + public function getResponseHttpCode() { + return (int) $this->responseHttpCode; + } + + /** + * @param int $responseHttpCode HTTP Response Code. + */ + public function setResponseHttpCode($responseHttpCode) { + $this->responseHttpCode = $responseHttpCode; + } + + /** + * @return $responseHeaders (array) HTTP Response Headers. + */ + public function getResponseHeaders() { + return $this->responseHeaders; + } + + /** + * @return string HTTP Response Body + */ + public function getResponseBody() { + return $this->responseBody; + } + + /** + * @param array $headers The HTTP response headers + * to be normalized. + */ + public function setResponseHeaders($headers) { + $headers = Google_Utils::normalize($headers); + if ($this->responseHeaders) { + $headers = array_merge($this->responseHeaders, $headers); + } + + $this->responseHeaders = $headers; + } + + /** + * @param string $key + * @return array|boolean Returns the requested HTTP header or + * false if unavailable. + */ + public function getResponseHeader($key) { + return isset($this->responseHeaders[$key]) + ? $this->responseHeaders[$key] + : false; + } + + /** + * @param string $responseBody The HTTP response body. + */ + public function setResponseBody($responseBody) { + $this->responseBody = $responseBody; + } + + /** + * @return string $url The request URL. + */ + + public function getUrl() { + return $this->url; + } + + /** + * @return string $method HTTP Request Method. + */ + public function getRequestMethod() { + return $this->requestMethod; + } + + /** + * @return array $headers HTTP Request Headers. + */ + public function getRequestHeaders() { + return $this->requestHeaders; + } + + /** + * @param string $key + * @return array|boolean Returns the requested HTTP header or + * false if unavailable. + */ + public function getRequestHeader($key) { + return isset($this->requestHeaders[$key]) + ? $this->requestHeaders[$key] + : false; + } + + /** + * @return string $postBody HTTP Request Body. + */ + public function getPostBody() { + return $this->postBody; + } + + /** + * @param string $url the url to set + */ + public function setUrl($url) { + if (substr($url, 0, 4) == 'http') { + $this->url = $url; + } else { + // Force the path become relative. + if (substr($url, 0, 1) !== '/') { + $url = '/' . $url; + } + global $apiConfig; + $this->url = $apiConfig['basePath'] . $url; + } + } + + /** + * @param string $method Set he HTTP Method and normalize + * it to upper-case, as required by HTTP. + * + */ + public function setRequestMethod($method) { + $this->requestMethod = strtoupper($method); + } + + /** + * @param array $headers The HTTP request headers + * to be set and normalized. + */ + public function setRequestHeaders($headers) { + $headers = Google_Utils::normalize($headers); + if ($this->requestHeaders) { + $headers = array_merge($this->requestHeaders, $headers); + } + $this->requestHeaders = $headers; + } + + /** + * @param string $postBody the postBody to set + */ + public function setPostBody($postBody) { + $this->postBody = $postBody; + } + + /** + * Set the User-Agent Header. + * @param string $userAgent The User-Agent. + */ + public function setUserAgent($userAgent) { + $this->userAgent = $userAgent; + } + + /** + * @return string The User-Agent. + */ + public function getUserAgent() { + return $this->userAgent; + } + + /** + * Returns a cache key depending on if this was an OAuth signed request + * in which case it will use the non-signed url and access key to make this + * cache key unique per authenticated user, else use the plain request url + * @return string The md5 hash of the request cache key. + */ + public function getCacheKey() { + $key = $this->getUrl(); + + if (isset($this->accessKey)) { + $key .= $this->accessKey; + } + + if (isset($this->requestHeaders['authorization'])) { + $key .= $this->requestHeaders['authorization']; + } + + return md5($key); + } + + public function getParsedCacheControl() { + $parsed = array(); + $rawCacheControl = $this->getResponseHeader('cache-control'); + if ($rawCacheControl) { + $rawCacheControl = str_replace(', ', '&', $rawCacheControl); + parse_str($rawCacheControl, $parsed); + } + + return $parsed; + } + + /** + * @param string $id + * @return string A string representation of the HTTP Request. + */ + public function toBatchString($id) { + $str = ''; + foreach($this->batchHeaders as $key => $val) { + $str .= $key . ': ' . $val . "\n"; + } + + $str .= "Content-ID: $id\n"; + $str .= "\n"; + + $path = parse_url($this->getUrl(), PHP_URL_PATH); + $str .= $this->getRequestMethod() . ' ' . $path . " HTTP/1.1\n"; + foreach($this->getRequestHeaders() as $key => $val) { + $str .= $key . ': ' . $val . "\n"; + } + + if ($this->getPostBody()) { + $str .= "\n"; + $str .= $this->getPostBody(); + } + + return $str; + } +} diff --git a/modules/oauth/src/google/io/Google_IO.php b/modules/oauth/src/google/io/Google_IO.php new file mode 100644 index 0000000..5445e69 --- /dev/null +++ b/modules/oauth/src/google/io/Google_IO.php @@ -0,0 +1,49 @@ + + */ +interface Google_IO { + /** + * An utility function that first calls $this->auth->sign($request) and then executes makeRequest() + * on that signed request. Used for when a request should be authenticated + * @param Google_HttpRequest $request + * @return Google_HttpRequest $request + */ + public function authenticatedRequest(Google_HttpRequest $request); + + /** + * Executes a apIHttpRequest and returns the resulting populated httpRequest + * @param Google_HttpRequest $request + * @return Google_HttpRequest $request + */ + public function makeRequest(Google_HttpRequest $request); + + /** + * Set options that update the transport implementation's behavior. + * @param $options + */ + public function setOptions($options); + +} diff --git a/modules/oauth/src/google/io/Google_REST.php b/modules/oauth/src/google/io/Google_REST.php new file mode 100644 index 0000000..a53055a --- /dev/null +++ b/modules/oauth/src/google/io/Google_REST.php @@ -0,0 +1,128 @@ + + * @author Chirag Shah + */ +class Google_REST { + /** + * Executes a apiServiceRequest using a RESTful call by transforming it into + * an apiHttpRequest, and executed via apiIO::authenticatedRequest(). + * + * @param Google_HttpRequest $req + * @return array decoded result + * @throws Google_ServiceException on server side error (ie: not authenticated, + * invalid or malformed post body, invalid url) + */ + static public function execute(Google_HttpRequest $req) { + $httpRequest = Google_Client::$io->makeRequest($req); + $decodedResponse = self::decodeHttpResponse($httpRequest); + $ret = isset($decodedResponse['data']) + ? $decodedResponse['data'] : $decodedResponse; + return $ret; + } + + + /** + * Decode an HTTP Response. + * @static + * @throws Google_ServiceException + * @param Google_HttpRequest $response The http response to be decoded. + * @return mixed|null + */ + public static function decodeHttpResponse($response) { + $code = $response->getResponseHttpCode(); + $body = $response->getResponseBody(); + $decoded = null; + + if ($code != '200' && $code != '201' && $code != '204') { + $decoded = json_decode($body, true); + $err = 'Error calling ' . $response->getRequestMethod() . ' ' . $response->getUrl(); + if ($decoded != null && isset($decoded['error']['message']) && isset($decoded['error']['code'])) { + // if we're getting a json encoded error definition, use that instead of the raw response + // body for improved readability + $err .= ": ({$decoded['error']['code']}) {$decoded['error']['message']}"; + } else { + $err .= ": ($code) $body"; + } + + throw new Google_ServiceException($err, $code, null, $decoded['error']['errors']); + } + + // Only attempt to decode the response, if the response code wasn't (204) 'no content' + if ($code != '204') { + $decoded = json_decode($body, true); + if ($decoded === null || $decoded === "") { + throw new Google_ServiceException("Invalid json in service response: $body"); + } + } + return $decoded; + } + + /** + * Parse/expand request parameters and create a fully qualified + * request uri. + * @static + * @param string $servicePath + * @param string $restPath + * @param array $params + * @return string $requestUrl + */ + static function createRequestUri($servicePath, $restPath, $params) { + $requestUrl = $servicePath . $restPath; + $uriTemplateVars = array(); + $queryVars = array(); + foreach ($params as $paramName => $paramSpec) { + // Discovery v1.0 puts the canonical location under the 'location' field. + if (! isset($paramSpec['location'])) { + $paramSpec['location'] = $paramSpec['restParameterType']; + } + + if ($paramSpec['type'] == 'boolean') { + $paramSpec['value'] = ($paramSpec['value']) ? 'true' : 'false'; + } + if ($paramSpec['location'] == 'path') { + $uriTemplateVars[$paramName] = $paramSpec['value']; + } else { + if (isset($paramSpec['repeated']) && is_array($paramSpec['value'])) { + foreach ($paramSpec['value'] as $value) { + $queryVars[] = $paramName . '=' . rawurlencode($value); + } + } else { + $queryVars[] = $paramName . '=' . rawurlencode($paramSpec['value']); + } + } + } + + if (count($uriTemplateVars)) { + $uriTemplateParser = new URI_Template_Parser($requestUrl); + $requestUrl = $uriTemplateParser->expand($uriTemplateVars); + } + //FIXME work around for the the uri template lib which url encodes + // the @'s & confuses our servers. + $requestUrl = str_replace('%40', '@', $requestUrl); + + if (count($queryVars)) { + $requestUrl .= '?' . implode($queryVars, '&'); + } + + return $requestUrl; + } +} diff --git a/modules/oauth/src/google/io/cacerts.pem b/modules/oauth/src/google/io/cacerts.pem new file mode 100644 index 0000000..da36ed1 --- /dev/null +++ b/modules/oauth/src/google/io/cacerts.pem @@ -0,0 +1,714 @@ +# Certifcate Authority certificates for validating SSL connections. +# +# This file contains PEM format certificates generated from +# http://mxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt +# +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (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.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Netscape security libraries. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1994-2000 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +Verisign/RSA Secure Server CA +============================= + +-----BEGIN CERTIFICATE----- +MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD +VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 +MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV +BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy +dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ +ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII +0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI +uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI +hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 +YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc +1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== +-----END CERTIFICATE----- + +Thawte Personal Basic CA +======================== + +-----BEGIN CERTIFICATE----- +MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD +VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT +ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj +IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X +DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw +EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE +ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy +dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD +QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN +BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 +dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK +wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 +G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF +AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 +c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P +9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== +-----END CERTIFICATE----- + +Thawte Personal Premium CA +========================== + +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD +VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT +ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p +dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv +bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa +QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY +BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u +IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl +bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu +Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs +Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI +Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD +ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH +b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh +KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ +-----END CERTIFICATE----- + +Thawte Personal Freemail CA +=========================== + +-----BEGIN CERTIFICATE----- +MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD +VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT +ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt +YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu +Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa +MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG +cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh +d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY +DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E +rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq +uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN +BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP +MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa +/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei +gQ== +-----END CERTIFICATE----- + +Thawte Server CA +================ + +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== + +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= + +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy +dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 +MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx +dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f +BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A +cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ +MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm +aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw +ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj +IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y +7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh +1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority +======================================================= + +-----BEGIN CERTIFICATE----- +MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh +c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 +NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD +VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp +bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N +H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR +4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN +BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo +EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 +FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx +lA== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority +======================================================= + +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh +YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 +FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg +J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc +r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= + +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK +VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm +Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J +h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul +uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 +DzFc6PLZ +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns +YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe +Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj +IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx +KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM +HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw +DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC +AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji +nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX +rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn +jBJ7xUS0rg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDM +HO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtK +qsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwj +cSGIL4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y +cyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRP +T8qAkbYp +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 +nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO +8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV +ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb +PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 +6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr +n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a +qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 +wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 +ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs +pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 +E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy +aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp +Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV +BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp +Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g +Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU +J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO +JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY +wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o +koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN +qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E +Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe +xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u +7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU +sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI +sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP +cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== + +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= + +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= + +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj +dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 +NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD +VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G +vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ +BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl +IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw +NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq +y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy +0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 +E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN +-----END CERTIFICATE----- + +Thawte Time Stamping CA +======================= + +-----BEGIN CERTIFICATE----- +MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN +BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAd +BgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcwMTAxMDAwMDAwWhcN +MjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g +Q2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG +A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1l +c3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT +6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQa +Wt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL +8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC +9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQ +pgCed/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZ +CayJSdM= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== + +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +Entrust.net Secure Server Certification Authority +================================================= + +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Go Daddy Certification Authority Root Certificate Bundle +======================================================== + +-----BEGIN CERTIFICATE----- +MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx +ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw +MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH +QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j +b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j +b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H +KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm +VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR +SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT +cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ +6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu +MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS +kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB +BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f +BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv +c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH +AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG +OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU +A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o +0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX +RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH +qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV +U+4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Zh +bGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu +Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g +QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAe +BgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDYyMFoX +DTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBE +YWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgMiBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgC +ggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+q +N1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiO +r18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lN +f4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+YihfukEH +U1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ4EFgQU0sSw0pHU +TBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBuzEkMCIGA1UEBxMb +VmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQKEw5WYWxpQ2VydCwg +SW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2xpY3kgVmFsaWRhdGlv +biBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudmFsaWNlcnQuY29tLzEg +MB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CAQEwDwYDVR0TAQH/BAUw +AwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmdv +ZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jZXJ0aWZpY2F0ZXMu +Z29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybDBLBgNVHSAERDBCMEAGBFUd +IAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv +bS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQC1 +QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+Sn1eocSxI0YGyeR+sBjUZsE4O +WBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgMQLARzLrUc+cb53S8wGd9D0Vmsf +SxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j09VZw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + diff --git a/modules/oauth/src/google/login.php b/modules/oauth/src/google/login.php new file mode 100644 index 0000000..8083238 --- /dev/null +++ b/modules/oauth/src/google/login.php @@ -0,0 +1,51 @@ +Google Developer Console"); + } + + include_once($config['src']."google/Google_Client.php"); + include_once($config['src']."google/contrib/Google_Oauth2Service.php"); + + $Client = new Google_Client(); + $Client->setApplicationName($config['google']['ApplicationName']); + $Client->setClientId($config['google']['clientId']); + $Client->setClientSecret($config['google']['clientSecret']); + $Client->setRedirectUri($config['login_url']."?oauth=google"); + $google_oauth = new Google_Oauth2Service($Client); + + if(isset($_GET['code'])){ + $Client->authenticate(); + $_SESSION['token'] = $Client->getAccessToken(); + //header('Location: ' . $Config['google']['login_url']); + } + + if (isset($_SESSION['token'])) { + $Client->setAccessToken($token); + } + + if ($Client->getAccessToken()) { + $UserData = $google_oauth->userinfo->get(); + $data = array(); + $data['oauth'] = "google"; + $data['uid'] = $UserData['id']; + $data['name'] = $UserData['given_name'] ." ". $UserData['family_name']; + $data['email'] = $UserData['email']; + $data['gender'] = $UserData['gender']; + $data['last_name'] = $UserData['given_name']; + $data['first_name'] = $UserData['family_name']; + $data['picture'] = $UserData['picture']; + $loginer->user((object)$data); + $_SESSION['sloginer'] = array("uid" => $data['uid'], "name" => $data['name'], "oauth" => $data['oauth']); + unset($_SESSION['token']); + header("location: ".$config['return_url']); + exit(); + } else { + $loginUrl = $Client->createAuthUrl(); + header("location: ".$loginUrl); + exit(); + } + } +} \ No newline at end of file diff --git a/modules/oauth/src/google/service/Google_BatchRequest.php b/modules/oauth/src/google/service/Google_BatchRequest.php new file mode 100644 index 0000000..3916b22 --- /dev/null +++ b/modules/oauth/src/google/service/Google_BatchRequest.php @@ -0,0 +1,110 @@ + + */ +class Google_BatchRequest { + /** @var string Multipart Boundary. */ + private $boundary; + + /** @var array service requests to be executed. */ + private $requests = array(); + + public function __construct($boundary = false) { + $boundary = (false == $boundary) ? mt_rand() : $boundary; + $this->boundary = str_replace('"', '', $boundary); + } + + public function add(Google_HttpRequest $request, $key = false) { + if (false == $key) { + $key = mt_rand(); + } + + $this->requests[$key] = $request; + } + + public function execute() { + $body = ''; + + /** @var Google_HttpRequest $req */ + foreach($this->requests as $key => $req) { + $body .= "--{$this->boundary}\n"; + $body .= $req->toBatchString($key) . "\n"; + } + + $body = rtrim($body); + $body .= "\n--{$this->boundary}--"; + + global $apiConfig; + $url = $apiConfig['basePath'] . '/batch'; + $httpRequest = new Google_HttpRequest($url, 'POST'); + $httpRequest->setRequestHeaders(array( + 'Content-Type' => 'multipart/mixed; boundary=' . $this->boundary)); + + $httpRequest->setPostBody($body); + $response = Google_Client::$io->makeRequest($httpRequest); + + $response = $this->parseResponse($response); + return $response; + } + + public function parseResponse(Google_HttpRequest $response) { + $contentType = $response->getResponseHeader('content-type'); + $contentType = explode(';', $contentType); + $boundary = false; + foreach($contentType as $part) { + $part = (explode('=', $part, 2)); + if (isset($part[0]) && 'boundary' == trim($part[0])) { + $boundary = $part[1]; + } + } + + $body = $response->getResponseBody(); + if ($body) { + $body = str_replace("--$boundary--", "--$boundary", $body); + $parts = explode("--$boundary", $body); + $responses = array(); + + foreach($parts as $part) { + $part = trim($part); + if (!empty($part)) { + list($metaHeaders, $part) = explode("\r\n\r\n", $part, 2); + $metaHeaders = Google_CurlIO::parseResponseHeaders($metaHeaders); + + $status = substr($part, 0, strpos($part, "\n")); + $status = explode(" ", $status); + $status = $status[1]; + + list($partHeaders, $partBody) = Google_CurlIO::parseHttpResponse($part, false); + $response = new Google_HttpRequest(""); + $response->setResponseHttpCode($status); + $response->setResponseHeaders($partHeaders); + $response->setResponseBody($partBody); + $response = Google_REST::decodeHttpResponse($response); + + // Need content id. + $responses[$metaHeaders['content-id']] = $response; + } + } + + return $responses; + } + + return null; + } +} \ No newline at end of file diff --git a/modules/oauth/src/google/service/Google_MediaFileUpload.php b/modules/oauth/src/google/service/Google_MediaFileUpload.php new file mode 100644 index 0000000..5335e49 --- /dev/null +++ b/modules/oauth/src/google/service/Google_MediaFileUpload.php @@ -0,0 +1,244 @@ + + * + */ +class Google_MediaFileUpload { + const UPLOAD_MEDIA_TYPE = 'media'; + const UPLOAD_MULTIPART_TYPE = 'multipart'; + const UPLOAD_RESUMABLE_TYPE = 'resumable'; + + /** @var string $mimeType */ + public $mimeType; + + /** @var string $data */ + public $data; + + /** @var bool $resumable */ + public $resumable; + + /** @var int $chunkSize */ + public $chunkSize; + + /** @var int $size */ + public $size; + + /** @var string $resumeUri */ + public $resumeUri; + + /** @var int $progress */ + public $progress; + + /** + * @param $mimeType string + * @param $data string The bytes you want to upload. + * @param $resumable bool + * @param bool $chunkSize File will be uploaded in chunks of this many bytes. + * only used if resumable=True + */ + public function __construct($mimeType, $data, $resumable=false, $chunkSize=false) { + $this->mimeType = $mimeType; + $this->data = $data; + $this->size = strlen($this->data); + $this->resumable = $resumable; + if(!$chunkSize) { + $this->chunkSize = 256 * 1024; + } + + $this->progress = 0; + } + + /** + * @static + * @param $meta + * @param $params + * @return array|bool + */ + public static function process($meta, &$params) { + $payload = array(); + $meta = is_string($meta) ? json_decode($meta, true) : $meta; + $uploadType = self::getUploadType($meta, $payload, $params); + if (!$uploadType) { + // Process as a normal API request. + return false; + } + + // Process as a media upload request. + $params['uploadType'] = array( + 'type' => 'string', + 'location' => 'query', + 'value' => $uploadType, + ); + + if (isset($params['file'])) { + // This is a standard file upload with curl. + $file = $params['file']['value']; + unset($params['file']); + return self::processFileUpload($file); + } + + $mimeType = isset($params['mimeType']) + ? $params['mimeType']['value'] + : false; + unset($params['mimeType']); + + $data = isset($params['data']) + ? $params['data']['value'] + : false; + unset($params['data']); + + if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) { + $payload['content-type'] = $mimeType; + + } elseif (self::UPLOAD_MEDIA_TYPE == $uploadType) { + // This is a simple media upload. + $payload['content-type'] = $mimeType; + $payload['postBody'] = $data; + } + + elseif (self::UPLOAD_MULTIPART_TYPE == $uploadType) { + // This is a multipart/related upload. + $boundary = isset($params['boundary']['value']) ? $params['boundary']['value'] : mt_rand(); + $boundary = str_replace('"', '', $boundary); + $payload['content-type'] = 'multipart/related; boundary=' . $boundary; + $related = "--$boundary\r\n"; + $related .= "Content-Type: application/json; charset=UTF-8\r\n"; + $related .= "\r\n" . json_encode($meta) . "\r\n"; + $related .= "--$boundary\r\n"; + $related .= "Content-Type: $mimeType\r\n"; + $related .= "Content-Transfer-Encoding: base64\r\n"; + $related .= "\r\n" . base64_encode($data) . "\r\n"; + $related .= "--$boundary--"; + $payload['postBody'] = $related; + } + + return $payload; + } + + /** + * Process standard file uploads. + * @param $file + * @internal param $fileName + * @return array Inclues the processed file name. + * @visible For testing. + */ + public static function processFileUpload($file) { + if (!$file) return array(); + if (substr($file, 0, 1) != '@') { + $file = '@' . $file; + } + + // This is a standard file upload with curl. + return array('postBody' => array('file' => $file)); + } + + /** + * Valid upload types: + * - resumable (UPLOAD_RESUMABLE_TYPE) + * - media (UPLOAD_MEDIA_TYPE) + * - multipart (UPLOAD_MULTIPART_TYPE) + * - none (false) + * @param $meta + * @param $payload + * @param $params + * @return bool|string + */ + public static function getUploadType($meta, &$payload, &$params) { + if (isset($params['mediaUpload']) + && get_class($params['mediaUpload']['value']) == 'Google_MediaFileUpload') { + $upload = $params['mediaUpload']['value']; + unset($params['mediaUpload']); + $payload['content-type'] = $upload->mimeType; + if (isset($upload->resumable) && $upload->resumable) { + return self::UPLOAD_RESUMABLE_TYPE; + } + } + + // Allow the developer to override the upload type. + if (isset($params['uploadType'])) { + return $params['uploadType']['value']; + } + + $data = isset($params['data']['value']) + ? $params['data']['value'] : false; + + if (false == $data && false == isset($params['file'])) { + // No upload data available. + return false; + } + + if (isset($params['file'])) { + return self::UPLOAD_MEDIA_TYPE; + } + + if (false == $meta) { + return self::UPLOAD_MEDIA_TYPE; + } + + return self::UPLOAD_MULTIPART_TYPE; + } + + + public function nextChunk(Google_HttpRequest $req) { + if (false == $this->resumeUri) { + $this->resumeUri = $this->getResumeUri($req); + } + + $data = substr($this->data, $this->progress, $this->chunkSize); + $lastBytePos = $this->progress + strlen($data) - 1; + $headers = array( + 'content-range' => "bytes $this->progress-$lastBytePos/$this->size", + 'content-type' => $req->getRequestHeader('content-type'), + 'content-length' => $this->chunkSize, + 'expect' => '', + ); + + $httpRequest = new Google_HttpRequest($this->resumeUri, 'PUT', $headers, $data); + $response = Google_Client::$io->authenticatedRequest($httpRequest); + $code = $response->getResponseHttpCode(); + if (308 == $code) { + $range = explode('-', $response->getResponseHeader('range')); + $this->progress = $range[1] + 1; + return false; + } else { + return Google_REST::decodeHttpResponse($response); + } + } + + private function getResumeUri(Google_HttpRequest $httpRequest) { + $result = null; + $body = $httpRequest->getPostBody(); + if ($body) { + $httpRequest->setRequestHeaders(array( + 'content-type' => 'application/json; charset=UTF-8', + 'content-length' => Google_Utils::getStrLen($body), + 'x-upload-content-type' => $this->mimeType, + 'expect' => '', + )); + } + + $response = Google_Client::$io->makeRequest($httpRequest); + $location = $response->getResponseHeader('location'); + $code = $response->getResponseHttpCode(); + if (200 == $code && true == $location) { + return $location; + } + throw new Google_Exception("Failed to start the resumable upload"); + } +} \ No newline at end of file diff --git a/modules/oauth/src/google/service/Google_Model.php b/modules/oauth/src/google/service/Google_Model.php new file mode 100644 index 0000000..cb44cb2 --- /dev/null +++ b/modules/oauth/src/google/service/Google_Model.php @@ -0,0 +1,115 @@ + + * + */ +class Google_Model { + public function __construct( /* polymorphic */ ) { + if (func_num_args() == 1 && is_array(func_get_arg(0))) { + // Initialize the model with the array's contents. + $array = func_get_arg(0); + $this->mapTypes($array); + } + } + + /** + * Initialize this object's properties from an array. + * + * @param array $array Used to seed this object's properties. + * @return void + */ + protected function mapTypes($array) { + foreach ($array as $key => $val) { + $this->$key = $val; + + $keyTypeName = "__$key" . 'Type'; + $keyDataType = "__$key" . 'DataType'; + if ($this->useObjects() && property_exists($this, $keyTypeName)) { + if ($this->isAssociativeArray($val)) { + if (isset($this->$keyDataType) && 'map' == $this->$keyDataType) { + foreach($val as $arrayKey => $arrayItem) { + $val[$arrayKey] = $this->createObjectFromName($keyTypeName, $arrayItem); + } + $this->$key = $val; + } else { + $this->$key = $this->createObjectFromName($keyTypeName, $val); + } + } else if (is_array($val)) { + $arrayObject = array(); + foreach ($val as $arrayIndex => $arrayItem) { + $arrayObject[$arrayIndex] = $this->createObjectFromName($keyTypeName, $arrayItem); + } + $this->$key = $arrayObject; + } + } + } + } + + /** + * Returns true only if the array is associative. + * @param array $array + * @return bool True if the array is associative. + */ + protected function isAssociativeArray($array) { + if (!is_array($array)) { + return false; + } + $keys = array_keys($array); + foreach($keys as $key) { + if (is_string($key)) { + return true; + } + } + return false; + } + + /** + * Given a variable name, discover its type. + * + * @param $name + * @param $item + * @return object The object from the item. + */ + private function createObjectFromName($name, $item) { + $type = $this->$name; + return new $type($item); + } + + protected function useObjects() { + global $apiConfig; + return (isset($apiConfig['use_objects']) && $apiConfig['use_objects']); + } + + /** + * Verify if $obj is an array. + * @throws Google_Exception Thrown if $obj isn't an array. + * @param array $obj Items that should be validated. + * @param string $type Array items should be of this type. + * @param string $method Method expecting an array as an argument. + */ + public function assertIsArray($obj, $type, $method) { + if ($obj && !is_array($obj)) { + throw new Google_Exception("Incorrect parameter type passed to $method(), expected an" + . " array containing items of type $type."); + } + } +} diff --git a/modules/oauth/src/google/service/Google_Service.php b/modules/oauth/src/google/service/Google_Service.php new file mode 100644 index 0000000..1f4731f --- /dev/null +++ b/modules/oauth/src/google/service/Google_Service.php @@ -0,0 +1,22 @@ + + * @author Chirag Shah + * + */ +class Google_ServiceResource { + // Valid query parameters that work, but don't appear in discovery. + private $stackParameters = array( + 'alt' => array('type' => 'string', 'location' => 'query'), + 'boundary' => 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'), + 'file' => array('type' => 'complex', 'location' => 'body'), + '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 Google_Service $service */ + private $service; + + /** @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->serviceName = $serviceName; + $this->resourceName = $resourceName; + $this->methods = isset($resource['methods']) ? $resource['methods'] : array($resourceName => $resource); + } + + /** + * @param $name + * @param $arguments + * @return Google_HttpRequest|array + * @throws Google_Exception + */ + public function __call($name, $arguments) { + if (! isset($this->methods[$name])) { + throw new 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 (is_object($parameters['postBody'])) { + $this->stripNull($parameters['postBody']); + } + + // Some APIs require the postBody to be set under the data key. + if (is_array($parameters['postBody']) && 'latitude' == $this->serviceName) { + if (!isset($parameters['postBody']['data'])) { + $rawBody = $parameters['postBody']; + unset($parameters['postBody']); + $parameters['postBody']['data'] = $rawBody; + } + } + + $postBody = is_array($parameters['postBody']) || is_object($parameters['postBody']) + ? json_encode($parameters['postBody']) + : $parameters['postBody']; + unset($parameters['postBody']); + + 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])) { + throw new Google_Exception("($name) unknown parameter: '$key'"); + } + } + if (isset($method['parameters'])) { + foreach ($method['parameters'] as $paramName => $paramSpec) { + if (isset($paramSpec['required']) && $paramSpec['required'] && ! isset($parameters[$paramName])) { + throw new 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 { + unset($parameters[$paramName]); + } + } + } + + // Discovery v1.0 puts the canonical method id under the 'id' field. + if (! isset($method['id'])) { + $method['id'] = $method['rpcMethod']; + } + + // Discovery v1.0 puts the canonical path under the 'path' field. + if (! isset($method['path'])) { + $method['path'] = $method['restPath']; + } + + $servicePath = $this->service->servicePath; + + // Process Media Request + $contentType = false; + if (isset($method['mediaUpload'])) { + $media = Google_MediaFileUpload::process($postBody, $parameters); + if ($media) { + $contentType = isset($media['content-type']) ? $media['content-type']: null; + $postBody = isset($media['postBody']) ? $media['postBody'] : null; + $servicePath = $method['mediaUpload']['protocols']['simple']['path']; + $method['path'] = ''; + } + } + + $url = Google_REST::createRequestUri($servicePath, $method['path'], $parameters); + $httpRequest = new Google_HttpRequest($url, $method['httpMethod'], null, $postBody); + if ($postBody) { + $contentTypeHeader = array(); + if (isset($contentType) && $contentType) { + $contentTypeHeader['content-type'] = $contentType; + } else { + $contentTypeHeader['content-type'] = 'application/json; charset=UTF-8'; + $contentTypeHeader['content-length'] = Google_Utils::getStrLen($postBody); + } + $httpRequest->setRequestHeaders($contentTypeHeader); + } + + $httpRequest = Google_Client::$auth->sign($httpRequest); + if (Google_Client::$useBatch) { + return $httpRequest; + } + + // Terminate immediatly if this is a resumable request. + if (isset($parameters['uploadType']['value']) + && 'resumable' == $parameters['uploadType']['value']) { + return $httpRequest; + } + + return Google_REST::execute($httpRequest); + } + + public function useObjects() { + global $apiConfig; + return (isset($apiConfig['use_objects']) && $apiConfig['use_objects']); + } + + protected function stripNull(&$o) { + $o = (array) $o; + foreach ($o as $k => $v) { + if ($v === null || strstr($k, "\0*\0__")) { + unset($o[$k]); + } + elseif (is_object($v) || is_array($v)) { + $this->stripNull($o[$k]); + } + } + } +} diff --git a/modules/oauth/src/google/service/Google_Utils.php b/modules/oauth/src/google/service/Google_Utils.php new file mode 100644 index 0000000..be94902 --- /dev/null +++ b/modules/oauth/src/google/service/Google_Utils.php @@ -0,0 +1,117 @@ + + */ +class Google_Utils { + public static function urlSafeB64Encode($data) { + $b64 = base64_encode($data); + $b64 = str_replace(array('+', '/', '\r', '\n', '='), + array('-', '_'), + $b64); + return $b64; + } + + public static function urlSafeB64Decode($b64) { + $b64 = str_replace(array('-', '_'), + array('+', '/'), + $b64); + return base64_decode($b64); + } + + /** + * Misc function used to count the number of bytes in a post body, in the world of multi-byte chars + * and the unpredictability of strlen/mb_strlen/sizeof, this is the only way to do that in a sane + * manner at the moment. + * + * This algorithm was originally developed for the + * Solar Framework by Paul M. Jones + * + * @link http://solarphp.com/ + * @link http://svn.solarphp.com/core/trunk/Solar/Json.php + * @link http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Json/Decoder.php + * @param string $str + * @return int The number of bytes in a string. + */ + static public function getStrLen($str) { + $strlenVar = strlen($str); + $d = $ret = 0; + for ($count = 0; $count < $strlenVar; ++ $count) { + $ordinalValue = ord($str{$ret}); + switch (true) { + case (($ordinalValue >= 0x20) && ($ordinalValue <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ret ++; + break; + + case (($ordinalValue & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 2; + break; + + case (($ordinalValue & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 3; + break; + + case (($ordinalValue & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 4; + break; + + case (($ordinalValue & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 5; + break; + + case (($ordinalValue & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 6; + break; + default: + $ret ++; + } + } + return $ret; + } + + /** + * Normalize all keys in an array to lower-case. + * @param array $arr + * @return array Normalized array. + */ + public static function normalize($arr) { + if (!is_array($arr)) { + return array(); + } + + $normalized = array(); + foreach ($arr as $key => $val) { + $normalized[strtolower($key)] = $val; + } + return $normalized; + } +} \ No newline at end of file diff --git a/modules/oauth/src/twitter/autoload.php b/modules/oauth/src/twitter/autoload.php new file mode 100644 index 0000000..cff03e8 --- /dev/null +++ b/modules/oauth/src/twitter/autoload.php @@ -0,0 +1,36 @@ +=5.5.0", + "ext-curl": "*" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*", + "squizlabs/php_codesniffer": "2.3.*", + "phpmd/phpmd": "2.2.*" + }, + "autoload": { + "psr-4": { + "Abraham\\TwitterOAuth\\": "src" + } + } +} diff --git a/modules/oauth/src/twitter/login.php b/modules/oauth/src/twitter/login.php new file mode 100644 index 0000000..754d3a9 --- /dev/null +++ b/modules/oauth/src/twitter/login.php @@ -0,0 +1,49 @@ +apps.twitter.com"); + } + + error_reporting(0); + require_once($config['src']."twitter/autoload.php"); + + if(isset($_GET['oauth_token']) || $_GET['oauth_verifier']) { + $Twitter_conn = new TwitterOAuth($Config['twitter']['consumer_key'], $Config['twitter']['consumer_secret'], $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); + + $access_token = $Twitter_conn->oauth('oauth/access_token', array('oauth_verifier' => $_REQUEST['oauth_verifier'], 'oauth_token'=> $_GET['oauth_token'])); + + $Twitter_conn = new TwitterOAuth($Config['twitter']['consumer_key'], $Config['twitter']['consumer_secret'], $access_token['oauth_token'], $access_token['oauth_token_secret']); + + $UserData = $Twitter_conn->get('account/verify_credentials'); + $uname = explode(" ",$UserData->name); + $data = array(); + $data['oauth'] = "twitter"; + $data['uid'] = $UserData->id; + $data['name'] = $UserData->name; + $data['email'] = ""; + $data['gender'] = ""; + $data['last_name'] = isset($uname[1]) ? $uname[1] :''; + $data['first_name'] = isset($uname[0]) ? $uname[0] :''; + $data['picture'] = implode(explode("_normal", $UserData->profile_image_url), "_bigger"); + $loginer->user((object)$data); + $_SESSION['sloginer'] = array("uid" => $data['uid'], "name" => $data['name'], "oauth" => $data['oauth']); + $return_to = $_SESSION['loginer_redirect']; + $oauth_token = $access_token['oauth_token']; + $oauth_token_secret = $access_token['oauth_token_secret']; + unset($_SESSION['oauth_token_secret']); + unset($_SESSION['oauth_token']); + header("location: ".$Config['return_url']); + exit(); + } else { + $Twitter_conn = new TwitterOAuth($Config['twitter']['consumer_key'], $Config['twitter']['consumer_secret']); + $request_token = $Twitter_conn->oauth("oauth/request_token", array("oauth_callback" => $Config["login_url"]."?oauth=twitter")); + $_SESSION['oauth_token'] = $request_token['oauth_token']; + $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; + $loginUrl = $Twitter_conn->url("oauth/authorize", array("oauth_token" => $request_token['oauth_token'])); + header("Location: " . $loginUrl); + exit(); + } + } +} \ No newline at end of file diff --git a/modules/oauth/src/twitter/src/Config.php b/modules/oauth/src/twitter/src/Config.php new file mode 100644 index 0000000..5815d61 --- /dev/null +++ b/modules/oauth/src/twitter/src/Config.php @@ -0,0 +1,64 @@ + + */ +class Config +{ + /** @var int How long to wait for a response from the API */ + protected $timeout = 5; + /** @var int how long to wait while connecting to the API */ + protected $connectionTimeout = 5; + /** + * Decode JSON Response as associative Array + * + * @see http://php.net/manual/en/function.json-decode.php + * + * @var bool + */ + protected $decodeJsonAsArray = false; + /** @var string User-Agent header */ + protected $userAgent = 'TwitterOAuth (+https://twitteroauth.com)'; + /** @var array Store proxy connection details */ + protected $proxy = []; + + /** + * Set the connection and response timeouts. + * + * @param int $connectionTimeout + * @param int $timeout + */ + public function setTimeouts($connectionTimeout, $timeout) + { + $this->connectionTimeout = (int)$connectionTimeout; + $this->timeout = (int)$timeout; + } + + /** + * @param bool $value + */ + public function setDecodeJsonAsArray($value) + { + $this->decodeJsonAsArray = (bool)$value; + } + + /** + * @param string $userAgent + */ + public function setUserAgent($userAgent) + { + $this->userAgent = (string)$userAgent; + } + + /** + * @param array $proxy + */ + public function setProxy(array $proxy) + { + $this->proxy = $proxy; + } +} diff --git a/modules/oauth/src/twitter/src/Consumer.php b/modules/oauth/src/twitter/src/Consumer.php new file mode 100644 index 0000000..ceaf1ef --- /dev/null +++ b/modules/oauth/src/twitter/src/Consumer.php @@ -0,0 +1,36 @@ +key = $key; + $this->secret = $secret; + $this->callbackUrl = $callbackUrl; + } + + /** + * @return string + */ + public function __toString() + { + return "Consumer[key=$this->key,secret=$this->secret]"; + } +} diff --git a/modules/oauth/src/twitter/src/HmacSha1.php b/modules/oauth/src/twitter/src/HmacSha1.php new file mode 100644 index 0000000..d8cdab8 --- /dev/null +++ b/modules/oauth/src/twitter/src/HmacSha1.php @@ -0,0 +1,39 @@ +getSignatureBaseString(); + + $parts = [$consumer->secret, null !== $token ? $token->secret : ""]; + + $parts = Util::urlencodeRfc3986($parts); + $key = implode('&', $parts); + + return base64_encode(hash_hmac('sha1', $signatureBase, $key, true)); + } +} diff --git a/modules/oauth/src/twitter/src/Request.php b/modules/oauth/src/twitter/src/Request.php new file mode 100644 index 0000000..a60c23d --- /dev/null +++ b/modules/oauth/src/twitter/src/Request.php @@ -0,0 +1,254 @@ +parameters = $parameters; + $this->httpMethod = $httpMethod; + $this->httpUrl = $httpUrl; + } + + /** + * pretty much a helper function to set up the request + * + * @param Consumer $consumer + * @param Token $token + * @param string $httpMethod + * @param string $httpUrl + * @param array $parameters + * + * @return Request + */ + public static function fromConsumerAndToken( + Consumer $consumer, + Token $token = null, + $httpMethod, + $httpUrl, + array $parameters = [] + ) { + $defaults = [ + "oauth_version" => Request::$version, + "oauth_nonce" => Request::generateNonce(), + "oauth_timestamp" => time(), + "oauth_consumer_key" => $consumer->key + ]; + if (null !== $token) { + $defaults['oauth_token'] = $token->key; + } + + $parameters = array_merge($defaults, $parameters); + + return new Request($httpMethod, $httpUrl, $parameters); + } + + /** + * @param string $name + * @param string $value + */ + public function setParameter($name, $value) + { + $this->parameters[$name] = $value; + } + + /** + * @param $name + * + * @return string|null + */ + public function getParameter($name) + { + return isset($this->parameters[$name]) ? $this->parameters[$name] : null; + } + + /** + * @return array + */ + public function getParameters() + { + return $this->parameters; + } + + /** + * @param $name + */ + public function removeParameter($name) + { + unset($this->parameters[$name]); + } + + /** + * The request parameters, sorted and concatenated into a normalized string. + * + * @return string + */ + public function getSignableParameters() + { + // Grab all parameters + $params = $this->parameters; + + // Remove oauth_signature if present + // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.") + if (isset($params['oauth_signature'])) { + unset($params['oauth_signature']); + } + + return Util::buildHttpQuery($params); + } + + /** + * Returns the base string of this request + * + * The base string defined as the method, the url + * and the parameters (normalized), each urlencoded + * and the concated with &. + * + * @return string + */ + public function getSignatureBaseString() + { + $parts = [ + $this->getNormalizedHttpMethod(), + $this->getNormalizedHttpUrl(), + $this->getSignableParameters() + ]; + + $parts = Util::urlencodeRfc3986($parts); + + return implode('&', $parts); + } + + /** + * Returns the HTTP Method in uppercase + * + * @return string + */ + public function getNormalizedHttpMethod() + { + return strtoupper($this->httpMethod); + } + + /** + * parses the url and rebuilds it to be + * scheme://host/path + * + * @return string + */ + public function getNormalizedHttpUrl() + { + $parts = parse_url($this->httpUrl); + + $scheme = $parts['scheme']; + $host = strtolower($parts['host']); + $path = $parts['path']; + + return "$scheme://$host$path"; + } + + /** + * Builds a url usable for a GET request + * + * @return string + */ + public function toUrl() + { + $postData = $this->toPostdata(); + $out = $this->getNormalizedHttpUrl(); + if ($postData) { + $out .= '?' . $postData; + } + return $out; + } + + /** + * Builds the data one would send in a POST request + * + * @return string + */ + public function toPostdata() + { + return Util::buildHttpQuery($this->parameters); + } + + /** + * Builds the Authorization: header + * + * @return string + * @throws TwitterOAuthException + */ + public function toHeader() + { + $first = true; + $out = 'Authorization: OAuth'; + foreach ($this->parameters as $k => $v) { + if (substr($k, 0, 5) != "oauth") { + continue; + } + if (is_array($v)) { + throw new TwitterOAuthException('Arrays not supported in headers'); + } + $out .= ($first) ? ' ' : ', '; + $out .= Util::urlencodeRfc3986($k) . '="' . Util::urlencodeRfc3986($v) . '"'; + $first = false; + } + return $out; + } + + /** + * @return string + */ + public function __toString() + { + return $this->toUrl(); + } + + /** + * @param SignatureMethod $signatureMethod + * @param Consumer $consumer + * @param Token $token + */ + public function signRequest(SignatureMethod $signatureMethod, Consumer $consumer, Token $token = null) + { + $this->setParameter("oauth_signature_method", $signatureMethod->getName()); + $signature = $this->buildSignature($signatureMethod, $consumer, $token); + $this->setParameter("oauth_signature", $signature); + } + + /** + * @param SignatureMethod $signatureMethod + * @param Consumer $consumer + * @param Token $token + * + * @return string + */ + public function buildSignature(SignatureMethod $signatureMethod, Consumer $consumer, Token $token = null) + { + return $signatureMethod->buildSignature($this, $consumer, $token); + } + + /** + * @return string + */ + public static function generateNonce() + { + return md5(microtime() . mt_rand()); + } +} diff --git a/modules/oauth/src/twitter/src/Response.php b/modules/oauth/src/twitter/src/Response.php new file mode 100644 index 0000000..cbab8ab --- /dev/null +++ b/modules/oauth/src/twitter/src/Response.php @@ -0,0 +1,107 @@ + + */ +class Response +{ + /** @var string|null API path from the most recent request */ + private $apiPath; + /** @var int HTTP status code from the most recent request */ + private $httpCode = 0; + /** @var array HTTP headers from the most recent request */ + private $headers = []; + /** @var array|object Response body from the most recent request */ + private $body = []; + /** @var array HTTP headers from the most recent request that start with X */ + private $xHeaders = []; + + /** + * @param string $apiPath + */ + public function setApiPath($apiPath) + { + $this->apiPath = $apiPath; + } + + /** + * @return string|null + */ + public function getApiPath() + { + return $this->apiPath; + } + + /** + * @param array|object $body + */ + public function setBody($body) + { + $this->body = $body; + } + + /** + * @return array|object|string + */ + public function getBody() + { + return $this->body; + } + + /** + * @param int $httpCode + */ + public function setHttpCode($httpCode) + { + $this->httpCode = $httpCode; + } + + /** + * @return int + */ + public function getHttpCode() + { + return $this->httpCode; + } + + /** + * @param array $headers + */ + public function setHeaders($headers) + { + foreach ($headers as $key => $value) { + if (substr($key, 0, 1) == 'x') { + $this->xHeaders[$key] = $value; + } + } + $this->headers = $headers; + } + + /** + * @return array + */ + public function getsHeaders() + { + return $this->headers; + } + + /** + * @param array $xHeaders + */ + public function setXHeaders($xHeaders) + { + $this->xHeaders = $xHeaders; + } + + /** + * @return array + */ + public function getXHeaders() + { + return $this->xHeaders; + } +} diff --git a/modules/oauth/src/twitter/src/SignatureMethod.php b/modules/oauth/src/twitter/src/SignatureMethod.php new file mode 100644 index 0000000..40fd51e --- /dev/null +++ b/modules/oauth/src/twitter/src/SignatureMethod.php @@ -0,0 +1,66 @@ +buildSignature($request, $consumer, $token); + + // Check for zero length, although unlikely here + if (strlen($built) == 0 || strlen($signature) == 0) { + return false; + } + + if (strlen($built) != strlen($signature)) { + return false; + } + + // Avoid a timing leak with a (hopefully) time insensitive compare + $result = 0; + for ($i = 0; $i < strlen($signature); $i++) { + $result |= ord($built{$i}) ^ ord($signature{$i}); + } + + return $result == 0; + } +} diff --git a/modules/oauth/src/twitter/src/Token.php b/modules/oauth/src/twitter/src/Token.php new file mode 100644 index 0000000..140c1ec --- /dev/null +++ b/modules/oauth/src/twitter/src/Token.php @@ -0,0 +1,38 @@ +key = $key; + $this->secret = $secret; + } + + /** + * Generates the basic string serialization of a token that a server + * would respond to request_token and access_token calls with + * + * @return string + */ + public function __toString() + { + return sprintf("oauth_token=%s&oauth_token_secret=%s", + Util::urlencodeRfc3986($this->key), + Util::urlencodeRfc3986($this->secret) + ); + } +} diff --git a/modules/oauth/src/twitter/src/TwitterOAuth.php b/modules/oauth/src/twitter/src/TwitterOAuth.php new file mode 100644 index 0000000..739dc2d --- /dev/null +++ b/modules/oauth/src/twitter/src/TwitterOAuth.php @@ -0,0 +1,448 @@ + + */ +class TwitterOAuth extends Config +{ + const API_VERSION = '1.1'; + const API_HOST = 'https://api.twitter.com'; + const UPLOAD_HOST = 'https://upload.twitter.com'; + const UPLOAD_CHUNK = 40960; // 1024 * 40 + + /** @var Response details about the result of the last request */ + private $response; + /** @var string|null Application bearer token */ + private $bearer; + /** @var Consumer Twitter application details */ + private $consumer; + /** @var Token|null User access token details */ + private $token; + /** @var HmacSha1 OAuth 1 signature type used by Twitter */ + private $signatureMethod; + + /** + * Constructor + * + * @param string $consumerKey The Application Consumer Key + * @param string $consumerSecret The Application Consumer Secret + * @param string|null $oauthToken The Client Token (optional) + * @param string|null $oauthTokenSecret The Client Token Secret (optional) + */ + public function __construct($consumerKey, $consumerSecret, $oauthToken = null, $oauthTokenSecret = null) + { + $this->resetLastResponse(); + $this->signatureMethod = new HmacSha1(); + $this->consumer = new Consumer($consumerKey, $consumerSecret); + if (!empty($oauthToken) && !empty($oauthTokenSecret)) { + $this->token = new Token($oauthToken, $oauthTokenSecret); + } + if (empty($oauthToken) && !empty($oauthTokenSecret)) { + $this->bearer = $oauthTokenSecret; + } + } + + /** + * @param string $oauthToken + * @param string $oauthTokenSecret + */ + public function setOauthToken($oauthToken, $oauthTokenSecret) + { + $this->token = new Token($oauthToken, $oauthTokenSecret); + } + + /** + * @return string|null + */ + public function getLastApiPath() + { + return $this->response->getApiPath(); + } + + /** + * @return int + */ + public function getLastHttpCode() + { + return $this->response->getHttpCode(); + } + + /** + * @return array + */ + public function getLastXHeaders() + { + return $this->response->getXHeaders(); + } + + /** + * @return array|object|null + */ + public function getLastBody() + { + return $this->response->getBody(); + } + + /** + * Resets the last response cache. + */ + public function resetLastResponse() + { + $this->response = new Response(); + } + + /** + * Make URLs for user browser navigation. + * + * @param string $path + * @param array $parameters + * + * @return string + */ + public function url($path, array $parameters) + { + $this->resetLastResponse(); + $this->response->setApiPath($path); + $query = http_build_query($parameters); + return sprintf('%s/%s?%s', self::API_HOST, $path, $query); + } + + /** + * Make /oauth/* requests to the API. + * + * @param string $path + * @param array $parameters + * + * @return array + * @throws TwitterOAuthException + */ + public function oauth($path, array $parameters = []) + { + $response = []; + $this->resetLastResponse(); + $this->response->setApiPath($path); + $url = sprintf('%s/%s', self::API_HOST, $path); + $result = $this->oAuthRequest($url, 'POST', $parameters); + + if ($this->getLastHttpCode() != 200) { + throw new TwitterOAuthException($result); + } + + parse_str($result, $response); + $this->response->setBody($response); + + return $response; + } + + /** + * Make /oauth2/* requests to the API. + * + * @param string $path + * @param array $parameters + * + * @return array|object + */ + public function oauth2($path, array $parameters = []) + { + $method = 'POST'; + $this->resetLastResponse(); + $this->response->setApiPath($path); + $url = sprintf('%s/%s', self::API_HOST, $path); + $request = Request::fromConsumerAndToken($this->consumer, $this->token, $method, $url, $parameters); + $authorization = 'Authorization: Basic ' . $this->encodeAppAuthorization($this->consumer); + $result = $this->request($request->getNormalizedHttpUrl(), $method, $authorization, $parameters); + $response = JsonDecoder::decode($result, $this->decodeJsonAsArray); + $this->response->setBody($response); + return $response; + } + + /** + * Make GET requests to the API. + * + * @param string $path + * @param array $parameters + * + * @return array|object + */ + public function get($path, array $parameters = []) + { + return $this->http('GET', self::API_HOST, $path, $parameters); + } + + /** + * Make POST requests to the API. + * + * @param string $path + * @param array $parameters + * + * @return array|object + */ + public function post($path, array $parameters = []) + { + return $this->http('POST', self::API_HOST, $path, $parameters); + } + + /** + * Make DELETE requests to the API. + * + * @param string $path + * @param array $parameters + * + * @return array|object + */ + public function delete($path, array $parameters = []) + { + return $this->http('DELETE', self::API_HOST, $path, $parameters); + } + + /** + * Make PUT requests to the API. + * + * @param string $path + * @param array $parameters + * + * @return array|object + */ + public function put($path, array $parameters = []) + { + return $this->http('PUT', self::API_HOST, $path, $parameters); + } + + /** + * Upload media to upload.twitter.com. + * + * @param string $path + * @param array $parameters + * @param boolean $chunked + * + * @return array|object + */ + public function upload($path, array $parameters = [], $chunked = false) + { + if ($chunked) { + return $this->uploadMediaChunked($path, $parameters); + } else { + return $this->uploadMediaNotChunked($path, $parameters); + } + } + + /** + * Private method to upload media (not chunked) to upload.twitter.com. + * + * @param string $path + * @param array $parameters + * + * @return array|object + */ + private function uploadMediaNotChunked($path, $parameters) + { + $file = file_get_contents($parameters['media']); + $base = base64_encode($file); + $parameters['media'] = $base; + return $this->http('POST', self::UPLOAD_HOST, $path, $parameters); + } + + /** + * Private method to upload media (chunked) to upload.twitter.com. + * + * @param string $path + * @param array $parameters + * + * @return array|object + */ + private function uploadMediaChunked($path, $parameters) + { + // Init + $init = $this->http('POST', self::UPLOAD_HOST, $path, [ + 'command' => 'INIT', + 'media_type' => $parameters['media_type'], + 'total_bytes' => filesize($parameters['media']) + ]); + // Append + $segment_index = 0; + $media = fopen($parameters['media'], 'rb'); + while (!feof($media)) + { + $this->http('POST', self::UPLOAD_HOST, 'media/upload', [ + 'command' => 'APPEND', + 'media_id' => $init->media_id_string, + 'segment_index' => $segment_index++, + 'media_data' => base64_encode(fread($media, self::UPLOAD_CHUNK)) + ]); + } + fclose($media); + // Finalize + $finalize = $this->http('POST', self::UPLOAD_HOST, 'media/upload', [ + 'command' => 'FINALIZE', + 'media_id' => $init->media_id_string + ]); + return $finalize; + } + + /** + * @param string $method + * @param string $host + * @param string $path + * @param array $parameters + * + * @return array|object + */ + private function http($method, $host, $path, array $parameters) + { + $this->resetLastResponse(); + $url = sprintf('%s/%s/%s.json', $host, self::API_VERSION, $path); + $this->response->setApiPath($path); + $result = $this->oAuthRequest($url, $method, $parameters); + $response = JsonDecoder::decode($result, $this->decodeJsonAsArray); + $this->response->setBody($response); + return $response; + } + + /** + * Format and sign an OAuth / API request + * + * @param string $url + * @param string $method + * @param array $parameters + * + * @return string + * @throws TwitterOAuthException + */ + private function oAuthRequest($url, $method, array $parameters) + { + $request = Request::fromConsumerAndToken($this->consumer, $this->token, $method, $url, $parameters); + if (array_key_exists('oauth_callback', $parameters)) { + // Twitter doesn't like oauth_callback as a parameter. + unset($parameters['oauth_callback']); + } + if ($this->bearer === null) { + $request->signRequest($this->signatureMethod, $this->consumer, $this->token); + $authorization = $request->toHeader(); + } else { + $authorization = 'Authorization: Bearer ' . $this->bearer; + } + return $this->request($request->getNormalizedHttpUrl(), $method, $authorization, $parameters); + } + + /** + * Make an HTTP request + * + * @param string $url + * @param string $method + * @param string $authorization + * @param array $postfields + * + * @return string + * @throws TwitterOAuthException + */ + private function request($url, $method, $authorization, $postfields) + { + /* Curl settings */ + $options = [ + // CURLOPT_VERBOSE => true, + CURLOPT_CAINFO => __DIR__ . DIRECTORY_SEPARATOR . 'cacert.pem', + CURLOPT_CONNECTTIMEOUT => $this->connectionTimeout, + CURLOPT_HEADER => true, + CURLOPT_HTTPHEADER => ['Accept: application/json', $authorization, 'Expect:'], + CURLOPT_RETURNTRANSFER => true, + CURLOPT_SSL_VERIFYHOST => 2, + CURLOPT_SSL_VERIFYPEER => true, + CURLOPT_TIMEOUT => $this->timeout, + CURLOPT_URL => $url, + CURLOPT_USERAGENT => $this->userAgent, + CURLOPT_ENCODING => 'gzip', + ]; + + if (!empty($this->proxy)) { + $options[CURLOPT_PROXY] = $this->proxy['CURLOPT_PROXY']; + $options[CURLOPT_PROXYUSERPWD] = $this->proxy['CURLOPT_PROXYUSERPWD']; + $options[CURLOPT_PROXYPORT] = $this->proxy['CURLOPT_PROXYPORT']; + $options[CURLOPT_PROXYAUTH] = CURLAUTH_BASIC; + $options[CURLOPT_PROXYTYPE] = CURLPROXY_HTTP; + } + + switch ($method) { + case 'GET': + break; + case 'POST': + $options[CURLOPT_POST] = true; + $options[CURLOPT_POSTFIELDS] = Util::buildHttpQuery($postfields); + break; + case 'DELETE': + $options[CURLOPT_CUSTOMREQUEST] = 'DELETE'; + break; + case 'PUT': + $options[CURLOPT_CUSTOMREQUEST] = 'PUT'; + break; + } + + if (in_array($method, ['GET', 'PUT', 'DELETE']) && !empty($postfields)) { + $options[CURLOPT_URL] .= '?' . Util::buildHttpQuery($postfields); + } + + + $curlHandle = curl_init(); + curl_setopt_array($curlHandle, $options); + $response = curl_exec($curlHandle); + + // Throw exceptions on cURL errors. + if (curl_errno($curlHandle) > 0) { + throw new TwitterOAuthException(curl_error($curlHandle), curl_errno($curlHandle)); + } + + $this->response->setHttpCode(curl_getinfo($curlHandle, CURLINFO_HTTP_CODE)); + $parts = explode("\r\n\r\n", $response); + $responseBody = array_pop($parts); + $responseHeader = array_pop($parts); + $this->response->setHeaders($this->parseHeaders($responseHeader)); + + curl_close($curlHandle); + + return $responseBody; + } + + /** + * Get the header info to store. + * + * @param string $header + * + * @return array + */ + private function parseHeaders($header) + { + $headers = []; + foreach (explode("\r\n", $header) as $line) { + if (strpos($line, ':') !== false) { + list ($key, $value) = explode(': ', $line); + $key = str_replace('-', '_', strtolower($key)); + $headers[$key] = trim($value); + } + } + return $headers; + } + + /** + * Encode application authorization header with base64. + * + * @param Consumer $consumer + * + * @return string + */ + private function encodeAppAuthorization($consumer) + { + // TODO: key and secret should be rfc 1738 encoded + $key = $consumer->key; + $secret = $consumer->secret; + return base64_encode($key . ':' . $secret); + } +} diff --git a/modules/oauth/src/twitter/src/TwitterOAuthException.php b/modules/oauth/src/twitter/src/TwitterOAuthException.php new file mode 100644 index 0000000..79903ec --- /dev/null +++ b/modules/oauth/src/twitter/src/TwitterOAuthException.php @@ -0,0 +1,10 @@ + + */ +class TwitterOAuthException extends \Exception +{ +} diff --git a/modules/oauth/src/twitter/src/Util.php b/modules/oauth/src/twitter/src/Util.php new file mode 100644 index 0000000..fff6143 --- /dev/null +++ b/modules/oauth/src/twitter/src/Util.php @@ -0,0 +1,115 @@ + array('b','c'), 'd' => 'e') + * + * @param mixed $input + * + * @return array + */ + public static function parseParameters($input) + { + if (!isset($input) || !$input) { + return []; + } + + $pairs = explode('&', $input); + + $parameters = []; + foreach ($pairs as $pair) { + $split = explode('=', $pair, 2); + $parameter = Util::urldecodeRfc3986($split[0]); + $value = isset($split[1]) ? Util::urldecodeRfc3986($split[1]) : ''; + + if (isset($parameters[$parameter])) { + // We have already recieved parameter(s) with this name, so add to the list + // of parameters with this name + + if (is_scalar($parameters[$parameter])) { + // This is the first duplicate, so transform scalar (string) into an array + // so we can add the duplicates + $parameters[$parameter] = [$parameters[$parameter]]; + } + + $parameters[$parameter][] = $value; + } else { + $parameters[$parameter] = $value; + } + } + return $parameters; + } + + /** + * @param $params + * + * @return string + */ + public static function buildHttpQuery($params) + { + if (!$params) { + return ''; + } + + // Urlencode both keys and values + $keys = Util::urlencodeRfc3986(array_keys($params)); + $values = Util::urlencodeRfc3986(array_values($params)); + $params = array_combine($keys, $values); + + // Parameters are sorted by name, using lexicographical byte value ordering. + // Ref: Spec: 9.1.1 (1) + uksort($params, 'strcmp'); + + $pairs = []; + foreach ($params as $parameter => $value) { + if (is_array($value)) { + // If two or more parameters share the same name, they are sorted by their value + // Ref: Spec: 9.1.1 (1) + // June 12th, 2010 - changed to sort because of issue 164 by hidetaka + sort($value, SORT_STRING); + foreach ($value as $duplicateValue) { + $pairs[] = $parameter . '=' . $duplicateValue; + } + } else { + $pairs[] = $parameter . '=' . $value; + } + } + // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61) + // Each name-value pair is separated by an '&' character (ASCII code 38) + return implode('&', $pairs); + } +} diff --git a/modules/oauth/src/twitter/src/Util/JsonDecoder.php b/modules/oauth/src/twitter/src/Util/JsonDecoder.php new file mode 100644 index 0000000..c8589c5 --- /dev/null +++ b/modules/oauth/src/twitter/src/Util/JsonDecoder.php @@ -0,0 +1,26 @@ + + */ +class JsonDecoder +{ + /** + * Decodes a JSON string to stdObject or associative array + * + * @param string $string + * @param bool $asArray + * + * @return array|object + */ + public static function decode($string, $asArray) + { + if (version_compare(PHP_VERSION, '5.4.0', '>=') && !(defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)) { + return json_decode($string, $asArray, 512, JSON_BIGINT_AS_STRING); + } + + return json_decode($string, $asArray); + } +} diff --git a/modules/oauth/src/twitter/src/cacert.pem b/modules/oauth/src/twitter/src/cacert.pem new file mode 100644 index 0000000..1ff34f9 --- /dev/null +++ b/modules/oauth/src/twitter/src/cacert.pem @@ -0,0 +1,3988 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Wed Sep 2 18:30:34 2015 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.25. +## SHA1: ed3c0bbfb7912bcc00cd2033b0cb85c98d10559c +## + + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2007 +================================================= +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +PSCProcert +========== +-----BEGIN CERTIFICATE----- +MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk +ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ +MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz +dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl +cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw +IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw +MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w +DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD +ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp +Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC +wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA +3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh +RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO +EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2 +0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH +0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU +td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw +Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp +r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/ +AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz +Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId +xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp +ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH +EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h +Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k +ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG +9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG +MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG +LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52 +ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy +YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v +Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o +dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq +T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN +g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q +uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1 +n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn +FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo +5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq +3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5 +poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y +eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km +-----END CERTIFICATE----- + +China Internet Network Information Center EV Certificates Root +============================================================== +-----BEGIN CERTIFICATE----- +MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D +aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg +Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG +A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM +PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl +cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y +jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV +98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H +klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23 +KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC +7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD +glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5 +0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM +7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws +ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0 +5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8= +-----END CERTIFICATE----- + +Swisscom Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2 +MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM +LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo +ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ +wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH +Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a +SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS +NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab +mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY +Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3 +qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O +BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu +MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO +v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ +82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz +o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs +a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx +OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW +mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o ++sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC +rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX +5OfNeOI5wSsSnqaeG8XmDtkx2Q== +-----END CERTIFICATE----- + +Swisscom Root EV CA 2 +===================== +-----BEGIN CERTIFICATE----- +MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE +BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl +cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN +MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT +HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg +Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz +o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy +Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti +GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li +qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH +Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG +alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa +m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox +bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi +xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED +MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB +bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL +j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU +wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7 +XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH +59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/ +23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq +J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA +HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi +uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW +l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc= +-----END CERTIFICATE----- + +CA Disig Root R1 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy +3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8 +u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2 +m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk +CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa +YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6 +vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL +LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX +ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is +XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ +04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR +xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B +LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM +CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb +VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85 +YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS +ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix +lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N +UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ +a7+h89n07eLw4+1knj0vllJPgFOL +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +WoSign +====== +-----BEGIN CERTIFICATE----- +MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG +EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNVBAMTIUNlcnRpZmljYXRpb24g +QXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJ +BgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA +vcqNrLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1UfcIiePyO +CbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcSccf+Hb0v1naMQFXQoOXXDX +2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2ZjC1vt7tj/id07sBMOby8w7gLJKA84X5 +KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4Mx1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR ++ScPewavVIMYe+HdVHpRaG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ez +EC8wQjchzDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDaruHqk +lWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221KmYo0SLwX3OSACCK2 +8jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvASh0JWzko/amrzgD5LkhLJuYwTKVY +yrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWvHYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0C +AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R +8bNLtwYgFP6HEtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 +LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJMuYhOZO9sxXq +T2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2eJXLOC62qx1ViC777Y7NhRCOj +y+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VNg64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC +2nz4SNAzqfkHx5Xh9T71XXG68pWpdIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes +5cVAWubXbHssw1abR80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/ +EaEQPkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGcexGATVdVh +mVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+J7x6v+Db9NpSvd4MVHAx +kUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMlOtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGi +kpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWTee5Ehr7XHuQe+w== +-----END CERTIFICATE----- + +WoSign China +============ +-----BEGIN CERTIFICATE----- +MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQG +EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMMEkNBIOayg+mAmuagueiv +geS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYD +VQQKExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k +8H/rD195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld19AXbbQs5 +uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExfv5RxadmWPgxDT74wwJ85 +dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnkUkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5 +Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+LNVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFy +b7Ao65vh4YOhn0pdr8yb+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc +76DbT52VqyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6KyX2m ++Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0GAbQOXDBGVWCvOGU6 +yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaKJ/kR8slC/k7e3x9cxKSGhxYzoacX +GKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUA +A4ICAQBqinA4WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 +yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj/feTZU7n85iY +r83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6jBAyvd0zaziGfjk9DgNyp115 +j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0A +kLppRQjbbpCBhqcqBT/mhDn4t/lXX0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97 +qA4bLJyuQHCH2u2nFoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Y +jj4Du9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10lO1Hm13ZB +ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv +T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO +kI26oQ== +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn +dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ +FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+ +5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG +x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX +2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL +OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3 +sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C +GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5 +WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt +rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+ +nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg +tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW +sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp +pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA +zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq +ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52 +7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz +0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j +Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn +RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O ++T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq +/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE +Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM +lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8 +yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+ +eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW +FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ +7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ +Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM +8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi +FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi +yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c +J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw +sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl +OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P +AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV +MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF +JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G3 +================================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y +olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t +x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy +EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K +Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur +mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 +1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp +07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo +FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE +41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu +yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq +KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 +v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA +8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b +8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r +mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq +1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI +JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV +tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= +-----END CERTIFICATE----- + +Staat der Nederlanden EV Root CA +================================ +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M +MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl +cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk +SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW +O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r +0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 +Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV +XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr +08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV +0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd +74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx +fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa +ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu +c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq +5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN +b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN +f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi +5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 +WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK +DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy +eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- diff --git a/public/compressed/file.2lu77.min.css b/public/compressed/file.2lu77.min.css new file mode 100644 index 0000000..1b955e5 --- /dev/null +++ b/public/compressed/file.2lu77.min.css @@ -0,0 +1 @@ +html,body{background:#ff4040} \ No newline at end of file diff --git a/public/compressed/file.2t2ih.min.js b/public/compressed/file.2t2ih.min.js new file mode 100644 index 0000000..a98425b --- /dev/null +++ b/public/compressed/file.2t2ih.min.js @@ -0,0 +1 @@ +(function(){alert('hi');})(); \ No newline at end of file