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\Application as SilexApplication;
|
||||||
use Silex\Provider\SecurityServiceProvider;
|
use Silex\Provider\SecurityServiceProvider;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use App\Validator\SmsValidator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class Application.
|
* 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
|
<?php
|
||||||
|
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
||||||
use App\Application;
|
use App\Application;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
require_once __DIR__.'/../vendor/autoload.php';
|
require_once __DIR__.'/../vendor/autoload.php';
|
||||||
|
|
||||||
$app = new Application();
|
$app = new Application();
|
||||||
$app->setRootDir(__DIR__.'/../')->configure();
|
$app->setRootDir(__DIR__.'/../')->configure();
|
||||||
|
|
||||||
$app->get('/api/sms', function () use ($app) {
|
$app
|
||||||
return new JsonResponse(['status' => 'ok']);
|
// ->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();
|
$app->run();
|
||||||
|
|
Loading…
Reference in a new issue