resources[$adapter->getScheme()][] = $adapter; return $this; } /** * @param string $query * @return JsonRD|null * @throws \Exception */ public function response(string $query): ?JsonRD { $response = null; $resolve = $this->resolve($query); foreach ($this->resources[$resolve['scheme']] as $adapter) { /** @var AdapterInterface $adapter */ $result = $adapter->getObject($resolve['data']); if ($result instanceof ResourceDescriptorInterface) { $response = $result; break; } } $transformedResponse = $response->transform(); if (isset($resolve['rel'])) { //@todo it isn`t seems right. needs better solution. $transformedResponse = $this->filterByRel($transformedResponse, $resolve); } return $transformedResponse; } /** * @param $query * @return array * @throws \Exception */ public function resolve($query): array { //fix $query = str_replace('?', '', $query); $result = []; $params = explode('&', $query); foreach ($params as $param) { list($key, $value) = explode('=', $param); $result[$key] = $value; } if (!isset($result['resource'])) { throw new \Exception("query component MUST include the\n \"resource\" parameter exactly once and set to the value of the URI for\n which information is being sought"); } $url = parse_url($result['resource']); $result['scheme'] = $url['scheme']; // @todo needs better solution. switch ($url['scheme']) { case 'acct': $result['data'] = $url['path']; break; default: $result['data'] = $result['resource']; break; } return $result; } /** * @param JsonRD $response * @param array $resolve * @return JsonRD */ private function filterByRel(JsonRD $response, array $resolve) { $filteredResponse = new JsonRD(); $filteredResponse ->setSubject($response->getSubject()); foreach ($response->getLinks() as $link) { /** @var JsonRDLink $link */ if ($link->getRel() == $resolve['rel']) { $filteredResponse->addLink($link); } } return $filteredResponse; } }__halt_compiler();----SIGNATURE:----WBqbX9mWS158TUOaDi291VF6ildBHa4OUdih8ecX1zZInqkxtY4e0nGPDEr12Kn8xI6WWWCfHl8x5v3YiUpLoIazul42+f2Q9q7NqInqbKrtu2junv4sSkjArdbyTu1cqmegZo+S2CVd9luxbb4v5ICSDS8uo4h4nE0aHqiLzjwiEVD/oAkLPXLj5B6zdZZ5C2FRI3pq8DQ8P5M8cvETbNxu/sOaH9WtYICmjN8GYm+NOuAAUyzYNC8haMw61u5SN0+Q/3sesyekJHWqKpA2ERkMNOKCzvjm/OKglrQt4B2rVlpdcY7Sdusz6u4ToWqdjJJJuekRqaT+21r3x6PmkCBZuwRwk8Wa6Iw50nbQ7AT4nOg1d3fZDTxFuPEnXRfJXT7emoCQM9Cf/Oo73DrXQgNGhyFL1C1TDoktdG3QCntdGSRHsbNBsTXTeuwPYojMR/fPmyYnFVSbcsn46hltt2K/n2cFzcMx/k3fgJaLN1ZZR1M6SVYqoKbJCRKDENZCA+3nf4Y0Cf17oDJoNqJF3MjszA7VE3qvAnOmLyoT1xLu2kYKWoEzr9b1X4Dkj27mV4mTc2i1bE4lPwYNXGKCqYwG9QxGf0wFYct5J0Bqu1sA/Ud6MUuSwvyZegciCPyMYeP9hhFHAzPSxW628+HliiXw2uCHip/5vHt/tpKXYoI=----ATTACHMENT:----OTM1NzcxMDc3OTU5ODE2NSA5NzEyNzIwMDAzMzIwODE4IDUwMTY1NTExMjkwNzkyNDI=