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:----Fz4B5lOpALEIwUGHKGD1HrvgGfdcZMTe9BYY6Dc5USRjEAlIRId6D10ciLJrWTh170xgFcpGQcQpMzhuVFzPMZx4vWCkiMkfTfxJjymDFLAta4s7PxienJ3+0AuhaTyXywdbCCM9nPZOxTOFDucWDalYOLutgp8B4cDrcj1mpTKfXBPeJG4P77aaI3lAp/jx/iDpeRDqTKmSMm0nAoGjc+hCCq/ztwQzKMchCweINwK+PpYqgX2R/T+ySGXQaRcBg4Jg02uvylT5hipnHNGAFmYvXSJclaUeF7T352OiPMaB01P6jm1PLKPeMFYZNc6MoB8F/uvFID9cQchUBSFhGo7+QkE+5T3TC+CCCEDbfaLBMPqv18lvBAcnv8mNwG67XJRyzm5ifCJv/qB736B2xILwxsOFoEEXNyByoGB+Lno3iY00mmsdadT8m0B9KQnkz71dtvotGvvHPopBbNdaKBhwyRmWWW3FZJQDXL1weApdJvTMJax5fe83wMjW9CV182MTX5PsQ7NHLtBAJVOvyFCJBg7YFSVx4RUovARu8cXMC6Ig3BKpSupWq4mVwL2asLqhX6iiGXVmvGuTrM+bqwjXPQjwcIIkw3peaFPJWlVyalu+hbw5nYO/o1v/eP9s34F3Dk9bTcW2jwPE4dKKKpqLdx+ESUaOFh3JquDN6l8=----ATTACHMENT:----NTkxNzI1MTg1OTM5NjkxOSA2MDA1NTQzNTg4MzQ3NTI5IDI3Nzk5NDk4ODg2NTA1NzY=