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:----qZyevftpLDhCCr/Spc2JqG660BAaq+ZtVP/jnmHGtu4SPCIKKRHy12WAHtohqK3R1ommtWs9PocdLCtraCEMcMgu+ocGpDjmB8b6ujqOmxJPHRAct9V617Yx5G34KkvrRRf/pxdwSSBXmZk8rXpqOGFBRu8z2A3lYPYVre39xUeaQb6DvwbzsJUNcNaj70foU7anXj5llWHTCOZk8SaDkyCilrIFGzTPKdyqGeM0UO0grNPRHmabAh1zaREiohiKwGTGWuGnPSmGVhwRjuUVWULkjn8PuYfVXMRx6781tTKkjupdRG0xcSctUnrl3gTH2YBB7v+VscAoGKaCDR+99K93d8XZCjytP1jE5cj/IBLWhqIm+4FJkjGUxIk0nbl0tu4WMaZ+pEaZk6SidGT41G9gllnq032x3FNqTqH8lOkv3aGduL7xPVcZ2tVhwGXggzDfClZ37VUp0wh+iGmPYdrIhKUihudSK2FgILEPaNWl0vKyTMEAg9l9DhtOoyIZ0w0Agn2C6+CTGBCbAGU1SLm6GZPb67ZpaGa9G2qM4NvQ+ufURtmZNrm1wpZHaJjFXcxg/mRVeBWYK1auYRxVPDoGYzXtVWz+OYTmXcLtJqA84LsflQOwararfzsVD2cCPF7X93uQES4RbHtg+LmmVlWYEIaGODxDFGeTk7/i1fM=----ATTACHMENT:----NjQyMjQ4MTM5MDQ3NzMwMSAzNDczMzU1OTUyODU3NDI1IDcwNDcwMTE1MjMwNzgxNjA=