OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
firebase
/
vendor
/
google
/
cloud-core
/
src
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/12/2024 10:33:48 AM
rwxr-xr-x
📄
AnonymousCredentials.php
2.5 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
ApiHelperTrait.php
7.42 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
ArrayTrait.php
3.58 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Batch
-
08/12/2024 10:33:46 AM
rwxr-xr-x
📄
Blob.php
2.11 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
CallTrait.php
1.12 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
ClientTrait.php
8.19 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Compute
-
08/12/2024 10:36:16 AM
rwxr-xr-x
📄
ConcurrencyControlTrait.php
1.4 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
DebugInfoTrait.php
1.33 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
DetectProjectIdTrait.php
3.09 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
Duration.php
2.2 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
EmulatorTrait.php
2.73 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Exception
-
08/12/2024 10:33:47 AM
rwxr-xr-x
📄
ExponentialBackoff.php
4.86 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
GeoPoint.php
6.21 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
GrpcRequestWrapper.php
4.76 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
GrpcTrait.php
9 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Iam
-
08/12/2024 10:33:47 AM
rwxr-xr-x
📄
InsecureCredentialsWrapper.php
1018 bytes
08/12/2024 10:33:12 AM
rw-r--r--
📄
Int64.php
1.77 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Iterator
-
08/12/2024 10:33:47 AM
rwxr-xr-x
📄
JsonTrait.php
2.21 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Lock
-
08/12/2024 10:33:47 AM
rwxr-xr-x
📁
Logger
-
08/12/2024 10:33:47 AM
rwxr-xr-x
📁
LongRunning
-
08/12/2024 10:33:48 AM
rwxr-xr-x
📄
PhpArray.php
7.45 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Report
-
08/12/2024 10:33:48 AM
rwxr-xr-x
📄
RequestBuilder.php
4.89 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
RequestHandler.php
4.33 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
RequestProcessorTrait.php
4.62 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
RequestWrapper.php
21.09 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
RequestWrapperTrait.php
7.3 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
RestTrait.php
4.87 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
Retry.php
3.45 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
RetryDeciderTrait.php
2.9 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
ServiceBuilder.php
16.89 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
SysvTrait.php
1.88 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Testing
-
08/12/2024 10:34:55 AM
rwxr-xr-x
📄
TimeTrait.php
4.48 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
Timestamp.php
4.11 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
TimestampTrait.php
1.61 KB
08/12/2024 10:33:12 AM
rw-r--r--
📁
Upload
-
08/12/2024 10:33:48 AM
rwxr-xr-x
📄
UriTrait.php
1.85 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
ValidateTrait.php
2.34 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
ValueMapperTrait.php
1.79 KB
08/12/2024 10:33:12 AM
rw-r--r--
📄
WhitelistTrait.php
1.16 KB
08/12/2024 10:33:12 AM
rw-r--r--
Editing: ApiHelperTrait.php
Close
<?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\ArrayTrait; use Google\ApiCore\Options\CallOptions; use Google\Protobuf\NullValue; use Google\Cloud\Core\Duration; /** * @internal * Supplies helper methods to interact with the APIs. */ trait ApiHelperTrait { use ArrayTrait; use TimeTrait; /** * Format a struct for the API. * * @param array $fields * @return array */ private function formatStructForApi(array $fields) { $fFields = []; foreach ($fields as $key => $value) { $fFields[$key] = $this->formatValueForApi($value); } return ['fields' => $fFields]; } private function unpackStructFromApi(array $struct) { $vals = []; foreach ($struct['fields'] as $key => $val) { $vals[$key] = $this->unpackValue($val); } return $vals; } private function unpackValue($value) { if (count($value) > 1) { throw new \RuntimeException("Unexpected fields in struct: $value"); } foreach ($value as $setField => $setValue) { switch ($setField) { case 'listValue': $valueList = []; foreach ($setValue['values'] as $innerValue) { $valueList[] = $this->unpackValue($innerValue); } return $valueList; case 'structValue': return $this->unpackStructFromApi($value['structValue']); default: return $setValue; } } } private function flattenStruct(array $struct) { return $struct['fields']; } private function flattenValue(array $value) { if (count($value) > 1) { throw new \RuntimeException("Unexpected fields in struct: $value"); } if (isset($value['nullValue'])) { return null; } return array_pop($value); } private function flattenListValue(array $value) { return $value['values']; } /** * Format a list for the API. * * @param array $list * @return array */ private function formatListForApi(array $list) { $values = []; foreach ($list as $value) { $values[] = $this->formatValueForApi($value); } return ['values' => $values]; } /** * Format a value for the API. * * @param mixed $value * @return array */ private function formatValueForApi($value) { $type = gettype($value); switch ($type) { case 'string': return ['string_value' => $value]; case 'double': case 'integer': return ['number_value' => $value]; case 'boolean': return ['bool_value' => $value]; case 'NULL': return ['null_value' => NullValue::NULL_VALUE]; case 'array': if (!empty($value) && $this->isAssoc($value)) { return ['struct_value' => $this->formatStructForApi($value)]; } return ['list_value' => $this->formatListForApi($value)]; } return []; } /** * Format a gRPC timestamp to match the format returned by the REST API. * * @param array $timestamp * @return string */ private function formatTimestampFromApi(array $timestamp) { $timestamp += [ 'seconds' => 0, 'nanos' => 0 ]; $dt = $this->createDateTimeFromSeconds($timestamp['seconds']); return $this->formatTimeAsString($dt, $timestamp['nanos']); } /** * Format a timestamp for the API with nanosecond precision. * * @param string $value * @return array */ private function formatTimestampForApi($value) { list ($dt, $nanos) = $this->parseTimeString($value); return [ 'seconds' => (int) $dt->format('U'), 'nanos' => (int) $nanos ]; } /** * Format a duration for the API. * * @param string|mixed $value * @return array */ private function formatDurationForApi($value) { if (is_string($value)) { $d = explode('.', trim($value, 's')); if (count($d) < 2) { $seconds = $d[0]; $nanos = 0; } else { $seconds = (int) $d[0]; $nanos = $this->convertFractionToNanoSeconds($d[1]); } } elseif ($value instanceof Duration) { $d = $value->get(); $seconds = $d['seconds']; $nanos = $d['nanos']; } return [ 'seconds' => $seconds, 'nanos' => $nanos ]; } /** * Construct a gapic client. Allows for tests to intercept. * * @param string $gapicName * @param array $config * @return mixed */ protected function constructGapic($gapicName, array $config) { return new $gapicName($config); } /** * Helper function to convert selective elements into protos out of a given input array. * * Example: * ``` * $output = $topic->convertDataToProtos(['schema' =>[], 'other vals'], ['schema' => Schema::class]); * $output['schema']; // This will be of the Schema type. * ``` * * @param array $input The input array. * @param array $map The key,value pairs specifying the elements and the proto classes. * * @return array The modified array */ private function convertDataToProtos(array $input, array $map) : array { foreach ($map as $key => $className) { if (isset($input[$key])) { $input[$key] = $this->serializer->decodeMessage(new $className, $input[$key]); } } return $input; } /** * Helper method used to split a supplied set of options into parameters that are passed into * a proto message and optional args. * We strictly treat the parameters allowed by `CallOptions` in GAX as the optional params * and everything else that is passed is passed to the Proto message constructor. */ private function splitOptionalArgs(array $input, array $extraAllowedKeys = []) : array { $callOptionFields = array_keys((new CallOptions([]))->toArray()); $keys = array_merge($callOptionFields, $extraAllowedKeys); $optionalArgs = $this->pluckArray($keys, $input); return [$input, $optionalArgs]; } }