source: sandbox/webservice/api/rest/core/Errors.php @ 6061

Revision 6061, 3.3 KB checked in by niltonneto, 12 years ago (diff)

Ticket #2507 - Modificada implementação para tratamento de erros por Exception.

Line 
1<?php
2
3final class Errors {
4               
5        // Errors from -32000 to -32099 => Server error :Reserved for implementation-defined server-errors.
6        const E_PARSE_ERROR             = "-32700";     
7        const E_INVALID_REQUEST         = "-32600";
8        const E_METHOD_NOT_FOUND        = "-32601";
9        const E_INVALID_PARAMS          = "-32602";
10        const E_INTERNAL_ERROR          = "-32603";     
11
12        const E_HTTP_NOT_FOUND          = "404";
13        const E_UNKNOWN_ERROR           = "500";
14       
15       
16        // Errors inherited from Expresso Application. 
17        const LOGIN_SUCCESS_LOGOUT                      = "1";
18        const LOGIN_SESSION_EXPIRED             = "2";
19        const LOGIN_NOT_LOGGED_IN                       = "3";
20        const LOGIN_COOKIES_REQUIRED            = "4";
21        const LOGIN_BADLOGIN                            = "5";
22        const LOGIN_PASSWORD_EXPIRED            = "6";
23        const LOGIN_AUTH_INVALID                        = "7";
24        const LOGIN_SESSION_NOT_VERIFIED        = "10";
25        const LOGIN_ACCOUNT_EXPIRED             = "98";
26        const LOGIN_LOGIN_BLOCKED                       = "99";
27        const LOGIN_INVALID_LOGIN                       = "200";
28       
29
30        const CATALOG_MIN_ARGUMENT_SEARCH       = "1001";       
31       
32        static private $reservedErrors = array (                       
33                self::E_PARSE_ERROR             => "Parse error",
34                self::E_INVALID_REQUEST         => "Invalid Request",
35                self::E_METHOD_NOT_FOUND        => "Method not found",
36                self::E_INVALID_PARAMS          => "Invalid params",
37                self::E_INTERNAL_ERROR          => "Internal error",
38                self::E_HTTP_NOT_FOUND          => 'A resource matching URI "%1" was not found',
39                self::E_UNKNOWN_ERROR           => "HTTP Unknown error"
40        );
41       
42       
43        // Errors inherited from Expresso Application.
44        static private $applicationErrors = array(                     
45
46                self::LOGIN_SUCCESS_LOGOUT                      => "You have been successfully logged out",
47                self::LOGIN_SESSION_EXPIRED             => "Sorry, your login has expired",
48                self::LOGIN_NOT_LOGGED_IN                       => "You are not logged in",
49                self::LOGIN_COOKIES_REQUIRED            => "Cookies are required to login to this site.",
50                self::LOGIN_BADLOGIN                            => "bad login or password",
51                self::LOGIN_PASSWORD_EXPIRED            => "Your password has expired, and you do not have access to change it",
52                self::LOGIN_AUTH_INVALID                        => "Your auth is invalid",
53                self::LOGIN_SESSION_NOT_VERIFIED        => "Your session could not be verified.",
54                self::LOGIN_ACCOUNT_EXPIRED             => "Account is expired",
55                self::LOGIN_LOGIN_BLOCKED                       => "Blocked, too many attempts!",
56                self::LOGIN_INVALID_LOGIN                       => "Bad login or password",
57                self::CATALOG_MIN_ARGUMENT_SEARCH       => "Your search argument must be longer than %1 characters."                                                   
58        );
59               
60        static public function set($code, $message){
61                return array ("code" => $code, "message" => $message);
62        }
63
64        static public function get($code, $argument = false){
65                $errors = self::$reservedErrors + self::$applicationErrors;             
66                $message = $errors[$code];
67                if(!$message)
68                        $message = $errors[self::E_UNKNOWN_ERROR];
69                if($argument)
70                        $message = str_replace("%1", $argument, $message);             
71               
72                return array ("code" => $code, "message" => $message);
73        }
74       
75        static public function getResponse($request, $responseException){                       
76                        $response = new Response($request);
77                        $response->code = Response::OK;
78                        $response->addHeader('content-type', 'application/json');
79                        if($request->id)
80                                $body['id']     = $request->id;
81                       
82                        $code    = $responseException->getCode();
83                        $error = Errors::get($code);                   
84                        $message = ($responseException->getMessage() ? $responseException->getMessage() : $error['message']);                   
85                        $body['error'] = array("code" => $code, "message" => $message);         
86                        $response->body = json_encode($body);
87                        return $response;
88        }
89               
90}
Note: See TracBrowser for help on using the repository browser.