mirror of
https://github.com/sitelease/sugar-cube-client.git
synced 2025-10-31 20:12:29 +01:00
Added the payload models
This commit is contained in:
129
lib/models/PayloadCommit.php
Normal file
129
lib/models/PayloadCommit.php
Normal file
@ -0,0 +1,129 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
namespace yii\gitea\models;
|
||||
|
||||
use GuzzleHttp\Psr7\{Uri};
|
||||
use Psr\Http\Message\{UriInterface};
|
||||
use yii\base\{Model};
|
||||
|
||||
/**
|
||||
* Represents a commit.
|
||||
* @property \DateTime|null $timestamp The commit date.
|
||||
* @property UriInterface|null $url The URL to the commit's history.
|
||||
*/
|
||||
class PayloadCommit extends Model {
|
||||
|
||||
/**
|
||||
* @var PayloadUser|null The person who authored the commit.
|
||||
*/
|
||||
public $author;
|
||||
|
||||
/**
|
||||
* @var PayloadUser|null The person who committed the code.
|
||||
*/
|
||||
public $committer;
|
||||
|
||||
/**
|
||||
* @var string The commit hash.
|
||||
*/
|
||||
public $id = '';
|
||||
|
||||
/**
|
||||
* @var string The commit message.
|
||||
*/
|
||||
public $message = '';
|
||||
|
||||
/**
|
||||
* @var PayloadCommitVerification|null The GPG verification of this commit.
|
||||
*/
|
||||
public $verification;
|
||||
|
||||
/**
|
||||
* @var \DateTime|null The commit date.
|
||||
*/
|
||||
private $timestamp;
|
||||
|
||||
/**
|
||||
* @var UriInterface|null The URL to the commit's history.
|
||||
*/
|
||||
private $url;
|
||||
|
||||
/**
|
||||
* Creates a new commit from the specified JSON map.
|
||||
* @param object $map A JSON map representing a commit.
|
||||
* @return static The instance corresponding to the specified JSON map.
|
||||
*/
|
||||
static function fromJson(object $map): self {
|
||||
return new static([
|
||||
'author' => isset($map->author) && is_object($map->author) ? PayloadUser::fromJson($map->author) : null,
|
||||
'committer' => isset($map->committer) && is_object($map->committer) ? PayloadUser::fromJson($map->committer) : null,
|
||||
'id' => isset($map->id) && is_string($map->id) ? $map->id : '',
|
||||
'message' => isset($map->message) && is_string($map->message) ? $map->message : '',
|
||||
'timestamp' => isset($map->timestamp) && is_string($map->timestamp) ? $map->timestamp : null,
|
||||
'url' => isset($map->url) && is_string($map->url) ? $map->url : null,
|
||||
'verification' => isset($map->verification) && is_object($map->verification) ? PayloadCommitVerification::fromJson($map->verification) : 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 [
|
||||
'author',
|
||||
'committer',
|
||||
'id',
|
||||
'message',
|
||||
'timestamp' => function(PayloadCommit $model) { return ($date = $model->getTimestamp()) ? $date->format('c') : null; },
|
||||
'url' => function(self $model) { return ($url = $model->getUrl()) ? (string) $url : null; },
|
||||
'verification'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the commit date.
|
||||
* @return \DateTime|null The commit date.
|
||||
*/
|
||||
function getTimestamp(): ?\DateTime {
|
||||
return $this->timestamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the URL to the commit's history.
|
||||
* @return UriInterface|null The URL to the commit's history.
|
||||
*/
|
||||
function getUrl(): ?UriInterface {
|
||||
return $this->url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the validation rules for attributes.
|
||||
* @return array[] The validation rules.
|
||||
*/
|
||||
function rules(): array {
|
||||
return [
|
||||
[['id', 'message'], 'trim']
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the commit date.
|
||||
* @param \DateTime|string|null $value The new commit date.
|
||||
* @return $this This instance.
|
||||
*/
|
||||
function setTimestamp($value): self {
|
||||
$this->timestamp = is_string($value) ? new \DateTime($value) : $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the URL to the commit's history.
|
||||
* @param UriInterface|string|null $value The new commit URL.
|
||||
* @return $this This instance.
|
||||
*/
|
||||
function setUrl($value): self {
|
||||
$this->url = is_string($value) ? new Uri($value) : $value;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
69
lib/models/PayloadCommitVerification.php
Normal file
69
lib/models/PayloadCommitVerification.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
namespace yii\gitea\models;
|
||||
|
||||
use yii\base\{Model};
|
||||
|
||||
/**
|
||||
* Represents the GPG verification of a commit.
|
||||
*/
|
||||
class PayloadCommitVerification extends Model {
|
||||
|
||||
/**
|
||||
* @var bool Value indicating whether the verification has succeeded.
|
||||
*/
|
||||
public $isVerified = false;
|
||||
|
||||
/**
|
||||
* @var string A custom message sent with the verification request.
|
||||
*/
|
||||
public $payload = '';
|
||||
|
||||
/**
|
||||
* @var string A message providing details about the verification.
|
||||
*/
|
||||
public $reason = '';
|
||||
|
||||
/**
|
||||
* @var string The signing key used for the verification.
|
||||
*/
|
||||
public $signature = '';
|
||||
|
||||
/**
|
||||
* Creates a new commit from the specified JSON map.
|
||||
* @param object $map A JSON map representing a commit.
|
||||
* @return static The instance corresponding to the specified JSON map.
|
||||
*/
|
||||
static function fromJson(object $map): self {
|
||||
return new static([
|
||||
'isVerified' => isset($map->verified) && is_bool($map->verified) ? $map->verified : false,
|
||||
'payload' => isset($map->payload) && is_string($map->payload) ? $map->payload : '',
|
||||
'reason' => isset($map->reason) && is_string($map->reason) ? $map->reason : '',
|
||||
'signature' => isset($map->signature) && is_string($map->signature) ? $map->signature : ''
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 [
|
||||
'payload',
|
||||
'reason',
|
||||
'signature',
|
||||
'verified' => 'isVerified'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the validation rules for attributes.
|
||||
* @return array[] The validation rules.
|
||||
*/
|
||||
function rules(): array {
|
||||
return [
|
||||
[['payload', 'reason', 'signature'], 'trim'],
|
||||
['isVerified', 'boolean', 'falseValue' => false, 'trueValue' => true]
|
||||
];
|
||||
}
|
||||
}
|
||||
51
lib/models/PayloadUser.php
Normal file
51
lib/models/PayloadUser.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
namespace yii\gitea\models;
|
||||
|
||||
use yii\base\{Model};
|
||||
|
||||
/**
|
||||
* Represents the author or committer of a commit.
|
||||
*/
|
||||
class PayloadUser extends Model {
|
||||
|
||||
/**
|
||||
* @var string The mail address.
|
||||
*/
|
||||
public $email = '';
|
||||
|
||||
/**
|
||||
* @var string The full name.
|
||||
*/
|
||||
public $name = '';
|
||||
|
||||
/**
|
||||
* @var string The name of the Gitea account.
|
||||
*/
|
||||
public $username = '';
|
||||
|
||||
/**
|
||||
* Creates a new user from the specified JSON map.
|
||||
* @param object $map A JSON map representing a user.
|
||||
* @return static The instance corresponding to the specified JSON map.
|
||||
*/
|
||||
static function fromJson(object $map): self {
|
||||
return new static([
|
||||
'email' => isset($map->email) && is_string($map->email) ? mb_strtolower($map->email) : '',
|
||||
'name' => isset($map->name) && is_string($map->name) ? $map->name : '',
|
||||
'username' => isset($map->username) && is_string($map->username) ? $map->username : ''
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the validation rules for attributes.
|
||||
* @return array[] The validation rules.
|
||||
*/
|
||||
function rules(): array {
|
||||
return [
|
||||
[['email', 'name', 'username'], 'trim'],
|
||||
['email', 'filter', 'filter' => 'mb_strtolower'],
|
||||
['email', 'email']
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user