use Friendica\Model\GServer;
use Friendica\Model\Profile;
use Friendica\Model\User;
-use Friendica\Network\HTTPClient\Client\HttpClient;
+use Friendica\Network\HTTPClient\Client\HttpClientAccept;
use Friendica\Network\HTTPClient\Client\HttpClientOptions;
use Friendica\Protocol\ActivityNamespace;
use Friendica\Protocol\ActivityPub;
// At first remove leading and trailing junk
$rawUri = trim($rawUri, "@#?:/ \t\n\r\0\x0B");
+ $rawUri = Network::convertToIdn($rawUri);
+
$uri = new Uri($rawUri);
if (!$uri->getScheme()) {
return $uri->__toString();
Logger::info('Probing', ['host' => $host, 'ssl_url' => $ssl_url, 'url' => $url, 'callstack' => System::callstack(20)]);
$xrd = null;
- $curlResult = DI::httpClient()->get($ssl_url, [HttpClientOptions::TIMEOUT => $xrd_timeout, HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_XRD_XML]);
+ $curlResult = DI::httpClient()->get($ssl_url, HttpClientAccept::XRD_XML, [HttpClientOptions::TIMEOUT => $xrd_timeout]);
$ssl_connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0);
if ($curlResult->isSuccess()) {
$xml = $curlResult->getBody();
}
if (!is_object($xrd) && !empty($url)) {
- $curlResult = DI::httpClient()->get($url, [HttpClientOptions::TIMEOUT => $xrd_timeout, HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_XRD_XML]);
+ $curlResult = DI::httpClient()->get($url, HttpClientAccept::XRD_XML, [HttpClientOptions::TIMEOUT => $xrd_timeout]);
$connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0);
if ($curlResult->isTimeout()) {
Logger::info('Probing timeout', ['url' => $url]);
return $lrdd;
}
- /**
- * Perform Webfinger lookup and return DFRN data
- *
- * Given an email style address, perform webfinger lookup and
- * return the resulting DFRN profile URL, or if no DFRN profile URL
- * is located, returns an OStatus subscription template (prefixed
- * with the string 'stat:' to identify it as on OStatus template).
- * If this isn't an email style address just return $webbie.
- * Return an empty string if email-style addresses but webfinger fails,
- * or if the resultant personal XRD doesn't contain a supported
- * subscription/friend-request attribute.
- *
- * amended 7/9/2011 to return an hcard which could save potentially loading
- * a lengthy content page to scrape dfrn attributes
- *
- * @param string $webbie Address that should be probed
- * @param string $hcard_url Link to the hcard - is returned by reference
- *
- * @return string profile link
- * @throws HTTPException\InternalServerErrorException
- */
- public static function webfingerDfrn(string $webbie, string &$hcard_url)
- {
- $profile_link = '';
-
- $links = self::lrdd($webbie);
- Logger::debug('Result', ['url' => $webbie, 'links' => $links]);
- if (!empty($links) && is_array($links)) {
- foreach ($links as $link) {
- if ($link['@attributes']['rel'] === ActivityNamespace::DFRN) {
- $profile_link = $link['@attributes']['href'];
- }
- if (($link['@attributes']['rel'] === ActivityNamespace::OSTATUSSUB) && ($profile_link == "")) {
- $profile_link = 'stat:'.$link['@attributes']['template'];
- }
- if ($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard') {
- $hcard_url = $link['@attributes']['href'];
- }
- }
- }
- return $profile_link;
- }
-
/**
* Check an URI for LRDD data
*
*/
private static function getHideStatus($url)
{
- $curlResult = DI::httpClient()->get($url, [HttpClientOptions::CONTENT_LENGTH => 1000000, HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_HTML]);
+ $curlResult = DI::httpClient()->get($url, HttpClientAccept::HTML, [HttpClientOptions::CONTENT_LENGTH => 1000000]);
if (!$curlResult->isSuccess()) {
return false;
}
$addr = $nick . '@' . $host;
}
- $webfinger = self::getWebfinger($parts['scheme'] . '://' . $host . self::WEBFINGER, HttpClient::ACCEPT_JRD_JSON, $uri, $addr);
+ $webfinger = self::getWebfinger($parts['scheme'] . '://' . $host . self::WEBFINGER, HttpClientAccept::JRD_JSON, $uri, $addr);
if (empty($webfinger)) {
$lrdd = self::hostMeta($host);
}
$addr = $nick . '@' . $host;
}
- $webfinger = self::getWebfinger($parts['scheme'] . '://' . $host . self::WEBFINGER, HttpClient::ACCEPT_JRD_JSON, $uri, $addr);
+ $webfinger = self::getWebfinger($parts['scheme'] . '://' . $host . self::WEBFINGER, HttpClientAccept::JRD_JSON, $uri, $addr);
if (empty($webfinger)) {
$lrdd = self::hostMeta($host);
}
$nick = substr($uri, 0, strpos($uri, '@'));
$addr = $uri;
- $webfinger = self::getWebfinger('https://' . $host . self::WEBFINGER, HttpClient::ACCEPT_JRD_JSON, $uri, $addr);
+ $webfinger = self::getWebfinger('https://' . $host . self::WEBFINGER, HttpClientAccept::JRD_JSON, $uri, $addr);
if (self::$istimeout) {
return [];
}
if (empty($webfinger)) {
- $webfinger = self::getWebfinger('http://' . $host . self::WEBFINGER, HttpClient::ACCEPT_JRD_JSON, $uri, $addr);
+ $webfinger = self::getWebfinger('http://' . $host . self::WEBFINGER, HttpClientAccept::JRD_JSON, $uri, $addr);
if (self::$istimeout) {
return [];
}
public static function pollZot($url, $data)
{
- $curlResult = DI::httpClient()->get($url, [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_JSON]);
+ $curlResult = DI::httpClient()->get($url, HttpClientAccept::JSON);
if ($curlResult->isTimeout()) {
return $data;
}
{
$xrd_timeout = DI::config()->get('system', 'xrd_timeout', 20);
- $curlResult = DI::httpClient()->get($url, [HttpClientOptions::TIMEOUT => $xrd_timeout, HttpClientOptions::ACCEPT_CONTENT => $type]);
+ $curlResult = DI::httpClient()->get($url, $type, [HttpClientOptions::TIMEOUT => $xrd_timeout]);
if ($curlResult->isTimeout()) {
self::$istimeout = true;
return [];
*/
private static function pollNoscrape($noscrape_url, $data)
{
- $curlResult = DI::httpClient()->get($noscrape_url, [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_JSON]);
+ $curlResult = DI::httpClient()->get($noscrape_url, HttpClientAccept::JSON);
if ($curlResult->isTimeout()) {
self::$istimeout = true;
return $data;
*/
private static function pollHcard($hcard_url, $data, $dfrn = false)
{
- $curlResult = DI::httpClient()->get($hcard_url, [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_HTML]);
+ $curlResult = DI::httpClient()->get($hcard_url, HttpClientAccept::HTML);
if ($curlResult->isTimeout()) {
self::$istimeout = true;
return [];
$pubkey = substr($pubkey, 5);
}
} elseif (Strings::normaliseLink($pubkey) == 'http://') {
- $curlResult = DI::httpClient()->get($pubkey, [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_DEFAULT]);
+ $curlResult = DI::httpClient()->get($pubkey, HttpClientAccept::MAGIC_KEY);
if ($curlResult->isTimeout()) {
self::$istimeout = true;
return $short ? false : [];
}
+ Logger::debug('Fetched public key', ['Content-Type' => $curlResult->getHeader('Content-Type'), 'url' => $pubkey]);
$pubkey = $curlResult->getBody();
}
}
// Fetch all additional data from the feed
- $curlResult = DI::httpClient()->get($data["poll"], [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_FEED_XML]);
+ $curlResult = DI::httpClient()->get($data["poll"], HttpClientAccept::FEED_XML);
if ($curlResult->isTimeout()) {
self::$istimeout = true;
return [];
*/
private static function pumpioProfileData($profile_link)
{
- $curlResult = DI::httpClient()->get($profile_link, [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_HTML]);
+ $curlResult = DI::httpClient()->get($profile_link, HttpClientAccept::HTML);
if (!$curlResult->isSuccess() || empty($curlResult->getBody())) {
return [];
}
*/
private static function feed($url, $probe = true)
{
- $curlResult = DI::httpClient()->get($url, [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_FEED_XML]);
+ $curlResult = DI::httpClient()->get($url, HttpClientAccept::FEED_XML);
if ($curlResult->isTimeout()) {
self::$istimeout = true;
return [];
return '';
}
- $curlResult = DI::httpClient()->get($gserver['noscrape'] . '/' . $data['nick'], [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_JSON]);
+ $curlResult = DI::httpClient()->get($gserver['noscrape'] . '/' . $data['nick'], HttpClientAccept::JSON);
if ($curlResult->isSuccess() && !empty($curlResult->getBody())) {
$noscrape = json_decode($curlResult->getBody(), true);
private static function updateFromFeed(array $data)
{
// Search for the newest entry in the feed
- $curlResult = DI::httpClient()->get($data['poll'], [HttpClientOptions::ACCEPT_CONTENT => HttpClient::ACCEPT_ATOM_XML]);
+ $curlResult = DI::httpClient()->get($data['poll'], HttpClientAccept::ATOM_XML);
if (!$curlResult->isSuccess() || !$curlResult->getBody()) {
return '';
}