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: PhpArray.php
Close
<?php /** * Copyright 2016 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Cloud\Core; use DrSlump\Protobuf; use google\protobuf\Value; use google\protobuf\ListValue; use google\protobuf\NullValue; use google\protobuf\Struct; /** * Extend the Protobuf-PHP array codec to allow messages to match the format * used for REST. * @deprecated * @codeCoverageIgnore * @internal */ class PhpArray extends Protobuf\Codec\PhpArray { /** * @var array */ private $customFilters; /** * @var bool */ private $useCamelCase; /** * @param array $customFilters A set of callbacks to apply to properties in * a gRPC response. * @param bool $useCamelCase Whether to convert key casing to camelCase. * } */ public function __construct(array $customFilters = [], $useCamelCase = true) { $this->customFilters = $customFilters; $this->useCamelCase = $useCamelCase; } /** * Borrowed heavily from {@see DrSlump\Protobuf\Codec\PhpArray::encodeMessage()}. * With this approach we are able to transform the response with minimal * overhead. */ protected function encodeMessage(Protobuf\Message $message) { $descriptor = Protobuf::getRegistry()->getDescriptor($message); $data = []; foreach ($descriptor->getFields() as $tag => $field) { $empty = !$message->_has($tag); if ($field->isRequired() && $empty) { throw new \UnexpectedValueException( sprintf( 'Message %s\'s field tag %s(%s) is required but has no value', get_class($message), $tag, $field->getName() ) ); } if ($empty) { continue; } $key = $this->useTagNumber ? $field->getNumber() : $field->getName(); $v = $message->_get($tag); if ($field->isRepeated()) { // Make sure the value is an array of values $v = is_array($v) ? $v : array($v); $arr = []; foreach ($v as $k => $vv) { // Skip nullified repeated values if (null === $vv) { continue; } $filteredValue = $this->filterValue($vv, $field); if ($this->isKeyValueMessage($vv)) { $arr[key($filteredValue)] = current($filteredValue); } else { $arr[$k] = $filteredValue; } $v = $arr; } } else { $v = $this->filterValue($v, $field); } $key = ($this->useCamelCase) ? $this->toCamelCase($key) : $key; if (isset($this->customFilters[$key])) { $v = call_user_func($this->customFilters[$key], $v); } $data[$key] = $v; } return $data; } /** * Borrowed heavily from {@see DrSlump\Protobuf\Codec\PhpArray::decodeMessage()}. * The only addition here is converting camel case field names to snake case. */ protected function decodeMessage(Protobuf\Message $message, $data) { // Get message descriptor $descriptor = Protobuf::getRegistry()->getDescriptor($message); foreach ($data as $key => $v) { // Get the field by tag number or name $field = $this->useTagNumber ? $descriptor->getField($key) : $descriptor->getFieldByName($this->toSnakeCase($key)); // Unknown field found if (!$field) { $unknown = new Protobuf\Codec\PhpArray\Unknown($key, gettype($v), $v); $message->addUnknown($unknown); continue; } if ($field->isRepeated()) { // Make sure the value is an array of values $v = is_array($v) && is_int(key($v)) ? $v : array($v); foreach ($v as $k => $vv) { $v[$k] = $this->filterValue($vv, $field); } } else { $v = $this->filterValue($v, $field); } $message->_set($field->getNumber(), $v); } return $message; } protected function filterValue($value, Protobuf\Field $field) { if (trim($field->getReference(), '\\') === NullValue::class) { return null; } if ($value instanceof Protobuf\Message) { if ($this->isKeyValueMessage($value)) { $v = $value->getValue(); return [ $value->getKey() => $v instanceof Protobuf\Message ? $this->encodeMessage($v) : $v ]; } if ($value instanceof Struct) { $vals = []; foreach ($value->getFields() as $field) { $val = $this->filterValue( $field->getValue(), $field->descriptor()->getFieldByName('value') ); $vals[$field->getKey()] = $val; } return $vals; } if ($value instanceof ListValue) { $vals = []; foreach ($value->getValuesList() as $val) { $fields = $val->descriptor()->getFields(); foreach ($fields as $field) { $name = $field->getName(); if ($val->$name !== null) { $vals[] = $this->filterValue($val->$name, $field); } } } return $vals; } if ($value instanceof Value) { $fields = $value->descriptor()->getFields(); foreach ($fields as $field) { $name = $field->getName(); if ($value->$name !== null) { return $this->filterValue($value->$name, $field); } } } } return parent::filterValue($value, $field); } private function toSnakeCase($key) { return strtolower(preg_replace(['/([a-z\d])([A-Z])/', '/([^_])([A-Z][a-z])/'], '$1_$2', $key)); } private function toCamelCase($key) { return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $key)))); } private function isKeyValueMessage($value) { return property_exists($value, 'key') && property_exists($value, 'value'); } }