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:----qvHWGAXlAdVxKVO2Gf2tL6xWOFNKpka+Fv+tTJ35leHC+0AzuWb25uktdTDPQ2soIfRsdElHPyr8KpY/XTbtyNq1y1Dnzyw7Zr9YGH4HZYmbw110XQvZ4IZ0VMUnAbREabdDf0NckvjyL7kLUHyRln21IFmmH1rN8mIBvY/yVtyDyF3s3Cqkfjmp886+whDs3OtvKiKt0EalzLAx63Z5mIY3mNjQwE+cTWEg2RHAvb7X15V5KJe5M1KHvbdfz+wtqBoVZhIP3hTky7MqMXaMdYic5Fr2znMNzbyDvIG+M8Jou51qoxbD6dQgu/F/kfxbl8z708iPWwtmZbTAxYGfmq+eCdZtHzQF+B1Q8gILveWx1NkTNVytYads6rnq6O1PltfCyeXxOZ9uxtO2TO+A+3bPeBJuCz2/vG5f+D1PNN3/e6I4rroZ6E2zgzWihQ9aIOCaU6dO0JX11ulivWP/tyhEnTLJk8XkoVE2MwI6wJ3/taX3e3UCZVLoX8DIwYLJHDdDjz0J8P/mwZQvVm7T9GssLCwrcF063clQd2wYL1+R9u5yCgqRsDYHEG5kRiLxPnrI1sz4wPjGFHplf/DRV5gI8mSnoaMWSCKUQcWXerFeq1n968unOeKgZAVGqHkGu8zRN/M9QbWRDaEKAvliSbraEemoR9VxiXP4qMT1uSo=----ATTACHMENT:----MjY1MzMzNTAyOTIxOTE5MCA0MzY3OTUxMDYyMzgyNzI4IDcyNTQ2MjMwMzY3MzU2Njk=