From: Hypolite Petovan Date: Tue, 28 Jan 2020 01:01:32 +0000 (-0500) Subject: Move Mastodon API entities to src/Object X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=0de8e4db080b5739d77d6394eb5c2904e5d1b66f;p=friendica.git Move Mastodon API entities to src/Object --- diff --git a/src/Api/BaseEntity.php b/src/Api/BaseEntity.php deleted file mode 100644 index 4bc15943df..0000000000 --- a/src/Api/BaseEntity.php +++ /dev/null @@ -1,18 +0,0 @@ -id = $publicContact['id']; - $this->username = $publicContact['nick']; - $this->acct = - strpos($publicContact['url'], $baseUrl->get() . '/') === 0 ? - $publicContact['nick'] : - $publicContact['addr']; - $this->display_name = $publicContact['name']; - $this->locked = !empty($apcontact['manually-approve']); - $this->created_at = DateTimeFormat::utc($publicContact['created'], DateTimeFormat::ATOM); - $this->followers_count = $apcontact['followers_count'] ?? 0; - $this->following_count = $apcontact['following_count'] ?? 0; - $this->statuses_count = $apcontact['statuses_count'] ?? 0; - $this->note = BBCode::convert($publicContact['about'], false); - $this->url = $publicContact['url']; - $this->avatar = $userContact['avatar'] ?? $publicContact['avatar']; - $this->avatar_static = $userContact['avatar'] ?? $publicContact['avatar']; - // No header picture in Friendica - $this->header = ''; - $this->header_static = ''; - // No custom emojis per account in Friendica - $this->emojis = []; - // No metadata fields in Friendica - $this->fields = []; - $this->bot = ($publicContact['contact-type'] == Contact::TYPE_NEWS); - $this->group = ($publicContact['contact-type'] == Contact::TYPE_COMMUNITY); - $this->discoverable = !$publicContact['unsearchable']; - - $publicContactLastItem = $publicContact['last-item'] ?: DBA::NULL_DATETIME; - $userContactLastItem = $userContact['last-item'] ?? DBA::NULL_DATETIME; - - $lastItem = $userContactLastItem > $publicContactLastItem ? $userContactLastItem : $publicContactLastItem; - $this->last_status_at = $lastItem != DBA::NULL_DATETIME ? DateTimeFormat::utc($lastItem, DateTimeFormat::ATOM) : null; - } -} diff --git a/src/Api/Entity/Mastodon/Emoji.php b/src/Api/Entity/Mastodon/Emoji.php deleted file mode 100644 index f3dbfa5e7d..0000000000 --- a/src/Api/Entity/Mastodon/Emoji.php +++ /dev/null @@ -1,22 +0,0 @@ -id = $introduction_id; - } -} diff --git a/src/Api/Entity/Mastodon/Instance.php b/src/Api/Entity/Mastodon/Instance.php deleted file mode 100644 index b122f78359..0000000000 --- a/src/Api/Entity/Mastodon/Instance.php +++ /dev/null @@ -1,84 +0,0 @@ -get('config', 'register_policy')); - - $baseUrl = DI::baseUrl(); - - $instance = new Instance(); - $instance->uri = $baseUrl->get(); - $instance->title = DI::config()->get('config', 'sitename'); - $instance->description = DI::config()->get('config', 'info'); - $instance->email = DI::config()->get('config', 'admin_email'); - $instance->version = FRIENDICA_VERSION; - $instance->urls = []; // Not supported - $instance->stats = Stats::get(); - $instance->thumbnail = $baseUrl->get() . (DI::config()->get('system', 'shortcut_icon') ?? 'images/friendica-32.png'); - $instance->languages = [DI::config()->get('system', 'language')]; - $instance->max_toot_chars = (int)DI::config()->get('config', 'api_import_size', DI::config()->get('config', 'max_import_size')); - $instance->registrations = ($register_policy != Register::CLOSED); - $instance->approval_required = ($register_policy == Register::APPROVE); - $instance->contact_account = []; - - if (!empty(DI::config()->get('config', 'admin_email'))) { - $adminList = explode(',', str_replace(' ', '', DI::config()->get('config', 'admin_email'))); - $administrator = User::getByEmail($adminList[0], ['nickname']); - if (!empty($administrator)) { - $adminContact = DBA::selectFirst('contact', ['id'], ['nick' => $administrator['nickname'], 'self' => true]); - $instance->contact_account = DI::mstdnAccount()->createFromContactId($adminContact['id']); - } - } - - return $instance; - } -} diff --git a/src/Api/Entity/Mastodon/Relationship.php b/src/Api/Entity/Mastodon/Relationship.php deleted file mode 100644 index 44a7d70c40..0000000000 --- a/src/Api/Entity/Mastodon/Relationship.php +++ /dev/null @@ -1,60 +0,0 @@ -id = $userContactId; - $this->following = in_array($userContact['rel'] ?? 0, [Contact::SHARING, Contact::FRIEND]); - $this->followed_by = in_array($userContact['rel'] ?? 0, [Contact::FOLLOWER, Contact::FRIEND]); - $this->blocking = (bool)$userContact['blocked'] ?? false; - $this->muting = (bool)$userContact['readonly'] ?? false; - $this->muting_notifications = (bool)$userContact['readonly'] ?? false; - $this->requested = (bool)$userContact['pending'] ?? false; - $this->domain_blocking = Network::isUrlBlocked($userContact['url'] ?? ''); - - return $this; - } -} diff --git a/src/Api/Entity/Mastodon/Stats.php b/src/Api/Entity/Mastodon/Stats.php deleted file mode 100644 index 16c9893a3b..0000000000 --- a/src/Api/Entity/Mastodon/Stats.php +++ /dev/null @@ -1,39 +0,0 @@ -get('system', 'nodeinfo'))) { - $stats->user_count = intval(DI::config()->get('nodeinfo', 'total_users')); - $stats->status_count = DI::config()->get('nodeinfo', 'local_posts') + DI::config()->get('nodeinfo', 'local_comments'); - $stats->domain_count = DBA::count('gserver', ["`network` in (?, ?) AND `last_contact` >= `last_failure`", Protocol::DFRN, Protocol::ACTIVITYPUB]); - } - return $stats; - } -} diff --git a/src/BaseEntity.php b/src/BaseEntity.php new file mode 100644 index 0000000000..9f0cb31f8e --- /dev/null +++ b/src/BaseEntity.php @@ -0,0 +1,18 @@ +baseUrl, $publicContact, $apcontact, $userContact); + return new \Friendica\Object\Api\Mastodon\Account($this->baseUrl, $publicContact, $apcontact, $userContact); } } diff --git a/src/Factory/Mastodon/FollowRequest.php b/src/Factory/Mastodon/FollowRequest.php index bbaa3135c9..3aabe413d6 100644 --- a/src/Factory/Mastodon/FollowRequest.php +++ b/src/Factory/Mastodon/FollowRequest.php @@ -24,7 +24,7 @@ class FollowRequest extends BaseFactory /** * @param Introduction $introduction - * @return \Friendica\Api\Entity\Mastodon\FollowRequest + * @return \Friendica\Object\Api\Mastodon\FollowRequest * @throws HTTPException\InternalServerErrorException * @throws \ImagickException */ @@ -42,6 +42,6 @@ class FollowRequest extends BaseFactory $apcontact = APContact::getByURL($publicContact['url'], false); - return new \Friendica\Api\Entity\Mastodon\FollowRequest($this->baseUrl, $introduction->id, $publicContact, $apcontact, $userContact); + return new \Friendica\Object\Api\Mastodon\FollowRequest($this->baseUrl, $introduction->id, $publicContact, $apcontact, $userContact); } } diff --git a/src/Factory/Mastodon/Relationship.php b/src/Factory/Mastodon/Relationship.php index 25c9d4c8ce..7a8b216d4e 100644 --- a/src/Factory/Mastodon/Relationship.php +++ b/src/Factory/Mastodon/Relationship.php @@ -2,7 +2,7 @@ namespace Friendica\Factory\Mastodon; -use Friendica\Api\Entity\Mastodon\Relationship as RelationshipEntity; +use Friendica\Object\Api\Mastodon\Relationship as RelationshipEntity; use Friendica\BaseFactory; use Friendica\Model\Contact; diff --git a/src/Module/Api/Mastodon/FollowRequests.php b/src/Module/Api/Mastodon/FollowRequests.php index fc384f7979..79fe487834 100644 --- a/src/Module/Api/Mastodon/FollowRequests.php +++ b/src/Module/Api/Mastodon/FollowRequests.php @@ -2,8 +2,8 @@ namespace Friendica\Module\Api\Mastodon; -use Friendica\Api\Entity\Mastodon; -use Friendica\Api\Entity\Mastodon\Relationship; +use Friendica\Object\Api\Mastodon; +use Friendica\Object\Api\Mastodon\Relationship; use Friendica\Core\System; use Friendica\DI; use Friendica\Model\Contact; diff --git a/src/Module/Api/Mastodon/Instance.php b/src/Module/Api/Mastodon/Instance.php index cc7639f460..c3d1b93ac0 100644 --- a/src/Module/Api/Mastodon/Instance.php +++ b/src/Module/Api/Mastodon/Instance.php @@ -2,7 +2,7 @@ namespace Friendica\Module\Api\Mastodon; -use Friendica\Api\Entity\Mastodon\Instance as InstanceEntity; +use Friendica\Object\Api\Mastodon\Instance as InstanceEntity; use Friendica\Core\System; use Friendica\Module\Base\Api; diff --git a/src/Object/Api/Mastodon/Account.php b/src/Object/Api/Mastodon/Account.php new file mode 100644 index 0000000000..38eefee3df --- /dev/null +++ b/src/Object/Api/Mastodon/Account.php @@ -0,0 +1,108 @@ +id = $publicContact['id']; + $this->username = $publicContact['nick']; + $this->acct = + strpos($publicContact['url'], $baseUrl->get() . '/') === 0 ? + $publicContact['nick'] : + $publicContact['addr']; + $this->display_name = $publicContact['name']; + $this->locked = !empty($apcontact['manually-approve']); + $this->created_at = DateTimeFormat::utc($publicContact['created'], DateTimeFormat::ATOM); + $this->followers_count = $apcontact['followers_count'] ?? 0; + $this->following_count = $apcontact['following_count'] ?? 0; + $this->statuses_count = $apcontact['statuses_count'] ?? 0; + $this->note = BBCode::convert($publicContact['about'], false); + $this->url = $publicContact['url']; + $this->avatar = $userContact['avatar'] ?? $publicContact['avatar']; + $this->avatar_static = $userContact['avatar'] ?? $publicContact['avatar']; + // No header picture in Friendica + $this->header = ''; + $this->header_static = ''; + // No custom emojis per account in Friendica + $this->emojis = []; + // No metadata fields in Friendica + $this->fields = []; + $this->bot = ($publicContact['contact-type'] == Contact::TYPE_NEWS); + $this->group = ($publicContact['contact-type'] == Contact::TYPE_COMMUNITY); + $this->discoverable = !$publicContact['unsearchable']; + + $publicContactLastItem = $publicContact['last-item'] ?: DBA::NULL_DATETIME; + $userContactLastItem = $userContact['last-item'] ?? DBA::NULL_DATETIME; + + $lastItem = $userContactLastItem > $publicContactLastItem ? $userContactLastItem : $publicContactLastItem; + $this->last_status_at = $lastItem != DBA::NULL_DATETIME ? DateTimeFormat::utc($lastItem, DateTimeFormat::ATOM) : null; + } +} diff --git a/src/Object/Api/Mastodon/Emoji.php b/src/Object/Api/Mastodon/Emoji.php new file mode 100644 index 0000000000..725a72a68c --- /dev/null +++ b/src/Object/Api/Mastodon/Emoji.php @@ -0,0 +1,22 @@ +id = $introduction_id; + } +} diff --git a/src/Object/Api/Mastodon/Instance.php b/src/Object/Api/Mastodon/Instance.php new file mode 100644 index 0000000000..63c8b2824f --- /dev/null +++ b/src/Object/Api/Mastodon/Instance.php @@ -0,0 +1,84 @@ +get('config', 'register_policy')); + + $baseUrl = DI::baseUrl(); + + $instance = new Instance(); + $instance->uri = $baseUrl->get(); + $instance->title = DI::config()->get('config', 'sitename'); + $instance->description = DI::config()->get('config', 'info'); + $instance->email = DI::config()->get('config', 'admin_email'); + $instance->version = FRIENDICA_VERSION; + $instance->urls = []; // Not supported + $instance->stats = Stats::get(); + $instance->thumbnail = $baseUrl->get() . (DI::config()->get('system', 'shortcut_icon') ?? 'images/friendica-32.png'); + $instance->languages = [DI::config()->get('system', 'language')]; + $instance->max_toot_chars = (int)DI::config()->get('config', 'api_import_size', DI::config()->get('config', 'max_import_size')); + $instance->registrations = ($register_policy != Register::CLOSED); + $instance->approval_required = ($register_policy == Register::APPROVE); + $instance->contact_account = []; + + if (!empty(DI::config()->get('config', 'admin_email'))) { + $adminList = explode(',', str_replace(' ', '', DI::config()->get('config', 'admin_email'))); + $administrator = User::getByEmail($adminList[0], ['nickname']); + if (!empty($administrator)) { + $adminContact = DBA::selectFirst('contact', ['id'], ['nick' => $administrator['nickname'], 'self' => true]); + $instance->contact_account = DI::mstdnAccount()->createFromContactId($adminContact['id']); + } + } + + return $instance; + } +} diff --git a/src/Object/Api/Mastodon/Relationship.php b/src/Object/Api/Mastodon/Relationship.php new file mode 100644 index 0000000000..146ad212b4 --- /dev/null +++ b/src/Object/Api/Mastodon/Relationship.php @@ -0,0 +1,60 @@ +id = $userContactId; + $this->following = in_array($userContact['rel'] ?? 0, [Contact::SHARING, Contact::FRIEND]); + $this->followed_by = in_array($userContact['rel'] ?? 0, [Contact::FOLLOWER, Contact::FRIEND]); + $this->blocking = (bool)$userContact['blocked'] ?? false; + $this->muting = (bool)$userContact['readonly'] ?? false; + $this->muting_notifications = (bool)$userContact['readonly'] ?? false; + $this->requested = (bool)$userContact['pending'] ?? false; + $this->domain_blocking = Network::isUrlBlocked($userContact['url'] ?? ''); + + return $this; + } +} diff --git a/src/Object/Api/Mastodon/Stats.php b/src/Object/Api/Mastodon/Stats.php new file mode 100644 index 0000000000..24e263685f --- /dev/null +++ b/src/Object/Api/Mastodon/Stats.php @@ -0,0 +1,39 @@ +get('system', 'nodeinfo'))) { + $stats->user_count = intval(DI::config()->get('nodeinfo', 'total_users')); + $stats->status_count = DI::config()->get('nodeinfo', 'local_posts') + DI::config()->get('nodeinfo', 'local_comments'); + $stats->domain_count = DBA::count('gserver', ["`network` in (?, ?) AND `last_contact` >= `last_failure`", Protocol::DFRN, Protocol::ACTIVITYPUB]); + } + return $stats; + } +}