<?php namespace Vn\Web; use Vn\Lib; /** * Base class for REST application. **/ class RestService extends Service { function run () { ini_set ('display_errors', _ENABLE_DEBUG); set_error_handler ([$this, 'errorHandler'], E_ALL); set_exception_handler ([$this, 'exceptionHandler']); $this->startSession (); $this->loadMethod (__NAMESPACE__.'\RestRequest'); } function statusFromException ($e) { try { throw $e; } catch (SessionExpiredException $e) { $status = 401; } catch (BadLoginException $e) { $status = 401; } catch (Lib\UserException $e) { $status = 400; } catch (\Exception $e) { $status = 500; } http_response_code ($status); } function errorHandler ($errno, $message, $file, $line, $context) { $eFlag = E_USER_NOTICE | E_USER_WARNING | E_USER_DEPRECATED | E_NOTICE | E_WARNING | E_DEPRECATED; if (!($errno & $eFlag)) http_response_code (500); return FALSE; } function exceptionHandler ($e) { $this->statusFromException ($e); throw $e; } }