/** * @param callable $provider * @param string $serviceName * @param string $apiVersion * * @internal param array $definition Service description */ public function __construct(callable $provider, $serviceName, $apiVersion) { static $defaults = ['operations' => [], 'shapes' => [], 'metadata' => []], $defaultMeta = ['serviceFullName' => null, 'apiVersion' => null, 'endpointPrefix' => null, 'signingName' => null, 'signatureVersion' => null, 'protocol' => null]; $this->apiProvider = $provider; $this->serviceName = $serviceName; $this->apiVersion = $apiVersion; $definition = ApiProvider::resolve($provider, 'api', $serviceName, $apiVersion) + $defaults; $definition['metadata'] += $defaultMeta; parent::__construct($definition, new ShapeMap($definition['shapes'])); }
public static function _apply_api_provider(callable $value, array &$args, HandlerList $list) { $api = new Service(ApiProvider::resolve($value, 'api', $args['service'], $args['version']), $value); $args['api'] = $api; $args['serializer'] = Service::createSerializer($api, $args['endpoint']); $args['parser'] = Service::createParser($api); $args['error_parser'] = Service::createErrorParser($api->getProtocol()); $list->prependBuild(Middleware::requestBuilder($args['serializer']), 'builder'); }