public function __invoke(ServiceManagerInterface $serviceManager, array $moreParams = []) { $host = $moreParams[0]; if (filter_var($host, FILTER_VALIDATE_IP | FILTER_FLAG_IPV6)) { return $serviceManager->get('UdpIp6Socket', $moreParams); } return $serviceManager->get('UdpIp4Socket', $moreParams); }
public function __invoke(ServiceManagerInterface $serviceManager, array $moreParams = []) { if (!isset($moreParams['buffer'])) { throw new Exception\UnexpectedValueException('Could not parse request.'); } /** @var RequestParser $requestParser */ $requestParser = $serviceManager->get('RequestParser'); /** @var Request $request */ $request = null; $requestParser->on(['state'], function (Event $event, $method, $path, $version) use(&$request) { $request = Request::create($path, $method); $event->getEventEmitter()->on(['header'], function (Event $e, $headerName, $headerValue) use($request) { /** @var Request $request */ $name = \str_replace('-', '_', \strtoupper($headerName)); if ($name === 'COOKIE') { $cookieData = []; parse_str($headerValue, $cookieData); $request->setCookieParams(new ArrayObject($cookieData)); } else { $request->setHeader($name, $headerValue); } }); $event->getEventEmitter()->on(['body'], function (Event $e, $body) use($request) { /** @var Request $request */ if (!in_array($request->getMethod(), ['GET', 'HEAD']) && !empty($body)) { $postData = []; parse_str($body, $postData); $request->setPostParams(new ArrayObject($postData)); } }); }); $requestParser->parse($moreParams['buffer']); return $request; }