Вход Регистрация
Файл: includes/library/aws/Aws/Api/Serializer/JsonBody.php
Строк: 51
<?php
namespace AwsApiSerializer;

use 
AwsApiService;
use 
AwsApiShape;
use 
AwsApiTimestampShape;

/**
 * Formats the JSON body of a JSON-REST or JSON-RPC operation.
 * @internal
 */
class JsonBody
{
    private 
$api;

    public function 
__construct(Service $api)
    {
        
$this->api $api;
    }

    
/**
     * Gets the JSON Content-Type header for a service API
     *
     * @param Service $service
     *
     * @return string
     */
    
public static function getContentType(Service $service)
    {
        return 
'application/x-amz-json-'
            
number_format($service->getMetadata('jsonVersion'), 1);
    }

    
/**
     * Builds the JSON body based on an array of arguments.
     *
     * @param Shape $shape Operation being constructed
     * @param array $args  Associative array of arguments
     *
     * @return string
     */
    
public function build(Shape $shape, array $args)
    {
        
$result json_encode($this->format($shape$args));

        return 
$result == '[]' '{}' $result;
    }

    private function 
format(Shape $shape$value)
    {
        switch (
$shape['type']) {
            case 
'structure':
                
$data = [];
                foreach (
$value as $k => $v) {
                    if (
$v !== null && $shape->hasMember($k)) {
                        
$data[$shape['locationName'] ?: $k] = $this->format(
                            
$shape->getMember($k),
                            
$v
                        
);
                    }
                }
                return 
$data;

            case 
'list':
                
$items $shape->getMember();
                foreach (
$value as &$v) {
                    
$data[] = $this->format($items$v);
                }
                return 
$value;

            case 
'map':
                if (empty(
$value)) {
                    return new 
stdClass;
                }
                
$values $shape->getValue();
                foreach (
$value as &$v) {
                    
$v $this->format($values$v);
                }
                return 
$value;

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

            case 
'timestamp':
                return 
TimestampShape::format($value'unixTimestamp');

            default:
                return 
$value;
        }
    }
}
Онлайн: 0
Реклама