public function __invoke(ServiceManagerInterface $serviceManager, array $moreParams = []) { if (!isset($moreParams['buffer'])) { throw new Exception\UnexpectedValueException('Could not parse request.'); } $result = []; if (!\uv_http_parser_execute(\uv_http_parser_init(\UV::HTTP_REQUEST), $moreParams['buffer'], $result)) { throw new Exception\UnexpectedValueException('Could not parse request.'); } if (!isset($result['REQUEST_METHOD'])) { throw new Exception\BadRequestException('No request method found or this method is not supported.'); } if (!isset($result['PATH'])) { throw new Exception\BadRequestException('Invalid request path specified.'); } $request = new Request($result['REQUEST_METHOD'], $result['PATH']); $method = $result['REQUEST_METHOD']; if (!in_array($method, ['GET', 'HEAD']) && isset($result['HEADERS']) && isset($result['HEADERS']['BODY'])) { $postData = []; parse_str($result['HEADERS']['BODY'], $postData); $request->setPostParams(new ArrayObject($postData)); } if (isset($result['QUERY'])) { $queryData = []; parse_str($result['QUERY'], $queryData); $request->setQueryParams(new ArrayObject($queryData)); } if (isset($result['HEADERS'])) { $request->setHeaders(new ArrayObject($result['HEADERS'])); if (isset($result['HEADERS']['COOKIE'])) { $cookieData = []; parse_str($result['HEADERS']['COOKIE'], $cookieData); $request->setCookieParams(new ArrayObject($cookieData)); } } return $request; }
/** * @param $uri * @param array $queryParams * @param array $postParams * @param callable $callback * @return Client */ public function post($uri, array $queryParams, array $postParams, callable $callback) { $request = new Request('GET', $uri); $request->setQueryParams(new \ArrayObject($queryParams)); $request->setPostParams(new \ArrayObject($postParams)); return $this->sendRequest($request, $callback); }