Merge pull request #13723 from annando/threads2

Allow longer avatar URLs / the system outbox is now handled
This commit is contained in:
Hypolite Petovan 2023-12-15 11:29:10 -05:00 committed by GitHub
commit 08eaedede1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 6 deletions

View file

@ -385,18 +385,18 @@ class APContact
}
// When the photo is too large, try to shorten it by removing parts
if (strlen($apcontact['photo'] ?? '') > 255) {
if (strlen($apcontact['photo'] ?? '') > 383) {
$parts = parse_url($apcontact['photo']);
unset($parts['fragment']);
$apcontact['photo'] = (string)Uri::fromParts((array)$parts);
if (strlen($apcontact['photo']) > 255) {
if (strlen($apcontact['photo']) > 383) {
unset($parts['query']);
$apcontact['photo'] = (string)Uri::fromParts((array)$parts);
}
if (strlen($apcontact['photo']) > 255) {
$apcontact['photo'] = substr($apcontact['photo'], 0, 255);
if (strlen($apcontact['photo']) > 383) {
$apcontact['photo'] = substr($apcontact['photo'], 0, 383);
}
}

View file

@ -82,6 +82,7 @@ class GServer
const DETECT_STATUS_PHP = 17; // Nextcloud
const DETECT_V1_CONFIG = 18;
const DETECT_SYSTEM_ACTOR = 20; // Mistpark, Osada, Roadhouse, Zap
const DETECT_THREADS = 21;
// Standardized endpoints
const DETECT_STATISTICS_JSON = 100;
@ -671,6 +672,12 @@ class GServer
return false;
}
if (in_array($url, ['https://www.threads.net', 'https://threads.net'])) {
$serverdata['detection-method'] = self::DETECT_THREADS;
$serverdata['network'] = Protocol::ACTIVITYPUB;
$serverdata['platform'] = 'threads';
}
if (($serverdata['network'] == Protocol::PHANTOM) || in_array($serverdata['detection-method'], self::DETECT_UNSPECIFIC)) {
$serverdata = self::detectMastodonAlikes($url, $serverdata);
}

View file

@ -21,7 +21,6 @@
namespace Friendica\Module\ActivityPub;
use Friendica\Core\System;
use Friendica\Model\User;
use Friendica\Module\BaseApi;
use Friendica\Protocol\ActivityPub;
@ -36,7 +35,7 @@ class Outbox extends BaseApi
protected function rawContent(array $request = [])
{
if (empty($this->parameters['nickname'])) {
throw new \Friendica\Network\HTTPException\NotFoundException();
$this->jsonExit([], 'application/activity+json');
}
$owner = User::getOwnerDataByNick($this->parameters['nickname']);

View file

@ -452,6 +452,7 @@ return [
'/following/{nickname}' => [Module\ActivityPub\Following::class, [R::GET]],
'/friendica[/{format:json}]' => [Module\Friendica::class, [R::GET]],
'/friendica/inbox' => [Module\ActivityPub\Inbox::class, [R::GET, R::POST]],
'/friendica/outbox' => [Module\ActivityPub\Outbox::class, [R::GET]],
'/fsuggest/{contact:\d+}' => [Module\FriendSuggest::class, [R::GET, R::POST]],