Replace BaseEntity with BaseDataTransferObject class for API representation classes
This commit is contained in:
parent
3e257d4266
commit
0fc5f26ff7
18 changed files with 53 additions and 49 deletions
|
@ -22,20 +22,20 @@
|
||||||
namespace Friendica;
|
namespace Friendica;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The API entity classes are meant as data transfer objects. As such, their member should be protected.
|
* These data transfer object classes are meant for API representations. As such, their members should be protected.
|
||||||
* Then the JsonSerializable interface ensures the protected members will be included in a JSON encode situation.
|
* Then the JsonSerializable interface ensures the protected members will be included in a JSON encode situation.
|
||||||
*
|
*
|
||||||
* Constructors are supposed to take as arguments the Friendica dependencies/model/collection/data it needs to
|
* Constructors are supposed to take as arguments the Friendica dependencies/model/collection/data it needs to
|
||||||
* populate the class members.
|
* populate the class members.
|
||||||
*/
|
*/
|
||||||
abstract class BaseEntity implements \JsonSerializable
|
abstract class BaseDataTransferObject implements \JsonSerializable
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns the current entity as an json array
|
* Returns the current entity as an json array
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function jsonSerialize()
|
public function jsonSerialize(): array
|
||||||
{
|
{
|
||||||
return $this->toArray();
|
return $this->toArray();
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ abstract class BaseEntity implements \JsonSerializable
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function toArray()
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
return get_object_vars($this);
|
return get_object_vars($this);
|
||||||
}
|
}
|
|
@ -31,7 +31,7 @@ use Psr\Log\LoggerInterface;
|
||||||
*
|
*
|
||||||
* @property int id
|
* @property int id
|
||||||
*/
|
*/
|
||||||
abstract class BaseModel extends BaseEntity
|
abstract class BaseModel extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var Database */
|
/** @var Database */
|
||||||
protected $dba;
|
protected $dba;
|
||||||
|
@ -67,7 +67,7 @@ abstract class BaseModel extends BaseEntity
|
||||||
$this->originalData = $data;
|
$this->originalData = $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getOriginalData()
|
public function getOriginalData(): array
|
||||||
{
|
{
|
||||||
return $this->originalData;
|
return $this->originalData;
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ abstract class BaseModel extends BaseEntity
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return BaseModel
|
* @return BaseModel
|
||||||
*/
|
*/
|
||||||
public static function createFromPrototype(BaseModel $prototype, array $data)
|
public static function createFromPrototype(BaseModel $prototype, array $data): BaseModel
|
||||||
{
|
{
|
||||||
$model = clone $prototype;
|
$model = clone $prototype;
|
||||||
$model->data = $data;
|
$model->data = $data;
|
||||||
|
@ -100,7 +100,7 @@ abstract class BaseModel extends BaseEntity
|
||||||
* @param $name
|
* @param $name
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function __isset($name)
|
public function __isset($name): bool
|
||||||
{
|
{
|
||||||
return in_array($name, array_merge(array_keys($this->data), array_keys(get_object_vars($this))));
|
return in_array($name, array_merge(array_keys($this->data), array_keys(get_object_vars($this))));
|
||||||
}
|
}
|
||||||
|
@ -126,15 +126,19 @@ abstract class BaseModel extends BaseEntity
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* * Magic setter. This allows to set model fields with the following syntax:
|
||||||
|
* - $model->field = $value (outside of class)
|
||||||
|
* - $this->field = $value (inside of class)
|
||||||
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param mixed $value
|
* @param mixed $value
|
||||||
*/
|
*/
|
||||||
public function __set($name, $value)
|
public function __set(string $name, $value)
|
||||||
{
|
{
|
||||||
$this->data[$name] = $value;
|
$this->data[$name] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toArray()
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
return $this->data;
|
return $this->data;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Friendica;
|
namespace Friendica\Object\Api\Friendica;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Content\Text\BBCode;
|
use Friendica\Content\Text\BBCode;
|
||||||
use Friendica\Content\Text\HTML;
|
use Friendica\Content\Text\HTML;
|
||||||
use Friendica\Model\Notify;
|
use Friendica\Model\Notify;
|
||||||
|
@ -33,7 +33,7 @@ use Friendica\Util\Temporal;
|
||||||
*
|
*
|
||||||
* @see https://github.com/friendica/friendica/blob/develop/doc/API-Entities.md#notification
|
* @see https://github.com/friendica/friendica/blob/develop/doc/API-Entities.md#notification
|
||||||
*/
|
*/
|
||||||
class Notification extends BaseEntity
|
class Notification extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var integer */
|
/** @var integer */
|
||||||
protected $id;
|
protected $id;
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
use Friendica\App\BaseURL;
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Collection\Api\Mastodon\Fields;
|
use Friendica\Collection\Api\Mastodon\Fields;
|
||||||
use Friendica\Content\Text\BBCode;
|
use Friendica\Content\Text\BBCode;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
|
@ -34,7 +34,7 @@ use Friendica\Util\DateTimeFormat;
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/account
|
* @see https://docs.joinmastodon.org/entities/account
|
||||||
*/
|
*/
|
||||||
class Account extends BaseEntity
|
class Account extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $id;
|
protected $id;
|
||||||
|
@ -138,7 +138,7 @@ class Account extends BaseEntity
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function toArray()
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
$account = parent::toArray();
|
$account = parent::toArray();
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Activity
|
* Class Activity
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/activity
|
* @see https://docs.joinmastodon.org/entities/activity
|
||||||
*/
|
*/
|
||||||
class Activity extends BaseEntity
|
class Activity extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string (UNIX Timestamp) */
|
/** @var string (UNIX Timestamp) */
|
||||||
protected $week;
|
protected $week;
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Application
|
* Class Application
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/application
|
* @see https://docs.joinmastodon.org/entities/application
|
||||||
*/
|
*/
|
||||||
class Application extends BaseEntity
|
class Application extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $name;
|
protected $name;
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Attachment
|
* Class Attachment
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/attachment
|
* @see https://docs.joinmastodon.org/entities/attachment
|
||||||
*/
|
*/
|
||||||
class Attachment extends BaseEntity
|
class Attachment extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $id;
|
protected $id;
|
||||||
|
@ -67,7 +67,7 @@ class Attachment extends BaseEntity
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function toArray()
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
$attachment = parent::toArray();
|
$attachment = parent::toArray();
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Card
|
* Class Card
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/card
|
* @see https://docs.joinmastodon.org/entities/card
|
||||||
*/
|
*/
|
||||||
class Card extends BaseEntity
|
class Card extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $url;
|
protected $url;
|
||||||
|
@ -67,10 +67,10 @@ class Card extends BaseEntity
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function toArray()
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
if (empty($this->url)) {
|
if (empty($this->url)) {
|
||||||
return null;
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return parent::toArray();
|
return parent::toArray();
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Emoji
|
* Class Emoji
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/emoji/
|
* @see https://docs.joinmastodon.org/entities/emoji/
|
||||||
*/
|
*/
|
||||||
class Emoji extends BaseEntity
|
class Emoji extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
//Required attributes
|
//Required attributes
|
||||||
/** @var string */
|
/** @var string */
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Error
|
* Class Error
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/error
|
* @see https://docs.joinmastodon.org/entities/error
|
||||||
*/
|
*/
|
||||||
class Error extends BaseEntity
|
class Error extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $error;
|
protected $error;
|
||||||
|
@ -53,7 +53,7 @@ class Error extends BaseEntity
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function toArray()
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
$error = parent::toArray();
|
$error = parent::toArray();
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Field
|
* Class Field
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/field/
|
* @see https://docs.joinmastodon.org/entities/field/
|
||||||
*/
|
*/
|
||||||
class Field extends BaseEntity
|
class Field extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $name;
|
protected $name;
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Model\User;
|
use Friendica\Model\User;
|
||||||
|
@ -32,7 +32,7 @@ use Friendica\Module\Register;
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/api/entities/#instance
|
* @see https://docs.joinmastodon.org/api/entities/#instance
|
||||||
*/
|
*/
|
||||||
class Instance extends BaseEntity
|
class Instance extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string (URL) */
|
/** @var string (URL) */
|
||||||
protected $uri;
|
protected $uri;
|
||||||
|
|
|
@ -22,14 +22,14 @@
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
use Friendica\App\BaseURL;
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Mention
|
* Class Mention
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/mention
|
* @see https://docs.joinmastodon.org/entities/mention
|
||||||
*/
|
*/
|
||||||
class Mention extends BaseEntity
|
class Mention extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $id;
|
protected $id;
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
use Friendica\Util\Network;
|
use Friendica\Util\Network;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ use Friendica\Util\Network;
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/api/entities/#relationship
|
* @see https://docs.joinmastodon.org/api/entities/#relationship
|
||||||
*/
|
*/
|
||||||
class Relationship extends BaseEntity
|
class Relationship extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var int */
|
/** @var int */
|
||||||
protected $id;
|
protected $id;
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
|
@ -31,7 +31,7 @@ use Friendica\DI;
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/api/entities/#stats
|
* @see https://docs.joinmastodon.org/api/entities/#stats
|
||||||
*/
|
*/
|
||||||
class Stats extends BaseEntity
|
class Stats extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var int */
|
/** @var int */
|
||||||
protected $user_count = 0;
|
protected $user_count = 0;
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Content\Text\BBCode;
|
use Friendica\Content\Text\BBCode;
|
||||||
use Friendica\Object\Api\Mastodon\Status\Counts;
|
use Friendica\Object\Api\Mastodon\Status\Counts;
|
||||||
use Friendica\Object\Api\Mastodon\Status\UserAttributes;
|
use Friendica\Object\Api\Mastodon\Status\UserAttributes;
|
||||||
|
@ -32,7 +32,7 @@ use Friendica\Util\DateTimeFormat;
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/status
|
* @see https://docs.joinmastodon.org/entities/status
|
||||||
*/
|
*/
|
||||||
class Status extends BaseEntity
|
class Status extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $id;
|
protected $id;
|
||||||
|
@ -143,7 +143,7 @@ class Status extends BaseEntity
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function toArray()
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
$status = parent::toArray();
|
$status = parent::toArray();
|
||||||
|
|
||||||
|
|
|
@ -22,14 +22,14 @@
|
||||||
namespace Friendica\Object\Api\Mastodon;
|
namespace Friendica\Object\Api\Mastodon;
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
use Friendica\App\BaseURL;
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Tag
|
* Class Tag
|
||||||
*
|
*
|
||||||
* @see https://docs.joinmastodon.org/entities/tag
|
* @see https://docs.joinmastodon.org/entities/tag
|
||||||
*/
|
*/
|
||||||
class Tag extends BaseEntity
|
class Tag extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $name;
|
protected $name;
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
namespace Friendica\Object\Api\Twitter;
|
namespace Friendica\Object\Api\Twitter;
|
||||||
|
|
||||||
use Friendica\BaseEntity;
|
use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Content\ContactSelector;
|
use Friendica\Content\ContactSelector;
|
||||||
use Friendica\Content\Text\BBCode;
|
use Friendica\Content\Text\BBCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object
|
* @see https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object
|
||||||
*/
|
*/
|
||||||
class User extends BaseEntity
|
class User extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
/** @var int */
|
/** @var int */
|
||||||
protected $id;
|
protected $id;
|
||||||
|
|
Loading…
Reference in a new issue