1
0
Fork 0
mirror of synced 2024-06-13 16:24:47 +12:00

Updated naming conventions

This commit is contained in:
Eldad Fux 2020-06-23 18:01:20 +03:00
parent 97a9497ec1
commit 2f1e25fc09
20 changed files with 321 additions and 254 deletions

View file

@ -17,6 +17,7 @@ use Appwrite\Database\Document;
use Appwrite\Database\Validator\Authorization;
use Appwrite\Event\Event;
use Appwrite\Network\Validator\Origin;
use Appwrite\Utopia\Response;
/*
* Configuration files
@ -270,7 +271,6 @@ $utopia->options(function () use ($request, $response) {
});
$utopia->error(function ($error /* @var $error Exception */) use ($request, $response, $utopia, $project) {
$env = Config::getParam('env');
$version = Config::getParam('version');
switch ($error->getCode()) {
@ -292,7 +292,7 @@ $utopia->error(function ($error /* @var $error Exception */) use ($request, $res
$_SERVER = []; // Reset before reporting to error log to avoid keys being compromised
$output = ((App::MODE_TYPE_DEVELOPMENT == $env)) ? [
$output = ($utopia->isDevelopment()) ? [
'message' => $error->getMessage(),
'code' => $error->getCode(),
'file' => $error->getFile(),
@ -337,9 +337,8 @@ $utopia->error(function ($error /* @var $error Exception */) use ($request, $res
$response->send($layout->render());
}
$response
->json($output)
;
$response->dynamic(new Document($output),
$utopia->isDevelopment() ? Response::MODEL_ERROR_DEV : Response::MODEL_LOCALE);
});
$utopia->get('/manifest.json')

View file

@ -4,7 +4,6 @@ global $utopia, $register, $request, $response, $user, $audit,
$webhook, $mail, $project, $projectDB, $clients;
use Utopia\Exception;
use Utopia\Response;
use Utopia\Config\Config;
use Utopia\Validator\Assoc;
use Utopia\Validator\Text;
@ -25,7 +24,7 @@ use Appwrite\Database\Validator\Authorization;
use Appwrite\Template\Template;
use Appwrite\OpenSSL\OpenSSL;
use Appwrite\URL\URL as URLParser;
use Appwrite\Utopia\Response as UtopiaResponse;
use Appwrite\Utopia\Response;
use DeviceDetector\DeviceDetector;
use GeoIp2\Database\Reader;
use Utopia\Validator\ArrayList;
@ -134,8 +133,8 @@ $utopia->post('/v1/account')
->setParam('resource', 'users/'.$user->getId())
;
$response->setStatusCode(UtopiaResponse::STATUS_CODE_CREATED);
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()));
$response->setStatusCode(Response::STATUS_CODE_CREATED);
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()), Response::MODEL_USER);
}
);
@ -529,7 +528,7 @@ $utopia->get('/v1/account')
->label('sdk.response', ['200' => 'user'])
->action(
function () use ($response, &$user, $oauth2Keys) {
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()));
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()), Response::MODEL_USER);
}
);
@ -710,7 +709,7 @@ $utopia->patch('/v1/account/name')
->setParam('resource', 'users/'.$user->getId())
;
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()));
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()), Response::MODEL_USER);
}
);
@ -744,7 +743,7 @@ $utopia->patch('/v1/account/password')
->setParam('resource', 'users/'.$user->getId())
;
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()));
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()), Response::MODEL_USER);
}
);
@ -794,7 +793,7 @@ $utopia->patch('/v1/account/email')
->setParam('resource', 'users/'.$user->getId())
;
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()));$response->dynamic($user);
$response->dynamic($user->setAttribute('roles', Authorization::getRoles()), Response::MODEL_USER);
}
);

View file

@ -3,6 +3,7 @@
global $utopia, $register, $request, $response, $projectDB, $project, $user, $audit;
use Appwrite\Database\Document;
use Appwrite\Utopia\Response;
use Utopia\App;
use Utopia\Locale\Locale;
use GeoIp2\Database\Reader;
@ -31,7 +32,6 @@ $utopia->get('/v1/locale')
$ip = '79.177.241.94';
}
$output['$collection'] = 'locale';
$output['ip'] = $ip;
$currency = null;
@ -66,7 +66,7 @@ $utopia->get('/v1/locale')
->addHeader('Expires', \date('D, d M Y H:i:s', \time() + $time).' GMT') // 45 days cache
;
$response->dynamic(new Document($output));
$response->dynamic(new Document($output), Response::MODEL_LOCALE);
}
);

View file

@ -80,7 +80,7 @@ $utopia->post('/v1/users')
}
$response->setStatusCode(Response::STATUS_CODE_CREATED);
$response->dynamic($user);
$response->dynamic($user, Response::MODEL_USER);
}
);

View file

@ -4,19 +4,27 @@ namespace Appwrite\Utopia;
use Exception;
use Appwrite\Database\Document;
use Appwrite\Utopia\Response\Result;
use Appwrite\Utopia\Response\Result\User;
use Appwrite\Utopia\Response\Result\Locale;
use Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response\Model\Error;
use Appwrite\Utopia\Response\Model\ErrorDev;
use Appwrite\Utopia\Response\Model\User;
use Appwrite\Utopia\Response\Model\Locale;
use Utopia\Response as UtopiaResponse;
class Response extends UtopiaResponse
{
const MODEL_ERROR = 'error';
const MODEL_ERROR_DEV = 'errorDev';
const MODEL_USER = 'user';
const MODEL_LOCALE = 'locale';
public function __construct()
{
$this
->setResult(new User())
->setResult(new Locale())
->setModel(new Error())
->setModel(new ErrorDev())
->setModel(new User())
->setModel(new Locale())
;
}
@ -28,71 +36,63 @@ class Response extends UtopiaResponse
/**
* List of defined output objects
*/
protected $results = [];
protected $models = [];
/**
* Set Result Object
* Set Model Object
*
* @return self
*/
public function setResult(Result $result): self
public function setModel(Model $instance): self
{
$this->results[$result->getCollection()] = $result;
$this->models[$instance->getType()] = $instance;
return $this;
}
/**
* Get Result Object
* Get Model Object
*
* @return Result
* @return Model
*/
public function getResult(string $key): Result
public function getModel(string $key): Model
{
if(!isset($this->results[$key])) {
throw new Exception('Undefined result: '.$key);
if(!isset($this->models[$key])) {
throw new Exception('Undefined model: '.$key);
}
return $this->results[$key];
return $this->models[$key];
}
/**
* Validate response objects and outputs
* the response according to given format type
*/
public function dynamic(Document $document, $type = self::CONTENT_TYPE_JSON)
public function dynamic(Document $document, string $model)
{
$collection = $document->getCollection();
$data = $document->getArrayCopy();
$result = $this->getResult($collection);
$model = $this->getModel($model);
$output = [];
foreach($result->getRules() as $key => $rule) {
foreach($model->getRules() as $key => $rule) {
if(!isset($data[$key])) {
if(!is_null($rule['default'])) {
$data[$key] = $rule['default'];
}
else {
throw new Exception('Missing response key: ' . $key);
throw new Exception('Missing response key: '.$key);
}
}
if($rule['array'] && !is_array($data[$key])) {
throw new Exception($key.' must be an array of '.$rule['type'].' types');
}
$output[$key] = $data[$key];
}
switch ($type) {
case self::CONTENT_TYPE_JSON:
return $this->json($output);
break;
case self::CONTENT_TYPE_YAML:
return $this->yaml($output);
break;
default:
throw new Exception('Unknown content type');
break;
}
return $this->json($output);
//return $this->yaml($output);
}
/**

View file

@ -2,7 +2,7 @@
namespace Appwrite\Utopia\Response;
abstract class Result
abstract class Model
{
protected $rules = [];
@ -18,7 +18,7 @@ abstract class Result
*
* @return string
*/
abstract public function getCollection():string;
abstract public function getType():string;
/**
* Get Rules

View file

@ -0,0 +1,50 @@
<?php
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class Error extends Model
{
public function __construct()
{
$this
->addRule('message', [
'type' => 'string',
'description' => 'Error message.',
'example' => 'Not found',
])
->addRule('code', [
'type' => 'string',
'description' => 'Error code.',
'example' => '404',
])
->addRule('version', [
'type' => 'string',
'description' => 'Server version number.',
'example' => APP_VERSION_STABLE,
])
;
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'Error';
}
/**
* Get Collection
*
* @return string
*/
public function getType():string
{
return Response::MODEL_ERROR;
}
}

View file

@ -0,0 +1,43 @@
<?php
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response;
class ErrorDev extends Error
{
public function __construct()
{
parent::__construct();
$this
->addRule('file', [
'type' => 'string',
'description' => 'File path.',
'example' => '/usr/share/nginx/html/vendor/utopia-php/framework/src/App.php',
])
->addRule('line', [
'type' => 'integer',
'description' => 'Line number.',
'example' => 209,
])
// ->addRule('trace', [
// 'type' => 'string',
// 'description' => 'Error trace.',
// 'example' => [
// ''
// ],
// ])
;
}
/**
* Get Collection
*
* @return string
*/
public function getType():string
{
return Response::MODEL_ERROR_DEV;
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class File extends Model
{
public function __construct()
{
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'File';
}
/**
* Get Collection
*
* @return string
*/
public function getType():string
{
return Response::MODEL_LOCALE;
}
}

View file

@ -0,0 +1,33 @@
<?php
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class Health extends Model
{
public function __construct()
{
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'User';
}
/**
* Get Collection
*
* @return string
*/
public function getType():string
{
return Response::MODEL_LOCALE;
}
}

View file

@ -1,10 +1,11 @@
<?php
namespace Appwrite\Utopia\Response\Result;
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response\Result;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class Locale extends Result
class Locale extends Model
{
public function __construct()
{
@ -56,7 +57,7 @@ class Locale extends Result
*/
public function getName():string
{
return 'User';
return 'Locale';
}
/**
@ -64,8 +65,8 @@ class Locale extends Result
*
* @return string
*/
public function getCollection():string
public function getType():string
{
return 'locale';
return Response::MODEL_LOCALE;
}
}

View file

@ -0,0 +1,33 @@
<?php
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class Log extends Model
{
public function __construct()
{
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'Session';
}
/**
* Get Collection
*
* @return string
*/
public function getType():string
{
return Response::MODEL_LOCALE;
}
}

View file

@ -0,0 +1,33 @@
<?php
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class Session extends Model
{
public function __construct()
{
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'Session';
}
/**
* Get Collection
*
* @return string
*/
public function getType():string
{
return Response::MODEL_LOCALE;
}
}

View file

@ -0,0 +1,33 @@
<?php
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class Token extends Model
{
public function __construct()
{
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'User';
}
/**
* Get Collection
*
* @return string
*/
public function getType():string
{
return Response::MODEL_LOCALE;
}
}

View file

@ -1,11 +1,11 @@
<?php
namespace Appwrite\Utopia\Response\Result;
namespace Appwrite\Utopia\Response\Model;
use Appwrite\Database\Database;
use Appwrite\Utopia\Response\Result;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model;
class User extends Result
class User extends Model
{
public function __construct()
{
@ -76,8 +76,8 @@ class User extends Result
*
* @return string
*/
public function getCollection():string
public function getType():string
{
return Database::SYSTEM_COLLECTION_USERS;
return Response::MODEL_USER;
}
}

View file

@ -1,40 +0,0 @@
<?php
namespace Appwrite\Utopia\Response\Result;
use Appwrite\Database\Database;
use Appwrite\Utopia\Response\Result;
class File extends Result
{
public function __construct()
{
$this
->addRule('$id', 'string', 'User ID.', '5e5ea5c16897e')
->addRule('name', 'string', 'User name.', 'John Doe')
->addRule('email', 'string', 'User email address.', 'john@appwrite.io')
->addRule('emailVerification', 'string', 'Email verification status.', true)
->addRule('registration', 'integer', 'User registration date in UNIX format.', 1583261121)
;
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'User';
}
/**
* Get Collection
*
* @return string
*/
public function getCollection():string
{
return Database::SYSTEM_COLLECTION_TOKENS;
}
}

View file

@ -1,40 +0,0 @@
<?php
namespace Appwrite\Utopia\Response\Result;
use Appwrite\Database\Database;
use Appwrite\Utopia\Response\Result;
class Health extends Result
{
public function __construct()
{
$this
->addRule('$id', 'string', 'User ID.', '5e5ea5c16897e')
->addRule('name', 'string', 'User name.', 'John Doe')
->addRule('email', 'string', 'User email address.', 'john@appwrite.io')
->addRule('emailVerification', 'string', 'Email verification status.', true)
->addRule('registration', 'integer', 'User registration date in UNIX format.', 1583261121)
;
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'User';
}
/**
* Get Collection
*
* @return string
*/
public function getCollection():string
{
return Database::SYSTEM_COLLECTION_TOKENS;
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace Appwrite\Utopia\Response\Result;
use Appwrite\Database\Database;
use Appwrite\Utopia\Response\Result;
class Log extends Result
{
public function __construct()
{
$this
->addRule('$id', 'string', 'Session ID.', '5e5ea5c16897e')
->addRule('expire', 'integer', 'Session expiration date in UNIX format.', 1583261121)
;
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'Session';
}
/**
* Get Collection
*
* @return string
*/
public function getCollection():string
{
return Database::SYSTEM_COLLECTION_TOKENS;
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace Appwrite\Utopia\Response\Result;
use Appwrite\Database\Database;
use Appwrite\Utopia\Response\Result;
class Session extends Result
{
public function __construct()
{
$this
->addRule('$id', 'string', 'Session ID.', '5e5ea5c16897e')
->addRule('expire', 'integer', 'Session expiration date in UNIX format.', 1583261121)
;
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'Session';
}
/**
* Get Collection
*
* @return string
*/
public function getCollection():string
{
return Database::SYSTEM_COLLECTION_TOKENS;
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace Appwrite\Utopia\Response\Result;
use Appwrite\Database\Database;
use Appwrite\Utopia\Response\Result;
class Token extends Result
{
public function __construct()
{
$this
->addRule('$id', 'string', 'Token ID.', '5e5ea5c16897e')
->addRule('expire', 'integer', 'Token expiration date in UNIX format.', 1583261121)
;
}
/**
* Get Name
*
* @return string
*/
public function getName():string
{
return 'User';
}
/**
* Get Collection
*
* @return string
*/
public function getCollection():string
{
return Database::SYSTEM_COLLECTION_TOKENS;
}
}