mirror of
https://github.com/friendica/friendica
synced 2024-11-19 20:23:40 +00:00
Reestablish the communication with Mastodon
This commit is contained in:
parent
8580cd87a6
commit
c85331d8ac
1 changed files with 45 additions and 26 deletions
|
@ -177,6 +177,8 @@ class Probe {
|
||||||
|
|
||||||
$path_parts = explode("/", trim($parts["path"], "/"));
|
$path_parts = explode("/", trim($parts["path"], "/"));
|
||||||
|
|
||||||
|
$nick = array_pop($path_parts);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
$lrdd = self::xrd($host);
|
$lrdd = self::xrd($host);
|
||||||
$host .= "/".array_shift($path_parts);
|
$host .= "/".array_shift($path_parts);
|
||||||
|
@ -200,6 +202,19 @@ class Probe {
|
||||||
$path = str_replace('{uri}', urlencode("acct:".$uri), $link);
|
$path = str_replace('{uri}', urlencode("acct:".$uri), $link);
|
||||||
$webfinger = self::webfinger($path);
|
$webfinger = self::webfinger($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special treatment for Mastodon
|
||||||
|
// Problem is that Mastodon uses an URL format like http://domain.tld/@nick
|
||||||
|
// But the webfinger for this format fails.
|
||||||
|
if (!$webfinger AND isset($nick)) {
|
||||||
|
// Mastodon uses a "@" as prefix for usernames in their url format
|
||||||
|
$nick = ltrim($nick, '@');
|
||||||
|
|
||||||
|
$addr = $nick."@".$host;
|
||||||
|
|
||||||
|
$path = str_replace('{uri}', urlencode("acct:".$addr), $link);
|
||||||
|
$webfinger = self::webfinger($path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array($webfinger["links"]))
|
if (!is_array($webfinger["links"]))
|
||||||
|
@ -315,7 +330,34 @@ class Probe {
|
||||||
* @return array uri data
|
* @return array uri data
|
||||||
*/
|
*/
|
||||||
private function detect($uri, $network, $uid) {
|
private function detect($uri, $network, $uid) {
|
||||||
if (strstr($uri, '@')) {
|
$parts = parse_url($uri);
|
||||||
|
|
||||||
|
if (isset($parts["scheme"]) AND isset($parts["host"]) AND isset($parts["path"])) {
|
||||||
|
|
||||||
|
/// @todo: Ports?
|
||||||
|
$host = $parts["host"];
|
||||||
|
|
||||||
|
if ($host == 'twitter.com')
|
||||||
|
return array("network" => NETWORK_TWITTER);
|
||||||
|
|
||||||
|
$lrdd = self::xrd($host);
|
||||||
|
|
||||||
|
$path_parts = explode("/", trim($parts["path"], "/"));
|
||||||
|
|
||||||
|
while (!$lrdd AND (sizeof($path_parts) > 1)) {
|
||||||
|
$host .= "/".array_shift($path_parts);
|
||||||
|
$lrdd = self::xrd($host);
|
||||||
|
}
|
||||||
|
if (!$lrdd)
|
||||||
|
return self::feed($uri);
|
||||||
|
|
||||||
|
$nick = array_pop($path_parts);
|
||||||
|
|
||||||
|
// Mastodon uses a "@" as prefix for usernames in their url format
|
||||||
|
$nick = ltrim($nick, '@');
|
||||||
|
|
||||||
|
$addr = $nick."@".$host;
|
||||||
|
} elseif (strstr($uri, '@')) {
|
||||||
// If the URI starts with "mailto:" then jump directly to the mail detection
|
// If the URI starts with "mailto:" then jump directly to the mail detection
|
||||||
if (strpos($url,'mailto:') !== false) {
|
if (strpos($url,'mailto:') !== false) {
|
||||||
$uri = str_replace('mailto:', '', $url);
|
$uri = str_replace('mailto:', '', $url);
|
||||||
|
@ -341,32 +383,9 @@ class Probe {
|
||||||
|
|
||||||
$addr = $uri;
|
$addr = $uri;
|
||||||
} else {
|
} else {
|
||||||
$parts = parse_url($uri);
|
return false;
|
||||||
if (!isset($parts["scheme"]) OR
|
|
||||||
!isset($parts["host"]) OR
|
|
||||||
!isset($parts["path"]))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/// @todo: Ports?
|
|
||||||
$host = $parts["host"];
|
|
||||||
|
|
||||||
if ($host == 'twitter.com')
|
|
||||||
return array("network" => NETWORK_TWITTER);
|
|
||||||
|
|
||||||
$lrdd = self::xrd($host);
|
|
||||||
|
|
||||||
$path_parts = explode("/", trim($parts["path"], "/"));
|
|
||||||
|
|
||||||
while (!$lrdd AND (sizeof($path_parts) > 1)) {
|
|
||||||
$host .= "/".array_shift($path_parts);
|
|
||||||
$lrdd = self::xrd($host);
|
|
||||||
}
|
|
||||||
if (!$lrdd)
|
|
||||||
return self::feed($uri);
|
|
||||||
|
|
||||||
$nick = array_pop($path_parts);
|
|
||||||
$addr = $nick."@".$host;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$webfinger = false;
|
$webfinger = false;
|
||||||
|
|
||||||
/// @todo Do we need the prefix "acct:" or "acct://"?
|
/// @todo Do we need the prefix "acct:" or "acct://"?
|
||||||
|
|
Loading…
Reference in a new issue