PHP Classes

File: application/modules/extensions/aws/Aws/Api/Parser/JsonParser.php

Recommend this page to a friend!
  Classes of Tran Tuan   Pretty PHP S3 Files Manager   application/modules/extensions/aws/Aws/Api/Parser/JsonParser.php   Download  
File: application/modules/extensions/aws/Aws/Api/Parser/JsonParser.php
Role: Application script
Content type: text/plain
Description: Application script
Class: Pretty PHP S3 Files Manager
Web based interface to manage files in Amazon S3
Author: By
Last change:
Date: 8 years ago
Size: 1,674 bytes
 

Contents

Class file image Download
<?php
namespace Aws\Api\Parser;

use
Aws\Api\DateTimeResult;
use
Aws\Api\Shape;

/**
 * @internal Implements standard JSON parsing.
 */
class JsonParser
{
    public function
parse(Shape $shape, $value)
    {
        if (
$value === null) {
            return
$value;
        }

        switch (
$shape['type']) {
            case
'structure':
               
$target = [];
                foreach (
$shape->getMembers() as $name => $member) {
                   
$locationName = $member['locationName'] ?: $name;
                    if (isset(
$value[$locationName])) {
                       
$target[$name] = $this->parse($member, $value[$locationName]);
                    }
                }
                return
$target;

            case
'list':
               
$member = $shape->getMember();
               
$target = [];
                foreach (
$value as $v) {
                   
$target[] = $this->parse($member, $v);
                }
                return
$target;

            case
'map':
               
$values = $shape->getValue();
               
$target = [];
                foreach (
$value as $k => $v) {
                   
$target[$k] = $this->parse($values, $v);
                }
                return
$target;

            case
'timestamp':
               
// The Unix epoch (or Unix time or POSIX time or Unix
                // timestamp) is the number of seconds that have elapsed since
                // January 1, 1970 (midnight UTC/GMT).
               
return DateTimeResult::fromEpoch($value);

            case
'blob':
                return
base64_decode($value);

            default:
                return
$value;
        }
    }
}