diff --git a/src/Collection/Api/Mastodon/Fields.php b/src/Collection/Api/Mastodon/Fields.php new file mode 100644 index 0000000000..2bc549dd7f --- /dev/null +++ b/src/Collection/Api/Mastodon/Fields.php @@ -0,0 +1,20 @@ +totalCount = $totalCount ?? count($entities); + } +} diff --git a/src/DI.php b/src/DI.php index 65c82225d5..83351d3477 100644 --- a/src/DI.php +++ b/src/DI.php @@ -236,6 +236,14 @@ abstract class DI return self::$dice->create(Factory\Api\Mastodon\Emoji::class); } + /** + * @return Factory\Api\Mastodon\Field + */ + public static function mstdnField() + { + return self::$dice->create(Factory\Api\Mastodon\Field::class); + } + /** * @return Factory\Api\Mastodon\FollowRequest */ diff --git a/src/Factory/Api/Mastodon/Field.php b/src/Factory/Api/Mastodon/Field.php new file mode 100644 index 0000000000..10bb2690fe --- /dev/null +++ b/src/Factory/Api/Mastodon/Field.php @@ -0,0 +1,39 @@ +label, BBCode::convert($profileField->value, false, 9)); + } + + /** + * @param ProfileFields $profileFields + * @return Fields + * @throws HTTPException\InternalServerErrorException + */ + public function createFromProfileFields(ProfileFields $profileFields) + { + $fields = []; + + foreach ($profileFields as $profileField) { + $fields[] = $this->createFromProfileField($profileField); + } + + return new Fields($fields); + } +} diff --git a/src/Object/Api/Mastodon/Field.php b/src/Object/Api/Mastodon/Field.php index 07cd2e501b..a32eae04a2 100644 --- a/src/Object/Api/Mastodon/Field.php +++ b/src/Object/Api/Mastodon/Field.php @@ -7,7 +7,7 @@ use Friendica\BaseEntity; /** * Class Field * - * @see https://docs.joinmastodon.org/api/entities/#field + * @see https://docs.joinmastodon.org/entities/field/ */ class Field extends BaseEntity { @@ -17,4 +17,12 @@ class Field extends BaseEntity protected $value; /** @var string (Datetime)*/ protected $verified_at; + + public function __construct(string $name, string $value) + { + $this->name = $name; + $this->value = $value; + // Link verification unsupported + $this->verified_at = null; + } }