Merge pull request #10641 from nupplaphil/bug/http_client

Fix HTTPClient Errors
This commit is contained in:
Hypolite Petovan 2021-08-29 08:22:39 -04:00 committed by GitHub
commit 1c35bcf5c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 152 additions and 110 deletions

View file

@ -146,11 +146,11 @@ class HTTPClient implements IHTTPClient
$exception->hasResponse()) {
return new GuzzleResponse($exception->getResponse(), $url, $exception->getCode(), '');
} else {
return new CurlResult($url, '', ['http_code' => $exception->getCode()], $exception->getCode(), '');
return new CurlResult($url, '', ['http_code' => 500], $exception->getCode(), '');
}
} catch (InvalidArgumentException $argumentException) {
} catch (InvalidArgumentException | \InvalidArgumentException $argumentException) {
$this->logger->info('Invalid Argument for HTTP call.', ['url' => $url, 'method' => $method, 'exception' => $argumentException]);
return new CurlResult($url, '', ['http_code' => $argumentException->getCode()], $argumentException->getCode(), $argumentException->getMessage());
return new CurlResult($url, '', ['http_code' => 500], $argumentException->getCode(), $argumentException->getMessage());
} finally {
$this->logger->debug('Request stop.', ['url' => $url, 'method' => $method]);
$this->profiler->stopRecording();
@ -220,7 +220,7 @@ class HTTPClient implements IHTTPClient
$urlResult = $this->resolver->resolveURL($url);
if ($urlResult->didErrorOccur()) {
throw new TransferException($urlResult->getErrorMessageString());
throw new TransferException($urlResult->getErrorMessageString(), $urlResult->getHTTPStatusCode());
}
return $urlResult->getURL();

View file

@ -21,6 +21,8 @@
namespace Friendica\Network;
use GuzzleHttp\Exception\TransferException;
/**
* Interface for calling HTTP requests and returning their responses
*/
@ -124,7 +126,8 @@ interface IHTTPClient
* @param string $url A user-submitted URL
*
* @return string A canonical URL
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*
* @throws TransferException In case there's an error during the resolving
*/
public function finalUrl(string $url);
}

View file

@ -42,6 +42,7 @@ use Friendica\Util\ParseUrl;
use Friendica\Util\Proxy;
use Friendica\Util\Strings;
use Friendica\Util\XML;
use GuzzleHttp\Exception\TransferException;
/**
* This class contain functions to import feeds (RSS/RDF/Atom)
@ -297,7 +298,11 @@ class Feed
$orig_plink = $item["plink"];
try {
$item["plink"] = DI::httpClient()->finalUrl($item["plink"]);
} catch (TransferException $exception) {
Logger::notice('Item URL couldn\'t get expanded', ['url' => $item["plink"], 'exception' => $exception]);
}
$item["title"] = XML::getFirstNodeValue($xpath, 'atom:title/text()', $entry);

View file

@ -0,0 +1,33 @@
<?php
namespace Friendica\Test\src\Network;
use Friendica\DI;
use Friendica\Test\DiceHttpMockHandlerTrait;
use Friendica\Test\MockedTest;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\Psr7\Response;
class HTTPClientTest extends MockedTest
{
use DiceHttpMockHandlerTrait;
protected function setUp(): void
{
parent::setUp();
$this->setupHttpMockHandler();
}
/**
* Test for issue https://github.com/friendica/friendica/issues/10473#issuecomment-907749093
*/
public function testInvalidURI()
{
$this->httpRequestHandler->setHandler(new MockHandler([
new Response(301, ['Location' => 'https:///']),
]));
self::assertFalse(DI::httpClient()->get('https://friendica.local')->isSuccess());
}
}

View file

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 2021.09-dev\n"
"Project-Id-Version: 2021.09-rc\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-08-24 08:57+0000\n"
"POT-Creation-Date: 2021-08-29 14:07+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -39,7 +39,7 @@ msgstr ""
#: include/api.php:4437 mod/photos.php:89 mod/photos.php:198 mod/photos.php:626
#: mod/photos.php:1034 mod/photos.php:1051 mod/photos.php:1597
#: src/Model/User.php:1112 src/Model/User.php:1120 src/Model/User.php:1128
#: src/Model/User.php:1118 src/Model/User.php:1126 src/Model/User.php:1134
#: src/Module/Settings/Profile/Photo/Crop.php:101
#: src/Module/Settings/Profile/Photo/Crop.php:117
#: src/Module/Settings/Profile/Photo/Crop.php:133
@ -236,7 +236,7 @@ msgstr ""
msgid "Poke"
msgstr ""
#: include/conversation.php:865 mod/follow.php:139 src/Content/Widget.php:76
#: include/conversation.php:865 mod/follow.php:138 src/Content/Widget.php:76
#: src/Model/Contact.php:1042 src/Model/Contact.php:1055
#: view/theme/vier/theme.php:172
msgid "Connect/Follow"
@ -481,14 +481,14 @@ msgid "Preview"
msgstr ""
#: include/conversation.php:1161 mod/editpost.php:130 mod/fbrowser.php:105
#: mod/fbrowser.php:134 mod/follow.php:145 mod/photos.php:1028
#: mod/fbrowser.php:134 mod/follow.php:144 mod/photos.php:1028
#: mod/photos.php:1134 mod/tagrm.php:37 mod/tagrm.php:129 mod/unfollow.php:97
#: src/Module/Contact.php:422 src/Module/RemoteFollow.php:116
msgid "Cancel"
msgstr ""
#: include/conversation.php:1168 mod/editpost.php:134
#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:450
#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:459
msgid "Message"
msgstr ""
@ -752,7 +752,7 @@ msgid "%s %s shared a new post"
msgstr ""
#: mod/api.php:30 mod/editpost.php:38 mod/events.php:236 mod/follow.php:56
#: mod/follow.php:131 mod/item.php:184 mod/item.php:189 mod/item.php:934
#: mod/follow.php:130 mod/item.php:184 mod/item.php:189 mod/item.php:934
#: mod/message.php:69 mod/message.php:111 mod/notes.php:44
#: mod/ostatus_subscribe.php:32 mod/photos.php:163 mod/photos.php:917
#: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:57
@ -796,10 +796,11 @@ msgstr ""
#: mod/cal.php:61 mod/cal.php:78 mod/photos.php:69 mod/photos.php:143
#: mod/photos.php:824 mod/videos.php:49 mod/videos.php:70 mod/videos.php:111
#: src/Module/HCard.php:54 src/Module/Profile/Common.php:41
#: src/Module/Profile/Common.php:52 src/Module/Profile/Contacts.php:40
#: src/Module/Profile/Contacts.php:50 src/Module/Profile/Status.php:58
#: src/Module/Register.php:254 src/Module/RemoteFollow.php:49
#: src/Model/Profile.php:228 src/Module/HCard.php:52
#: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52
#: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50
#: src/Module/Profile/Status.php:58 src/Module/Register.php:254
#: src/Module/RemoteFollow.php:49
msgid "User not found."
msgstr ""
@ -851,7 +852,7 @@ msgstr ""
msgid "list"
msgstr ""
#: mod/cal.php:274 src/Console/User.php:182 src/Model/User.php:674
#: mod/cal.php:274 src/Console/User.php:182 src/Model/User.php:680
#: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
#: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
#: src/Module/Api/Twitter/ContactEndpoint.php:71
@ -960,7 +961,7 @@ msgstr ""
#: src/Module/Admin/Blocklist/Server.php:80
#: src/Module/Admin/Blocklist/Server.php:99
#: src/Module/Admin/Blocklist/Server.php:100
#: src/Module/Admin/Item/Delete.php:70 src/Module/Debug/Probe.php:60
#: src/Module/Admin/Item/Delete.php:70 src/Module/Debug/Probe.php:61
#: src/Module/Install.php:200 src/Module/Install.php:233
#: src/Module/Install.php:238 src/Module/Install.php:257
#: src/Module/Install.php:268 src/Module/Install.php:273
@ -992,7 +993,7 @@ msgstr ""
#: mod/events.php:568 src/Content/Widget/VCard.php:98 src/Model/Event.php:86
#: src/Model/Event.php:113 src/Model/Event.php:483 src/Model/Event.php:969
#: src/Model/Profile.php:358 src/Module/Contact.php:607
#: src/Model/Profile.php:367 src/Module/Contact.php:607
#: src/Module/Directory.php:150 src/Module/Notifications/Introductions.php:166
#: src/Module/Profile/Profile.php:194
msgid "Location:"
@ -1013,7 +1014,7 @@ msgstr ""
#: src/Module/Contact/Advanced.php:133 src/Module/Contact/Poke.php:158
#: src/Module/Debug/ActivityPubConversion.php:141
#: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
#: src/Module/Debug/Probe.php:55 src/Module/Debug/WebFinger.php:53
#: src/Module/Debug/Probe.php:56 src/Module/Debug/WebFinger.php:53
#: src/Module/Delegation.php:153 src/Module/FriendSuggest.php:129
#: src/Module/Install.php:245 src/Module/Install.php:287
#: src/Module/Install.php:324 src/Module/Invite.php:177
@ -1051,62 +1052,62 @@ msgstr ""
msgid "Files"
msgstr ""
#: mod/follow.php:75 mod/unfollow.php:96 src/Module/RemoteFollow.php:115
#: mod/follow.php:74 mod/unfollow.php:96 src/Module/RemoteFollow.php:115
msgid "Submit Request"
msgstr ""
#: mod/follow.php:85
#: mod/follow.php:84
msgid "You already added this contact."
msgstr ""
#: mod/follow.php:101
#: mod/follow.php:100
msgid "The network type couldn't be detected. Contact can't be added."
msgstr ""
#: mod/follow.php:109
#: mod/follow.php:108
msgid "Diaspora support isn't enabled. Contact can't be added."
msgstr ""
#: mod/follow.php:114
#: mod/follow.php:113
msgid "OStatus support is disabled. Contact can't be added."
msgstr ""
#: mod/follow.php:140 src/Module/RemoteFollow.php:114
#: mod/follow.php:139 src/Module/RemoteFollow.php:114
msgid "Please answer the following:"
msgstr ""
#: mod/follow.php:141 mod/unfollow.php:94
#: mod/follow.php:140 mod/unfollow.php:94
msgid "Your Identity Address:"
msgstr ""
#: mod/follow.php:142 mod/unfollow.php:100
#: mod/follow.php:141 mod/unfollow.php:100
#: src/Module/Admin/Blocklist/Contact.php:100 src/Module/Contact.php:603
#: src/Module/Notifications/Introductions.php:108
#: src/Module/Notifications/Introductions.php:177
msgid "Profile URL"
msgstr ""
#: mod/follow.php:143 src/Module/Contact.php:615
#: mod/follow.php:142 src/Module/Contact.php:615
#: src/Module/Notifications/Introductions.php:170
#: src/Module/Profile/Profile.php:207
msgid "Tags:"
msgstr ""
#: mod/follow.php:154
#: mod/follow.php:153
#, php-format
msgid "%s knows you"
msgstr ""
#: mod/follow.php:155
#: mod/follow.php:154
msgid "Add a personal note:"
msgstr ""
#: mod/follow.php:164 mod/unfollow.php:109 src/Module/BaseProfile.php:59
#: mod/follow.php:163 mod/unfollow.php:109 src/Module/BaseProfile.php:59
#: src/Module/Contact.php:894
msgid "Status Messages and Posts"
msgstr ""
#: mod/follow.php:192
#: mod/follow.php:191
msgid "The contact could not be added."
msgstr ""
@ -2653,7 +2654,7 @@ msgstr ""
msgid "File upload failed."
msgstr ""
#: mod/wall_upload.php:233 src/Model/Photo.php:1013
#: mod/wall_upload.php:233 src/Model/Photo.php:1014
msgid "Wall Photos"
msgstr ""
@ -3330,39 +3331,39 @@ msgstr ""
msgid "last"
msgstr ""
#: src/Content/Text/BBCode.php:979 src/Content/Text/BBCode.php:1767
#: src/Content/Text/BBCode.php:1768
#: src/Content/Text/BBCode.php:980 src/Content/Text/BBCode.php:1768
#: src/Content/Text/BBCode.php:1769
msgid "Image/photo"
msgstr ""
#: src/Content/Text/BBCode.php:1152
#: src/Content/Text/BBCode.php:1153
#, php-format
msgid ""
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
msgstr ""
#: src/Content/Text/BBCode.php:1177 src/Model/Item.php:3139
#: src/Content/Text/BBCode.php:1178 src/Model/Item.php:3139
#: src/Model/Item.php:3145 src/Model/Item.php:3146
msgid "Link to source"
msgstr ""
#: src/Content/Text/BBCode.php:1685 src/Content/Text/HTML.php:943
#: src/Content/Text/BBCode.php:1686 src/Content/Text/HTML.php:943
msgid "Click to open/close"
msgstr ""
#: src/Content/Text/BBCode.php:1716
#: src/Content/Text/BBCode.php:1717
msgid "$1 wrote:"
msgstr ""
#: src/Content/Text/BBCode.php:1772 src/Content/Text/BBCode.php:1773
#: src/Content/Text/BBCode.php:1773 src/Content/Text/BBCode.php:1774
msgid "Encrypted content"
msgstr ""
#: src/Content/Text/BBCode.php:1989
#: src/Content/Text/BBCode.php:1990
msgid "Invalid source protocol"
msgstr ""
#: src/Content/Text/BBCode.php:2004
#: src/Content/Text/BBCode.php:2005
msgid "Invalid link protocol"
msgstr ""
@ -3375,7 +3376,7 @@ msgid "The end"
msgstr ""
#: src/Content/Text/HTML.php:885 src/Content/Widget/VCard.php:103
#: src/Model/Profile.php:444
#: src/Model/Profile.php:453
msgid "Follow"
msgstr ""
@ -3551,22 +3552,22 @@ msgstr[1] ""
msgid "More Trending Tags"
msgstr ""
#: src/Content/Widget/VCard.php:96 src/Model/Profile.php:363
#: src/Content/Widget/VCard.php:96 src/Model/Profile.php:372
#: src/Module/Contact.php:609 src/Module/Profile/Profile.php:176
msgid "XMPP:"
msgstr ""
#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:364
#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:373
#: src/Module/Contact.php:611 src/Module/Profile/Profile.php:180
msgid "Matrix:"
msgstr ""
#: src/Content/Widget/VCard.php:101 src/Model/Profile.php:456
#: src/Content/Widget/VCard.php:101 src/Model/Profile.php:465
#: src/Module/Notifications/Introductions.php:180
msgid "Network:"
msgstr ""
#: src/Content/Widget/VCard.php:105 src/Model/Profile.php:446
#: src/Content/Widget/VCard.php:105 src/Model/Profile.php:455
msgid "Unfollow"
msgstr ""
@ -4695,62 +4696,62 @@ msgstr ""
msgid "%1$s shared a post"
msgstr ""
#: src/Model/Profile.php:346 src/Module/Profile/Profile.php:256
#: src/Model/Profile.php:355 src/Module/Profile/Profile.php:256
#: src/Module/Profile/Profile.php:258
msgid "Edit profile"
msgstr ""
#: src/Model/Profile.php:348
#: src/Model/Profile.php:357
msgid "Change profile photo"
msgstr ""
#: src/Model/Profile.php:361 src/Module/Directory.php:155
#: src/Model/Profile.php:370 src/Module/Directory.php:155
#: src/Module/Profile/Profile.php:184
msgid "Homepage:"
msgstr ""
#: src/Model/Profile.php:362 src/Module/Contact.php:613
#: src/Model/Profile.php:371 src/Module/Contact.php:613
#: src/Module/Notifications/Introductions.php:168
msgid "About:"
msgstr ""
#: src/Model/Profile.php:448
#: src/Model/Profile.php:457
msgid "Atom feed"
msgstr ""
#: src/Model/Profile.php:486 src/Model/Profile.php:583
#: src/Model/Profile.php:495 src/Model/Profile.php:592
msgid "g A l F d"
msgstr ""
#: src/Model/Profile.php:487
#: src/Model/Profile.php:496
msgid "F d"
msgstr ""
#: src/Model/Profile.php:549 src/Model/Profile.php:634
#: src/Model/Profile.php:558 src/Model/Profile.php:643
msgid "[today]"
msgstr ""
#: src/Model/Profile.php:559
#: src/Model/Profile.php:568
msgid "Birthday Reminders"
msgstr ""
#: src/Model/Profile.php:560
#: src/Model/Profile.php:569
msgid "Birthdays this week:"
msgstr ""
#: src/Model/Profile.php:621
#: src/Model/Profile.php:630
msgid "[No description]"
msgstr ""
#: src/Model/Profile.php:647
#: src/Model/Profile.php:656
msgid "Event Reminders"
msgstr ""
#: src/Model/Profile.php:648
#: src/Model/Profile.php:657
msgid "Upcoming events the next 7 days:"
msgstr ""
#: src/Model/Profile.php:836
#: src/Model/Profile.php:845
#, php-format
msgid "OpenWebAuth: %1$s welcomes %2$s"
msgstr ""
@ -4769,138 +4770,138 @@ msgstr ""
msgid "Enter a valid existing folder"
msgstr ""
#: src/Model/User.php:202 src/Model/User.php:998
#: src/Model/User.php:208 src/Model/User.php:1004
msgid "SERIOUS ERROR: Generation of security keys failed."
msgstr ""
#: src/Model/User.php:583 src/Model/User.php:616
#: src/Model/User.php:589 src/Model/User.php:622
msgid "Login failed"
msgstr ""
#: src/Model/User.php:648
#: src/Model/User.php:654
msgid "Not enough information to authenticate"
msgstr ""
#: src/Model/User.php:743
#: src/Model/User.php:749
msgid "Password can't be empty"
msgstr ""
#: src/Model/User.php:762
#: src/Model/User.php:768
msgid "Empty passwords are not allowed."
msgstr ""
#: src/Model/User.php:766
#: src/Model/User.php:772
msgid ""
"The new password has been exposed in a public data dump, please choose "
"another."
msgstr ""
#: src/Model/User.php:772
#: src/Model/User.php:778
msgid ""
"The password can't contain accentuated letters, white spaces or colons (:)"
msgstr ""
#: src/Model/User.php:878
#: src/Model/User.php:884
msgid "Passwords do not match. Password unchanged."
msgstr ""
#: src/Model/User.php:885
#: src/Model/User.php:891
msgid "An invitation is required."
msgstr ""
#: src/Model/User.php:889
#: src/Model/User.php:895
msgid "Invitation could not be verified."
msgstr ""
#: src/Model/User.php:897
#: src/Model/User.php:903
msgid "Invalid OpenID url"
msgstr ""
#: src/Model/User.php:910 src/Security/Authentication.php:223
#: src/Model/User.php:916 src/Security/Authentication.php:223
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
msgstr ""
#: src/Model/User.php:910 src/Security/Authentication.php:223
#: src/Model/User.php:916 src/Security/Authentication.php:223
msgid "The error message was:"
msgstr ""
#: src/Model/User.php:916
#: src/Model/User.php:922
msgid "Please enter the required information."
msgstr ""
#: src/Model/User.php:930
#: src/Model/User.php:936
#, php-format
msgid ""
"system.username_min_length (%s) and system.username_max_length (%s) are "
"excluding each other, swapping values."
msgstr ""
#: src/Model/User.php:937
#: src/Model/User.php:943
#, php-format
msgid "Username should be at least %s character."
msgid_plural "Username should be at least %s characters."
msgstr[0] ""
msgstr[1] ""
#: src/Model/User.php:941
#: src/Model/User.php:947
#, php-format
msgid "Username should be at most %s character."
msgid_plural "Username should be at most %s characters."
msgstr[0] ""
msgstr[1] ""
#: src/Model/User.php:949
#: src/Model/User.php:955
msgid "That doesn't appear to be your full (First Last) name."
msgstr ""
#: src/Model/User.php:954
#: src/Model/User.php:960
msgid "Your email domain is not among those allowed on this site."
msgstr ""
#: src/Model/User.php:958
#: src/Model/User.php:964
msgid "Not a valid email address."
msgstr ""
#: src/Model/User.php:961
#: src/Model/User.php:967
msgid "The nickname was blocked from registration by the nodes admin."
msgstr ""
#: src/Model/User.php:965 src/Model/User.php:973
#: src/Model/User.php:971 src/Model/User.php:979
msgid "Cannot use that email."
msgstr ""
#: src/Model/User.php:980
#: src/Model/User.php:986
msgid "Your nickname can only contain a-z, 0-9 and _."
msgstr ""
#: src/Model/User.php:988 src/Model/User.php:1045
#: src/Model/User.php:994 src/Model/User.php:1051
msgid "Nickname is already registered. Please choose another."
msgstr ""
#: src/Model/User.php:1032 src/Model/User.php:1036
#: src/Model/User.php:1038 src/Model/User.php:1042
msgid "An error occurred during registration. Please try again."
msgstr ""
#: src/Model/User.php:1059
#: src/Model/User.php:1065
msgid "An error occurred creating your default profile. Please try again."
msgstr ""
#: src/Model/User.php:1066
#: src/Model/User.php:1072
msgid "An error occurred creating your self contact. Please try again."
msgstr ""
#: src/Model/User.php:1071
#: src/Model/User.php:1077
msgid "Friends"
msgstr ""
#: src/Model/User.php:1075
#: src/Model/User.php:1081
msgid ""
"An error occurred creating your default contact group. Please try again."
msgstr ""
#: src/Model/User.php:1304
#: src/Model/User.php:1310
#, php-format
msgid ""
"\n"
@ -4908,7 +4909,7 @@ msgid ""
"\t\t\tthe administrator of %2$s has set up an account for you."
msgstr ""
#: src/Model/User.php:1307
#: src/Model/User.php:1313
#, php-format
msgid ""
"\n"
@ -4945,12 +4946,12 @@ msgid ""
"\t\tThank you and welcome to %4$s."
msgstr ""
#: src/Model/User.php:1340 src/Model/User.php:1447
#: src/Model/User.php:1346 src/Model/User.php:1453
#, php-format
msgid "Registration details for %s"
msgstr ""
#: src/Model/User.php:1360
#: src/Model/User.php:1366
#, php-format
msgid ""
"\n"
@ -4966,12 +4967,12 @@ msgid ""
"\t\t"
msgstr ""
#: src/Model/User.php:1379
#: src/Model/User.php:1385
#, php-format
msgid "Registration at %s"
msgstr ""
#: src/Model/User.php:1403
#: src/Model/User.php:1409
#, php-format
msgid ""
"\n"
@ -4980,7 +4981,7 @@ msgid ""
"\t\t\t"
msgstr ""
#: src/Model/User.php:1411
#: src/Model/User.php:1417
#, php-format
msgid ""
"\n"
@ -8074,15 +8075,15 @@ msgstr ""
msgid "Only logged in users are permitted to perform a probing."
msgstr ""
#: src/Module/Debug/Probe.php:53
#: src/Module/Debug/Probe.php:54
msgid "Probe Diagnostic"
msgstr ""
#: src/Module/Debug/Probe.php:54
#: src/Module/Debug/Probe.php:55
msgid "Output"
msgstr ""
#: src/Module/Debug/Probe.php:57
#: src/Module/Debug/Probe.php:58
msgid "Lookup address"
msgstr ""
@ -8288,7 +8289,7 @@ msgstr ""
msgid "Add contact to group"
msgstr ""
#: src/Module/HCard.php:48
#: src/Module/HCard.php:46
msgid "No profile"
msgstr ""
@ -8827,19 +8828,19 @@ msgstr ""
#: src/Module/Profile/Profile.php:326 src/Module/Profile/Profile.php:329
#: src/Module/Profile/Status.php:65 src/Module/Profile/Status.php:68
#: src/Protocol/Feed.php:946 src/Protocol/OStatus.php:1256
#: src/Protocol/Feed.php:951 src/Protocol/OStatus.php:1259
#, php-format
msgid "%s's timeline"
msgstr ""
#: src/Module/Profile/Profile.php:327 src/Module/Profile/Status.php:66
#: src/Protocol/Feed.php:950 src/Protocol/OStatus.php:1260
#: src/Protocol/Feed.php:955 src/Protocol/OStatus.php:1263
#, php-format
msgid "%s's posts"
msgstr ""
#: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:67
#: src/Protocol/Feed.php:953 src/Protocol/OStatus.php:1263
#: src/Protocol/Feed.php:958 src/Protocol/OStatus.php:1266
#, php-format
msgid "%s's comments"
msgstr ""
@ -10387,21 +10388,21 @@ msgstr ""
msgid "Attachments:"
msgstr ""
#: src/Protocol/OStatus.php:1758
#: src/Protocol/OStatus.php:1761
#, php-format
msgid "%s is now following %s."
msgstr ""
#: src/Protocol/OStatus.php:1759
#: src/Protocol/OStatus.php:1762
msgid "following"
msgstr ""
#: src/Protocol/OStatus.php:1762
#: src/Protocol/OStatus.php:1765
#, php-format
msgid "%s stopped following %s."
msgstr ""
#: src/Protocol/OStatus.php:1763
#: src/Protocol/OStatus.php:1766
msgid "stopped following"
msgstr ""