@staticmethod
def http_request(self, uri, **kwargs):
from httplib import BadStatusLine
+
+ if (self.max_request_size and
+ kwargs.get('body') and
+ self.max_request_size < len(kwargs['body'])):
+ raise apiclient_errors.MediaUploadSizeError("Request size %i bytes exceeds published limit of %i bytes" % (len(kwargs['body']), self.max_request_size))
+
if 'headers' not in kwargs:
kwargs['headers'] = {}
# previous call did not succeed, so this is slightly
# risky.
return self.orig_http_request(uri, **kwargs)
+
def authorize(self, http):
http.arvados_api_token = self.api_token
http.orig_http_request = http.request
http.request = types.MethodType(self.http_request, http)
+ http.max_request_size = 0
return http
# Monkey patch discovery._cast() so objects and arrays get serialized
svc = apiclient_discovery.build('arvados', version, **kwargs)
svc.api_token = token
+ kwargs['http'].max_request_size = svc._rootDesc.get('maxRequestSize', 0)
kwargs['http'].cache = None
return svc