]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/APContact.php
Merge branch 'friendica:2022.12-rc' into new_image_presentation
[friendica.git] / src / Model / APContact.php
index 3b568f39f1d85c5c7be8880668adfe97d7c94e43..fd748f1cd4e92419b77513f5cad205a3cec60fcb 100644 (file)
@@ -291,22 +291,19 @@ class APContact
                        return $fetched_contact;
                }
 
-               $parts = parse_url($apcontact['url']);
-               unset($parts['scheme']);
-               unset($parts['path']);
-
                if (empty($apcontact['addr'])) {
-                       if (!empty($apcontact['nick']) && is_array($parts)) {
-                               $apcontact['addr'] = $apcontact['nick'] . '@' . str_replace('//', '', Network::unparseURL($parts));
-                       } else {
+                       try {
+                               $apcontact['addr'] = $apcontact['nick'] . '@' . (new Uri($apcontact['url']))->getAuthority();
+                       } catch (\Throwable $e) {
+                               Logger::warning('Unable to coerce APContact URL into a UriInterface object', ['url' => $apcontact['url'], 'error' => $e->getMessage()]);
                                $apcontact['addr'] = '';
                        }
                }
 
                $apcontact['pubkey'] = null;
                if (!empty($compacted['w3id:publicKey'])) {
-                       $apcontact['pubkey'] = trim(JsonLD::fetchElement($compacted['w3id:publicKey'], 'w3id:publicKeyPem', '@value'));
-                       if (strstr($apcontact['pubkey'], 'RSA ')) {
+                       $apcontact['pubkey'] = trim(JsonLD::fetchElement($compacted['w3id:publicKey'], 'w3id:publicKeyPem', '@value') ?? '');
+                       if (strpos($apcontact['pubkey'], 'RSA ') !== false) {
                                $apcontact['pubkey'] = Crypto::rsaToPem($apcontact['pubkey']);
                        }
                }