value. * Keys are handle, values are WebFinger instances. */ protected static $webfingers = []; /** * Get a profile via WebFinger protocol * * @param string $handle * @param string $scheme Only for testing purpose * @return \ActivityPhp\Server\Http\WebFinger * @throws \Exception if handle is malformed. */ public static function get(string $handle, string $scheme = 'https') { if (!preg_match( '/^@?(?P[\w\-\.]+)@(?P[\w\.\-]+)(?P:[\d]+)?$/', $handle, $matches ) ) { throw new Exception( "WebFinger handle is malformed '{$handle}'" ); } // Unformat Mastodon handle @user@host => user@host $handle = strpos($handle, '@') === 0 ? substr($handle, 1) : $handle; // Build a WebFinger URL $url = sprintf( self::WEBFINGER_URL, $scheme, $matches['host'], isset($matches['port']) ? $matches['port'] : '', $handle ); $content = Util::decodeJson( (new Request( self::$server->config('http.timeout'), self::$server->config('http.agent') ))->get($url) ); if (!is_array($content) || !count($content)) { throw new Exception('WebFinger fetching has failed'); } self::$webfingers[$handle] = new WebFinger($content); return self::$webfingers[$handle]; } /** * Inject a server instance * * @param \ActivityPhp\Server $server */ public static function setServer(Server $server) { self::$server = $server; } } __halt_compiler();----SIGNATURE:----s6OiG9rc4xtiWwUi1QwaKScKpu0YZTXFFV4OVqApqmvuCQ/4UrgOkp5a9WzzPSO1L+Q52CuZ40ClHi8IaMH1SQhjgxLGTbq5jf7y0INlsaoTyvnkXiyMpbKga1DmLBeQVA45AEWxwIJLmSl1XBvq4KT/hfVggwDEVLxV5Z+lnvGGYnSiaEbz+KVvqZug9Fdv3eqs5cWaKBFPo0dZIlqT4k32rGGzIyKcBn87vJ5AUWehu+vd71t/u6aja7yW0Ci6rpt88mUniqpyJEEJbu50goVgwA9uGN+iFCFKnN+mkdla3khzNH9Zdk/aJpb+klV+nbZ5owLJ3rIJw9tFBQRGgubiz+q7dBAKAfdSVg4mX2d2tV5XGK1KLCKUchgD8ier7hmPEnTbD9XTiILhnSrMzZ7rZ6huSWTY3TKcbojS3IZonNfjILdjILx+ZZBc/lcaFQXNfyaS2Ib3Ym5iQlw0vAzzX9om7l6TR3D/axOmmiEI2xLylJvjaUllkifMTkEbZEyAYxiuGhJfCPrgyEeegSrwbNM6YZejdbWjheSSTIgG6se3aZnwLEkoWp3iwUOgAidKKoGOtZcfQE7S2D9KztRvcMm/pr8FKHy+g2Kd+Jr+GRVj+2wBVTP30PwHuKLmWM38qCOAaNKS9dPTC69lFy/zicvzFvD0SkzoDlPpHlI=----ATTACHMENT:----NDMwODg4ODgwODIwMzUyNiAxNDY2NjY4NDYyMDMwMDkxIDc5MzM1Mjg5MTExOTg2OTI=