##// END OF EJS Templates
API fixes...
marcink -
r1489:b951731f beta
parent child Browse files
Show More
@@ -39,7 +39,7 from pylons.controllers.util import Resp
39 from webob.exc import HTTPNotFound, HTTPForbidden, HTTPInternalServerError, \
39 from webob.exc import HTTPNotFound, HTTPForbidden, HTTPInternalServerError, \
40 HTTPBadRequest, HTTPError
40 HTTPBadRequest, HTTPError
41
41
42 from rhodecode.model.user import User
42 from rhodecode.model.db import User
43 from rhodecode.lib.auth import AuthUser
43 from rhodecode.lib.auth import AuthUser
44
44
45 log = logging.getLogger('JSONRPC')
45 log = logging.getLogger('JSONRPC')
@@ -85,10 +85,9 class JSONRPCController(WSGIController):
85 Parse the request body as JSON, look up the method on the
85 Parse the request body as JSON, look up the method on the
86 controller and if it exists, dispatch to it.
86 controller and if it exists, dispatch to it.
87 """
87 """
88
89 if 'CONTENT_LENGTH' not in environ:
88 if 'CONTENT_LENGTH' not in environ:
90 log.debug("No Content-Length")
89 log.debug("No Content-Length")
91 return jsonrpc_error(0, "No Content-Length")
90 return jsonrpc_error(message="No Content-Length in request")
92 else:
91 else:
93 length = environ['CONTENT_LENGTH'] or 0
92 length = environ['CONTENT_LENGTH'] or 0
94 length = int(environ['CONTENT_LENGTH'])
93 length = int(environ['CONTENT_LENGTH'])
@@ -96,7 +95,7 class JSONRPCController(WSGIController):
96
95
97 if length == 0:
96 if length == 0:
98 log.debug("Content-Length is 0")
97 log.debug("Content-Length is 0")
99 return jsonrpc_error(0, "Content-Length is 0")
98 return jsonrpc_error(message="Content-Length is 0")
100
99
101 raw_body = environ['wsgi.input'].read(length)
100 raw_body = environ['wsgi.input'].read(length)
102
101
@@ -104,12 +103,10 class JSONRPCController(WSGIController):
104 json_body = json.loads(urllib.unquote_plus(raw_body))
103 json_body = json.loads(urllib.unquote_plus(raw_body))
105 except ValueError as e:
104 except ValueError as e:
106 #catch JSON errors Here
105 #catch JSON errors Here
107 return jsonrpc_error("JSON parse error ERR:%s RAW:%r" \
106 return jsonrpc_error(message="JSON parse error ERR:%s RAW:%r" \
108 % (e, urllib.unquote_plus(raw_body)))
107 % (e, urllib.unquote_plus(raw_body)))
109
108
110
111 #check AUTH based on API KEY
109 #check AUTH based on API KEY
112
113 try:
110 try:
114 self._req_api_key = json_body['api_key']
111 self._req_api_key = json_body['api_key']
115 self._req_method = json_body['method']
112 self._req_method = json_body['method']
@@ -131,7 +128,7 class JSONRPCController(WSGIController):
131 try:
128 try:
132 self._func = self._find_method()
129 self._func = self._find_method()
133 except AttributeError, e:
130 except AttributeError, e:
134 return jsonrpc_error(str(e))
131 return jsonrpc_error(message=str(e))
135
132
136 # now that we have a method, add self._req_params to
133 # now that we have a method, add self._req_params to
137 # self.kargs and dispatch control to WGIController
134 # self.kargs and dispatch control to WGIController
@@ -143,7 +140,7 class JSONRPCController(WSGIController):
143 self.rhodecode_user = auth_u
140 self.rhodecode_user = auth_u
144
141
145 if 'user' not in arglist:
142 if 'user' not in arglist:
146 return jsonrpc_error('This method [%s] does not support '
143 return jsonrpc_error(message='This method [%s] does not support '
147 'authentication (missing user param)' %
144 'authentication (missing user param)' %
148 self._func.__name__)
145 self._func.__name__)
149
146
@@ -155,7 +152,7 class JSONRPCController(WSGIController):
155 continue
152 continue
156
153
157 if not self._req_params or arg not in self._req_params:
154 if not self._req_params or arg not in self._req_params:
158 return jsonrpc_error('Missing %s arg in JSON DATA' % arg)
155 return jsonrpc_error(message='Missing %s arg in JSON DATA' % arg)
159
156
160 self._rpc_args = dict(user=u)
157 self._rpc_args = dict(user=u)
161 self._rpc_args.update(self._req_params)
158 self._rpc_args.update(self._req_params)
General Comments 0
You need to be logged in to leave comments. Login now