[utils] Add PUTRequest

This commit is contained in:
Sergey M․ 2016-07-03 02:21:32 +07:00
parent 6b03e1e25d
commit 95cf60e826
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
1 changed files with 12 additions and 3 deletions

View File

@ -1625,6 +1625,11 @@ class HEADRequest(compat_urllib_request.Request):
return 'HEAD' return 'HEAD'
class PUTRequest(compat_urllib_request.Request):
def get_method(self):
return 'PUT'
def int_or_none(v, scale=1, default=None, get_attr=None, invscale=1): def int_or_none(v, scale=1, default=None, get_attr=None, invscale=1):
if get_attr: if get_attr:
if v is not None: if v is not None:
@ -1920,14 +1925,18 @@ def update_Request(req, url=None, data=None, headers={}, query={}):
req_headers.update(headers) req_headers.update(headers)
req_data = data or req.data req_data = data or req.data
req_url = update_url_query(url or req.get_full_url(), query) req_url = update_url_query(url or req.get_full_url(), query)
req_type = HEADRequest if req.get_method() == 'HEAD' else compat_urllib_request.Request req_get_method = req.get_method()
if req_get_method == 'HEAD':
req_type = HEADRequest
elif req_get_method == 'PUT':
req_type = PUTRequest
else:
req_type = compat_urllib_request.Request
new_req = req_type( new_req = req_type(
req_url, data=req_data, headers=req_headers, req_url, data=req_data, headers=req_headers,
origin_req_host=req.origin_req_host, unverifiable=req.unverifiable) origin_req_host=req.origin_req_host, unverifiable=req.unverifiable)
if hasattr(req, 'timeout'): if hasattr(req, 'timeout'):
new_req.timeout = req.timeout new_req.timeout = req.timeout
if req.get_method() == 'PUT':
new_req.get_method = lambda : 'PUT'
return new_req return new_req