Update Mastodon API with new profile field entity
This commit is contained in:
parent
07a4bb73fa
commit
608e634858
3 changed files with 35 additions and 6 deletions
|
@ -4,26 +4,35 @@ namespace Friendica\Factory\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
use Friendica\App\BaseURL;
|
||||||
use Friendica\BaseFactory;
|
use Friendica\BaseFactory;
|
||||||
|
use Friendica\Collection\Api\Mastodon\Fields;
|
||||||
use Friendica\Model\APContact;
|
use Friendica\Model\APContact;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
use Friendica\Network\HTTPException;
|
use Friendica\Network\HTTPException;
|
||||||
|
use Friendica\Repository\PermissionSet;
|
||||||
|
use Friendica\Repository\ProfileField;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
class Account extends BaseFactory
|
class Account extends BaseFactory
|
||||||
{
|
{
|
||||||
/** @var BaseURL */
|
/** @var BaseURL */
|
||||||
protected $baseUrl;
|
protected $baseUrl;
|
||||||
|
/** @var ProfileField */
|
||||||
|
protected $profileField;
|
||||||
|
/** @var Field */
|
||||||
|
protected $mstdnField;
|
||||||
|
|
||||||
public function __construct(LoggerInterface $logger, BaseURL $baseURL)
|
public function __construct(LoggerInterface $logger, BaseURL $baseURL, ProfileField $profileField, Field $mstdnField)
|
||||||
{
|
{
|
||||||
parent::__construct($logger);
|
parent::__construct($logger);
|
||||||
|
|
||||||
$this->baseUrl = $baseURL;
|
$this->baseUrl = $baseURL;
|
||||||
|
$this->profileField = $profileField;
|
||||||
|
$this->mstdnField = $mstdnField;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $contactId
|
* @param int $contactId
|
||||||
* @param int $uid User Id
|
* @param int $uid Public contact (=0) or owner user id
|
||||||
* @return \Friendica\Object\Api\Mastodon\Account
|
* @return \Friendica\Object\Api\Mastodon\Account
|
||||||
* @throws HTTPException\InternalServerErrorException
|
* @throws HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
|
@ -41,6 +50,24 @@ class Account extends BaseFactory
|
||||||
|
|
||||||
$apcontact = APContact::getByURL($publicContact['url'], false);
|
$apcontact = APContact::getByURL($publicContact['url'], false);
|
||||||
|
|
||||||
return new \Friendica\Object\Api\Mastodon\Account($this->baseUrl, $publicContact, $apcontact, $userContact);
|
return new \Friendica\Object\Api\Mastodon\Account($this->baseUrl, $publicContact, new Fields(), $apcontact, $userContact);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $userId
|
||||||
|
* @return \Friendica\Object\Api\Mastodon\Account
|
||||||
|
* @throws HTTPException\InternalServerErrorException
|
||||||
|
* @throws \ImagickException
|
||||||
|
*/
|
||||||
|
public function createFromUserId(int $userId)
|
||||||
|
{
|
||||||
|
$publicContact = Contact::selectFirst([], ['uid' => $userId, 'self' => true]);
|
||||||
|
|
||||||
|
$profileFields = $this->profileField->select(['uid' => $userId, 'psid' => PermissionSet::PUBLIC]);
|
||||||
|
$fields = $this->mstdnField->createFromProfileFields($profileFields);
|
||||||
|
|
||||||
|
$apcontact = APContact::getByURL($publicContact['url'], false);
|
||||||
|
|
||||||
|
return new \Friendica\Object\Api\Mastodon\Account($this->baseUrl, $publicContact, $fields, $apcontact);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
use Friendica\App\BaseURL;
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseEntity;
|
||||||
|
use Friendica\Collection\Api\Mastodon\Fields;
|
||||||
use Friendica\Content\Text\BBCode;
|
use Friendica\Content\Text\BBCode;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
@ -70,7 +71,7 @@ class Account extends BaseEntity
|
||||||
* @param array $userContact Optional full contact table record with uid != 0
|
* @param array $userContact Optional full contact table record with uid != 0
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public function __construct(BaseURL $baseUrl, array $publicContact, array $apcontact = [], array $userContact = [])
|
public function __construct(BaseURL $baseUrl, array $publicContact, Fields $fields, array $apcontact = [], array $userContact = [])
|
||||||
{
|
{
|
||||||
$this->id = $publicContact['id'];
|
$this->id = $publicContact['id'];
|
||||||
$this->username = $publicContact['nick'];
|
$this->username = $publicContact['nick'];
|
||||||
|
@ -94,7 +95,7 @@ class Account extends BaseEntity
|
||||||
// No custom emojis per account in Friendica
|
// No custom emojis per account in Friendica
|
||||||
$this->emojis = [];
|
$this->emojis = [];
|
||||||
// No metadata fields in Friendica
|
// No metadata fields in Friendica
|
||||||
$this->fields = [];
|
$this->fields = $fields->getArrayCopy();
|
||||||
$this->bot = ($publicContact['contact-type'] == Contact::TYPE_NEWS);
|
$this->bot = ($publicContact['contact-type'] == Contact::TYPE_NEWS);
|
||||||
$this->group = ($publicContact['contact-type'] == Contact::TYPE_COMMUNITY);
|
$this->group = ($publicContact['contact-type'] == Contact::TYPE_COMMUNITY);
|
||||||
$this->discoverable = !$publicContact['unsearchable'];
|
$this->discoverable = !$publicContact['unsearchable'];
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
use Friendica\App\BaseURL;
|
||||||
|
use Friendica\Collection\Api\Mastodon\Fields;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Virtual entity to separate Accounts from Follow Requests.
|
* Virtual entity to separate Accounts from Follow Requests.
|
||||||
|
@ -24,7 +25,7 @@ class FollowRequest extends Account
|
||||||
*/
|
*/
|
||||||
public function __construct(BaseURL $baseUrl, int $introduction_id, array $publicContact, array $apcontact = [], array $userContact = [])
|
public function __construct(BaseURL $baseUrl, int $introduction_id, array $publicContact, array $apcontact = [], array $userContact = [])
|
||||||
{
|
{
|
||||||
parent::__construct($baseUrl, $publicContact, $apcontact, $userContact);
|
parent::__construct($baseUrl, $publicContact, new Fields(), $apcontact, $userContact);
|
||||||
|
|
||||||
$this->id = $introduction_id;
|
$this->id = $introduction_id;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue