Base of actions with POC of validation
This commit is contained in:
parent
a67d15089a
commit
7bacb3474c
|
@ -4,6 +4,9 @@ namespace App;
|
|||
|
||||
use Silex\Application as SilexApplication;
|
||||
use Silex\Provider\SecurityServiceProvider;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use App\Validator\SmsValidator;
|
||||
|
||||
/**
|
||||
* class Application.
|
||||
|
@ -33,6 +36,16 @@ class Application extends SilexApplication
|
|||
],
|
||||
],
|
||||
]);
|
||||
|
||||
$this['validator.sms'] = new SmsValidator();
|
||||
|
||||
$this->error(function (\Exception $e, Request $request, $code) {
|
||||
return $this->json([
|
||||
'status' => false,
|
||||
'code' => $code,
|
||||
'message' => $e->getMessage(),
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
25
src/App/Validator/Helper/RequestValidator.php
Normal file
25
src/App/Validator/Helper/RequestValidator.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace App\Validator\Helper;
|
||||
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* trait RequestValidator.
|
||||
*
|
||||
* @author Simon Vieille <simon@deblan.fr>
|
||||
*/
|
||||
trait RequestValidator
|
||||
{
|
||||
/**
|
||||
* Validates a Request
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function validateRequest(Request $request)
|
||||
{
|
||||
return $this->validate(json_decode($request->getContent(), true));
|
||||
}
|
||||
}
|
25
src/App/Validator/SmsValidator.php
Normal file
25
src/App/Validator/SmsValidator.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace App\Validator;
|
||||
|
||||
/**
|
||||
* class SmsValidator.
|
||||
*
|
||||
* @author Simon Vieille <simon@deblan.fr>
|
||||
*/
|
||||
class SmsValidator implements Validator
|
||||
{
|
||||
use Helper\RequestValidator;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($data)
|
||||
{
|
||||
if (!is_array($data)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return isset($data['sender'], $data['message'], $data['time']);
|
||||
}
|
||||
}
|
20
src/App/Validator/Validator.php
Normal file
20
src/App/Validator/Validator.php
Normal file
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
namespace App\Validator;
|
||||
|
||||
/**
|
||||
* interface Validator.
|
||||
*
|
||||
* @author Simon Vieille <simon@deblan.fr>
|
||||
*/
|
||||
interface Validator
|
||||
{
|
||||
/*
|
||||
* Validates data.
|
||||
*
|
||||
* @param mixed $data
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function validate($data);
|
||||
}
|
|
@ -1,15 +1,34 @@
|
|||
<?php
|
||||
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use App\Application;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
require_once __DIR__.'/../vendor/autoload.php';
|
||||
|
||||
$app = new Application();
|
||||
$app->setRootDir(__DIR__.'/../')->configure();
|
||||
|
||||
$app->get('/api/sms', function () use ($app) {
|
||||
return new JsonResponse(['status' => 'ok']);
|
||||
});
|
||||
$app
|
||||
// ->post('/api/sms/create', function (Request $request) use ($app) {
|
||||
->get('/api/sms/create', function (Request $request) use ($app) {
|
||||
if (!$app['validator.sms']->validateRequest($request)) {
|
||||
return $app->abort(422, 'Invalid request.');
|
||||
}
|
||||
})
|
||||
->bind('api_sms_create');
|
||||
|
||||
$app
|
||||
->delete('/api/sms/delete/{id}', function (Request $request, $id) use ($app) {
|
||||
})
|
||||
->bind('api_sms_delete')
|
||||
->assert('id', '\d+')
|
||||
->convert('id', function ($value) {
|
||||
return (int) $value;
|
||||
});
|
||||
|
||||
$app
|
||||
->get('/api/sms/list', function (Request $request) use ($app) {
|
||||
})
|
||||
->bind('api_sms_list');
|
||||
|
||||
$app->run();
|
||||
|
|
Loading…
Reference in a new issue