summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2020-10-12 22:25:49 +0200
committerGitHub <noreply@github.com>2020-10-12 22:25:49 +0200
commitca7a921ee28285427201e5d57aedd444b0f5bb48 (patch)
treeac88c1c9c30877c92f80207e88c617f2988b5d5a
parent5c2eb89b0fe280eaf819b9690cf15146a81d8e0a (diff)
parente3814b742ce46d49d0d17e66d719eb91b76e2193 (diff)
Merge pull request #1843 from nextcloud/fix/social-apple
-rw-r--r--lib/Service/Social/FacebookProvider.php16
-rw-r--r--lib/Service/Social/InstagramProvider.php1
-rw-r--r--lib/Service/Social/MastodonProvider.php5
-rw-r--r--lib/Service/Social/TumblrProvider.php1
4 files changed, 10 insertions, 13 deletions
diff --git a/lib/Service/Social/FacebookProvider.php b/lib/Service/Social/FacebookProvider.php
index 028b1dcc..770ac45a 100644
--- a/lib/Service/Social/FacebookProvider.php
+++ b/lib/Service/Social/FacebookProvider.php
@@ -78,17 +78,11 @@ class FacebookProvider implements ISocialProvider {
if ($result->getStatusCode() !== 200) {
return $profileName;
}
- $htmlResult = new \DOMDocument();
- $htmlResult->loadHTML($result->getBody());
- $metas = $htmlResult->getElementsByTagName('meta');
- foreach ($metas as $meta) {
- foreach ($meta->attributes as $attr) {
- $value = $attr->nodeValue;
- if (strpos($value, "/profile/")) {
- $value = str_replace('fb://profile/', '', $value);
- return($value);
- }
- }
+ $htmlResult = $result->getBody();
+
+ $entity_id = '/.*"entity_id":"([0-9]+)".*/';
+ if (preg_match($entity_id, $htmlResult, $matches)) {
+ return($matches[1]);
}
// keyword not found - page changed?
return $profileName;
diff --git a/lib/Service/Social/InstagramProvider.php b/lib/Service/Social/InstagramProvider.php
index 36c5a3d6..b7687e71 100644
--- a/lib/Service/Social/InstagramProvider.php
+++ b/lib/Service/Social/InstagramProvider.php
@@ -42,6 +42,7 @@ class InstagramProvider implements ISocialProvider {
* @return string
*/
public function cleanupId(string $candidate):string {
+ $candidate = preg_replace('/^' . preg_quote('x-apple:', '/') . '/', '', $candidate);
return basename($candidate);
}
diff --git a/lib/Service/Social/MastodonProvider.php b/lib/Service/Social/MastodonProvider.php
index bcbde9f3..74b68e96 100644
--- a/lib/Service/Social/MastodonProvider.php
+++ b/lib/Service/Social/MastodonProvider.php
@@ -42,10 +42,11 @@ class MastodonProvider implements ISocialProvider {
* @return string
*/
public function cleanupId(string $candidate):?string {
+ $candidate = preg_replace('/^' . preg_quote('x-apple:', '/') . '/', '', $candidate);
try {
- if (strpos($candidate, '@') === 0) {
+ if (strpos($candidate, 'http') !== 0) {
$user_server = explode('@', $candidate);
- $candidate = 'https://' . $user_server[2] . '/@' . $user_server[1];
+ $candidate = 'https://' . array_pop($user_server) . '/@' . array_pop($user_server);
}
} catch (Exception $e) {
$candidate = null;
diff --git a/lib/Service/Social/TumblrProvider.php b/lib/Service/Social/TumblrProvider.php
index 71f2fa71..a830b945 100644
--- a/lib/Service/Social/TumblrProvider.php
+++ b/lib/Service/Social/TumblrProvider.php
@@ -35,6 +35,7 @@ class TumblrProvider implements ISocialProvider {
* @return string
*/
public function cleanupId(string $candidate):?string {
+ $candidate = preg_replace('/^' . preg_quote('x-apple:', '/') . '/', '', $candidate);
$subdomain = '/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/i'; // subdomain
if (preg_match($subdomain, $candidate, $matches)) {
$candidate = $matches[1];