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'); }
private function applyParser() { $parser = Service::createParser($this->api); $this->getEmitter()->on('process', static function (ProcessEvent $e) use($parser) { // Guard against exceptions and injected results. if ($e->getException() || $e->getResult()) { return; } // Ensure a response exists in order to parse. $response = $e->getResponse(); if (!$response) { throw new \RuntimeException('No response was received.'); } $e->setResult($parser($e->getCommand(), $response)); }); }