diff --git a/lib/models/Repository.php b/lib/models/Repository.php new file mode 100644 index 0000000..136465b --- /dev/null +++ b/lib/models/Repository.php @@ -0,0 +1,306 @@ + isset($map->clone_url) && is_string($map->clone_url) ? new Uri($map->clone_url) : null, + 'createdAt' => isset($map->created_at) && is_string($map->created_at) ? new \DateTime($map->created_at) : null, + 'defaultBranch' => isset($map->default_branch) && is_string($map->default_branch) ? $map->default_branch : '', + 'description' => isset($map->description) && is_string($map->description) ? $map->description : '', + 'forksCount' => isset($map->forks_count) && is_int($map->forks_count) ? $map->forks_count : 0, + 'fullName' => isset($map->full_name) && is_string($map->full_name) ? $map->full_name : '', + 'htmlUrl' => isset($map->html_url) && is_string($map->html_url) ? new Uri($map->html_url) : null, + 'id' => isset($map->id) && is_int($map->id) ? $map->id : -1, + 'isEmpty' => isset($map->empty) && is_bool($map->empty) ? $map->empty : false, + 'isFork' => isset($map->fork) && is_bool($map->fork) ? $map->fork : false, + 'isMirror' => isset($map->mirror) && is_bool($map->mirror) ? $map->mirror : false, + 'isPrivate' => isset($map->private) && is_bool($map->private) ? $map->private : false, + 'name' => isset($map->name) && is_string($map->name) ? $map->name : '', + 'openIssuesCount' => isset($map->open_issues_count) && is_int($map->open_issues_count) ? $map->open_issues_count : 0, + 'owner' => isset($map->owner) && is_object($map->owner) ? User::fromJson($map->owner) : null, + 'parent' => isset($map->parent) && is_object($map->parent) ? Repository::fromJson($map->parent) : null, + 'permissions' => isset($map->permissions) && is_object($map->permissions) ? Permission::fromJson($map->permissions) : null, + 'size' => isset($map->size) && is_int($map->size) ? $map->size : 0, + 'sshUrl' => isset($map->ssh_url) && is_string($map->ssh_url) ? new Uri($map->ssh_url) : null, + 'starsCount' => isset($map->stars_count) && is_int($map->stars_count) ? $map->stars_count : 0, + 'updatedAt' => isset($map->updated_at) && is_string($map->updated_at) ? new \DateTime($map->updated_at) : null, + 'watchersCount' => isset($map->watchers_count) && is_int($map->watchers_count) ? $map->watchers_count : 0, + 'website' => isset($map->website) && is_string($map->website) ? new Uri($map->website) : null, + ]); + } + + /** + * Returns the list of fields that should be returned by default. + * @return array The list of field names or field definitions. + */ + function fields(): array { + return [ + 'clone_url' => function(self $model) { return ($url = $model->getCloneUrl()) ? (string) $url : null; }, + 'created_at' => function(Repository $model) { return ($date = $model->getCreatedAt()) ? $date->format('c') : null; }, + 'default_branch' => 'defaultBranch', + 'description', + 'empty' => 'isEmpty', + 'fork' => 'isFork', + 'forks_count' => 'forksCount', + 'full_name' => 'fullName', + 'html_url' => function(self $model) { return ($url = $model->getHtmlUrl()) ? (string) $url : null; }, + 'id', + 'mirror' => 'isMirror', + 'name', + 'open_issues_count' => 'openIssuesCount', + 'owner', + 'parent', + 'permissions', + 'private' => 'isPrivate', + 'size', + 'ssh_url' => function(self $model) { return ($url = $model->getSshUrl()) ? (string) $url : null; }, + 'stars_count' => 'starsCount', + 'updated_at' => function(Repository $model) { return ($date = $model->getUpdatedAt()) ? $date->format('c') : null; }, + 'watchers_count' => 'watchersCount', + 'website' => function(self $model) { return ($url = $model->getWebsite()) ? (string) $url : null; }, + ]; + } + + /** + * Gets the HTTP-based URL for cloning this repository. + * @return UriInterface|null The HTTP-based URL for cloning this repository. + */ + function getCloneUrl(): ?UriInterface { + return $this->cloneUrl; + } + + /** + * Gets the date the repository was created. + * @return \DateTime|null The date the repository was created. + */ + function getCreatedAt(): ?\DateTime { + return $this->createdAt; + } + + /** + * Gets the Gitea URL of this repository. + * @return UriInterface|null The Gitea URL of this repository. + */ + function getHtmlUrl(): ?UriInterface { + return $this->htmlUrl; + } + + /** + * Gets the SSH-based URL for cloning this repository. + * @return UriInterface|null The SSH-based URL for cloning this repository. + */ + function getSshUrl(): ?UriInterface { + return $this->sshUrl; + } + + /** + * Gets the date the repository was updated. + * @return \DateTime|null The date the repository was updated. + */ + function getUpdatedAt(): ?\DateTime { + return $this->updatedAt; + } + + /** + * Gets the URL of the repository website. + * @return UriInterface|null The URL of the repository website. + */ + function getWebsite(): ?UriInterface { + return $this->website; + } + + /** + * Sets the HTTP-based URL for cloning this repository. + * @param UriInterface|string|null $value The new URL for cloning this repository. + * @return $this This instance. + */ + function setCloneUrl($value): self { + $this->cloneUrl = is_string($value) ? new Uri($value) : $value; + return $this; + } + + /** + * Sets the date the repository was created. + * @param \DateTime|string|null $value The new date of creation. + * @return $this This instance. + */ + function setCreatedAt($value): self { + $this->createdAt = is_string($value) ? new \DateTime($value) : $value; + return $this; + } + + /** + * Sets the Gitea URL of this repository. + * @param UriInterface|string|null $value The new Gitea URL. + * @return $this This instance. + */ + function setHtmlUrl($value): self { + $this->htmlUrl = is_string($value) ? new Uri($value) : $value; + return $this; + } + + /** + * Sets the SSH-based URL for cloning this repository. + * @param UriInterface|string|null $value The new URL for cloning this repository. + * @return $this This instance. + */ + function setSshlUrl($value): self { + $this->sshUrl = is_string($value) ? new Uri($value) : $value; + return $this; + } + + /** + * Sets the date the repository was updated. + * @param \DateTime|string|null $value The new date of update. + * @return $this This instance. + */ + function setUpdatedAt($value): self { + $this->updatedAt = is_string($value) ? new \DateTime($value) : $value; + return $this; + } + + /** + * Sets the URL of the repository website. + * @param UriInterface|string|null $value The new repository website. + * @return $this This instance. + */ + function setWebsite($value): self { + $this->website = is_string($value) ? new Uri($value) : $value; + return $this; + } +} diff --git a/lib/models/ServerVersion.php b/lib/models/ServerVersion.php new file mode 100644 index 0000000..f387723 --- /dev/null +++ b/lib/models/ServerVersion.php @@ -0,0 +1,25 @@ + isset($map->version) && is_string($map->version) ? $map->version : '' + ]); + } +} diff --git a/lib/models/StatusState.php b/lib/models/StatusState.php new file mode 100644 index 0000000..bc77d48 --- /dev/null +++ b/lib/models/StatusState.php @@ -0,0 +1,37 @@ + isset($map->description) && is_string($map->description) ? $map->description : '', + 'id' => isset($map->id) && is_int($map->id) ? $map->id : -1, + 'name' => isset($map->name) && is_string($map->name) ? $map->name : '', + 'permission' => isset($map->permission) && TeamPermission::isDefined($map->permission) ? $map->permission : TeamPermission::NONE + ]); + } +} diff --git a/lib/models/User.php b/lib/models/User.php new file mode 100644 index 0000000..4f385a3 --- /dev/null +++ b/lib/models/User.php @@ -0,0 +1,92 @@ + isset($map->avatar_url) && is_string($map->avatar_url) ? $map->avatar_url : null, + 'email' => isset($map->email) && is_string($map->email) ? mb_strtolower($map->email) : '', + 'fullName' => isset($map->full_name) && is_string($map->full_name) ? $map->full_name : '', + 'id' => isset($map->id) && is_int($map->id) ? $map->id : -1, + 'language' => isset($map->language) && is_string($map->language) ? $map->language : '', + 'login' => isset($map->login) && is_string($map->login) ? $map->login : '' + ]); + } + + /** + * Returns the list of fields that should be returned by default. + * @return array The list of field names or field definitions. + */ + function fields(): array { + return [ + 'avatar_url' => function(self $model) { return ($url = $model->getAvatarUrl()) ? (string) $url : null; }, + 'email', + 'full_name' => 'fullName', + 'id', + 'language', + 'login' + ]; + } + + /** + * Gets the URL of the avatar image. + * @return UriInterface|null The URL of the avatar image. + */ + function getAvatarUrl(): ?UriInterface { + return $this->avatarUrl; + } + + /** + * Sets the URL of the avatar image. + * @param UriInterface|string|null $value The new avatar URL. + * @return $this This instance. + */ + function setAvatarUrl($value): self { + $this->avatarUrl = is_string($value) ? new Uri($value) : $value; + return $this; + } +}