Mercurial > kallithea
comparison rhodecode/controllers/api/__init__.py @ 1708:fee9895fa46e beta
changed API to match fully JSON-RPC specs
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 21 Nov 2011 03:08:09 +0200 |
parents | 60249224be04 |
children | 631caf880b87 |
comparison
equal
deleted
inserted
replaced
1707:54fda6ce9e98 | 1708:fee9895fa46e |
---|---|
48 | 48 |
49 class JSONRPCError(BaseException): | 49 class JSONRPCError(BaseException): |
50 | 50 |
51 def __init__(self, message): | 51 def __init__(self, message): |
52 self.message = message | 52 self.message = message |
53 super(JSONRPCError, self).__init__() | |
53 | 54 |
54 def __str__(self): | 55 def __str__(self): |
55 return str(self.message) | 56 return str(self.message) |
56 | 57 |
57 | 58 |
58 def jsonrpc_error(message, code=None): | 59 def jsonrpc_error(message, code=None): |
59 """ | 60 """ |
60 Generate a Response object with a JSON-RPC error body | 61 Generate a Response object with a JSON-RPC error body |
61 """ | 62 """ |
62 from pylons.controllers.util import Response | 63 from pylons.controllers.util import Response |
63 resp = Response(body=json.dumps(dict(result=None, error=message)), | 64 resp = Response(body=json.dumps(dict(id=None, result=None, error=message)), |
64 status=code, | 65 status=code, |
65 content_type='application/json') | 66 content_type='application/json') |
66 return resp | 67 return resp |
67 | 68 |
68 | 69 |
115 % (e, urllib.unquote_plus(raw_body))) | 116 % (e, urllib.unquote_plus(raw_body))) |
116 | 117 |
117 # check AUTH based on API KEY | 118 # check AUTH based on API KEY |
118 try: | 119 try: |
119 self._req_api_key = json_body['api_key'] | 120 self._req_api_key = json_body['api_key'] |
121 self._req_id = json_body['id'] | |
120 self._req_method = json_body['method'] | 122 self._req_method = json_body['method'] |
121 self._req_params = json_body['args'] | 123 self._req_params = json_body['args'] |
122 log.debug('method: %s, params: %s', | 124 log.debug('method: %s, params: %s', |
123 self._req_method, | 125 self._req_method, |
124 self._req_params) | 126 self._req_params) |
218 self._error = str(json_exc) | 220 self._error = str(json_exc) |
219 | 221 |
220 if self._error is not None: | 222 if self._error is not None: |
221 raw_response = None | 223 raw_response = None |
222 | 224 |
223 response = dict(result=raw_response, error=self._error) | 225 response = dict(id=self._req_id, result=raw_response, |
226 error=self._error) | |
224 | 227 |
225 try: | 228 try: |
226 return json.dumps(response) | 229 return json.dumps(response) |
227 except TypeError, e: | 230 except TypeError, e: |
228 log.debug('Error encoding response: %s', e) | 231 log.debug('Error encoding response: %s', e) |