Add authorization headers to REST client requests

Signed-off-by: James Ren <[email protected]>

--- autotest/frontend/shared/rest_client.py     2010-02-10 18:59:42.000000000 
-0800
+++ autotest/frontend/shared/rest_client.py     2010-02-10 18:59:42.000000000 
-0800
@@ -1,9 +1,23 @@
-import logging, pprint, re, urllib
+import logging, pprint, re, urllib, getpass, urlparse
 import httplib2
 from django.utils import simplejson
+from autotest_lib.frontend.afe import rpc_client_lib
 
 
 _http = httplib2.Http()
+_request_headers = {}
+
+
+def _get_request_headers(uri):
+    server = urlparse.urlparse(uri)[0:2]
+    if server in _request_headers:
+        return _request_headers[server]
+
+    headers = rpc_client_lib.authorization_headers(getpass.getuser(), uri)
+    headers['Content-Type'] = 'application/json'
+
+    _request_headers[server] = headers
+    return headers
 
 
 class RestClientError(Exception):
@@ -87,7 +101,6 @@
                     and not callable(value))
 
 
-    @classmethod
     def _do_request(self, method, uri, query_parameters, encoded_body):
         if query_parameters:
             query_string = '?' + urllib.urlencode(query_parameters)
@@ -105,7 +118,7 @@
             logging.debug(entity_body)
         headers, response_body = _http.request(
                 full_uri, method, body=entity_body,
-                headers={'Content-Type': 'application/json'})
+                headers=_get_request_headers(uri))
         logging.debug('Response: %s', headers['status'])
 
         return Response(headers, response_body)
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to