1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-21 11:35:35 +01:00

Aggiornamento dell'API

Aggiornamento dell'API, con introduzione del supporto completo alla creazione di nuovi valori e miglioramento della gestione delle eccezioni.
This commit is contained in:
Thomas Zilio 2017-08-28 18:15:52 +02:00
parent 7656f345cd
commit 892b9a815c
4 changed files with 66 additions and 10 deletions

View File

@ -5,6 +5,14 @@ include_once __DIR__.'/../core.php';
// Disabilta la sessione per l'API
session_write_close();
function serverError()
{
die(API::error('serverError'));
}
// Gestione degli errori
set_error_handler('serverError');
// Permesso di accesso all'API da ogni dispositivo
header('Access-Control-Allow-Origin: *');
@ -15,10 +23,25 @@ try {
$api = new API(filter('token'));
$resource = filter('resource');
if (!empty($resource)) {
$result = $api->retrieve($resource);
} else {
$result = API::response(API::getResources()['retrieve']);
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'PUT':
$result = $api->update($resource);
break;
case 'POST':
$result = $api->create($resource);
break;
case 'GET':
if (!empty($resource)) {
$result = $api->retrieve($resource);
} else {
$result = API::response(API::getResources()['retrieve']);
}
break;
case 'DELETE':
$result = $api->delete($resource);
break;
}
} catch (InvalidArgumentException $e) {
$result = API::error('unauthorized');

View File

@ -61,7 +61,7 @@ $handlers[] = new StreamHandler(__DIR__.'/logs/error.log', Monolog\Logger::ERROR
$handlers[] = new StreamHandler(__DIR__.'/logs/setup.log', Monolog\Logger::EMERGENCY);
// Impostazioni di debug
if (!empty($debug)) {
if (!empty($debug) && !API::isAPIRequest()) {
// Ignoramento degli avvertimenti e delle informazioni relative alla deprecazione di componenti
if (empty($strict)) {
error_reporting(E_ALL & ~E_NOTICE & ~E_USER_DEPRECATED);
@ -79,7 +79,7 @@ if (!empty($debug)) {
$whoops->pushHandler($prettyPageHandler);
// Abilita la gestione degli errori nel caso la richiesta sia di tipo AJAX
if (\Whoops\Util\Misc::isAjaxRequest()) {
if (Whoops\Util\Misc::isAjaxRequest()) {
$whoops->pushHandler(new Whoops\Handler\JsonResponseHandler());
}

View File

@ -136,7 +136,7 @@ class API extends \Util\Singleton
public function update($resource)
{
return $this->fileRequest($resource, 'generate');
return $this->fileRequest($resource, 'update');
}
public function delete($resource)
@ -148,15 +148,24 @@ class API extends \Util\Singleton
{
$resources = self::getResources()[$kind];
if (!in_array($resource, $resources)) {
if (!in_array($resource, array_keys($resources))) {
return self::error('notFound');
}
// Database
$dbo = Database::getConnection();
$dbo->query('START TRANSACTION');
// Variabili GET e POST
$post = Filter::getPOST();
$get = Filter::getGET();
$filename = DOCROOT.'/modules/'.$resources[$resource].'/api/'.$kind.'.php';
include $filename;
$dbo->query('COMMIT');
return self::response($results);
}
@ -182,11 +191,13 @@ class API extends \Util\Singleton
$module = basename(dirname(dirname($operation)));
$kind = basename($operation, '.php');
$resources[$kind] = (array) $resources[$kind];
$temp = str_replace('/api/', '/custom/api/', $operation);
$operation = file_exists($temp) ? $temp : $operation;
$api = include $operation;
$api = array_unique($api);
$api = is_array($api) ? array_unique($api) : [];
$keys = array_keys($resources[$kind]);
@ -196,7 +207,7 @@ class API extends \Util\Singleton
$results[$value] = $module;
}
$resources[$kind] = array_merge((array) $resources[$kind], $results);
$resources[$kind] = array_merge($resources[$kind], $results);
}
}

View File

@ -0,0 +1,22 @@
<?php
switch ($resource) {
case 'add_anagrafica':
$rs = $dbo->fetchArray('SELECT codice FROM an_anagrafiche ORDER BY CAST(codice AS SIGNED) DESC LIMIT 0, 1');
$codice = get_next_code($rs[0]['codice'], 1, get_var('Formato codice anagrafica'));
// Inserisco l'anagrafica
$dbo->insert('an_anagrafiche', [
'ragione_sociale' => $post['data']['ragione_sociale'],
'codice' => $codice,
]);
// Inserisco il rapporto dell'anagrafica (cliente, tecnico, ecc)
$dbo->sync('an_tipianagrafiche_anagrafiche', ['idanagrafica' => $dbo->lastInsertedID()], ['idtipoanagrafica' => (array) $post['data']['tipi']]);
break;
}
return [
'add_anagrafica',
];