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:----XFfei0ao7hswne3DxJSyfebi59+IHlOjSXvBnD6aZVhvyrTYkoWcAc+0ZfxQ/9wkr5G5mHbFSqJBa/ZBKUkRoXXI3zMxj89QNHINt2YmeNoA9NilTzjn3rTU4WJlUcNbknIOBmj9grrnKLLZ8Y/07dj3xFNbwajijIAdSex62/VFqrzVp9cHLHQ3tar+l/H/Wq1pmgWMM8Bev7qiC4wUb+xWf8OCqu0elpSWz3KPTO+5QEtJ86Jlu+xWjFafuTYP+0kZdImAJ+oOuUWcyS4RgJPm9Ao91aLjTojqB53DeAgrTMXXP8Z8+N3n5p7p9zOddOWTb0eJR+1eURC66hOUkxErwAq5p0srTkuizRxjwzdXlAIAw7oRyXP/ADH4+lt/tEDVceqE4mZgTwOOr45tncypbAz9q8VqIPH/atzbcdbT2SKdPfC9LeZVDOgiUGpJI2hBqpJ8CwLkNF2KibPUlopEYmW76GBXZ8ElNeu2YFaEzPL0MrSVdBREx2Q2gZLUsOBfm03Yu+qLmYgmCvN6Cnqxzu+9avQuzPcEpCsUWTSBHCTgixYIl2fgv47viKMd/a07BYEdcBnz3AkVnRhPLNJg2/jpxrcKKhVziB8DDt0APqGxGlOl/bT9XD8WTg8yWJtGyHoHv6xNGrBj5ghDoMGUetZe6JNbgTNpCdY5v0M=----ATTACHMENT:----NTc1ODE4NzQ0NTk5OTA0MyA0MDY3ODY2ODg0Njc3NzMzIDExMzQ0NTQzODQ0MTczMzk=