PluginProbe
Media Cloud Sync / 1.4.2
Media Cloud Sync v1.4.2
1.4.2 1.4.1 1.4.0 1.3.12 1.3.11 1.3.10 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.2.0 1.2.10 1.2.11 1.2.12 1.2.13 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 All 36 releases
media-cloud-sync / includes / sdk / s3 / Aws / Api / Parser / JsonParser.php

JsonParser.php in Media Cloud Sync 1.4.2, at includes/sdk/s3/Aws/Api/Parser/JsonParser.php

61 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Dudlewebs\WPMCS\s3\Aws\Api\Parser;
4
5 use Dudlewebs\WPMCS\s3\Aws\Api\DateTimeResult;
6 use Dudlewebs\WPMCS\s3\Aws\Api\Shape;
7 /**
8 * @internal Implements standard JSON parsing.
9 */
10 class JsonParser
11 {
12 public function parse(Shape $shape, $value)
13 {
14 if ($value === null) {
15 return $value;
16 }
17 switch ($shape['type']) {
18 case 'structure':
19 if (isset($shape['document']) && $shape['document']) {
20 return $value;
21 }
22 $target = [];
23 foreach ($shape->getMembers() as $name => $member) {
24 $locationName = $member['locationName'] ?: $name;
25 if (isset($value[$locationName])) {
26 $target[$name] = $this->parse($member, $value[$locationName]);
27 }
28 }
29 if (isset($shape['union']) && $shape['union'] && \is_array($value) && empty($target)) {
30 foreach ($value as $key => $val) {
31 $target['Unknown'][$key] = $val;
32 }
33 }
34 return $target;
35 case 'list':
36 $member = $shape->getMember();
37 $target = [];
38 foreach ($value as $v) {
39 $target[] = $this->parse($member, $v);
40 }
41 return $target;
42 case 'map':
43 $values = $shape->getValue();
44 $target = [];
45 foreach ($value as $k => $v) {
46 // null map values should not be deserialized
47 if (!\is_null($v)) {
48 $target[$k] = $this->parse($values, $v);
49 }
50 }
51 return $target;
52 case 'timestamp':
53 return DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
54 case 'blob':
55 return \base64_decode($value);
56 default:
57 return $value;
58 }
59 }
60 }
61