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:----Ciu7q6fB+TkYWmGrG63Nervl4kx1qtqCXIUgYXVdww3S1NAju7b+ODPUrQhXpypUlxY8SreBTnVILEiOkFluHeLh77k1pcI3h852BKdm15pmfL28t1YOr5dnyfzLZTRelzoNFrvbON2F3HwE36owuvIO70VT0WXynwallCdMe9LI1ZtelHuDb4I6d8YXCPM1cO7Z301foTQbxLK1KBcMpeU1vX9gsoe4QvPLPuu5kA+uIz3wWeHv3JSJ6Cr1tqaYohArsOL5auKC+dVgftALm08MPF28tHcFoBZXW/36Lo6KAk9xlYJ7VaNGkTh6XUPr98ndkG0hMImnOA0Dy/x8/XOlTJYcPmnNWPEkiNa/jS3U+gKgk5W0h1La3AGn5ZfSxs9bYXzO++NmsdZ22T42pvcvb7qdbg4AzRdG8aG4pnBYVXy0KjChpi0SNHe75CgdTN6NGwXAR+DREspeery68p4dZB7qoqc09pzEzgs9i3vFdfs7lB/RMurPtg44nyRD2Ld3YfcCyLI8YLEAUBH48Ed+tacXphX98N81PlA28BakNG9B8GS5fZf9accK63338aehcZ3/SkM+kwFFXtfi2vuD1c7Tf8C7Su0AugQm91zCKhmERHJrHj4IcOPrtZlwKD4mUKFtkmsi4x8YFmM+EkaDEBy+m6GZCAdLJ0Mrb1M=----ATTACHMENT:----Mzk4Mzg3OTkzODA5MzE4NyA2MTQ3NTQ2ODM2MjY5OTI5IDk1NDMwMTg0Nzk1NDQyMDU=