[utils] Add PUTRequest
authorSergey M․ <dstftw@gmail.com>
Sat, 2 Jul 2016 19:21:32 +0000 (02:21 +0700)
committerSergey M․ <dstftw@gmail.com>
Sat, 2 Jul 2016 19:21:32 +0000 (02:21 +0700)
youtube_dl/utils.py

index 2b61e696682ec566e178ca93070708c188da0e0f..495878a0e5286c37828406a2140043bd6433d4fe 100644 (file)
@@ -1625,6 +1625,11 @@ class HEADRequest(compat_urllib_request.Request):
         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):
     if get_attr:
         if v is not None:
@@ -1920,14 +1925,18 @@ def update_Request(req, url=None, data=None, headers={}, query={}):
     req_headers.update(headers)
     req_data = data or req.data
     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(
         req_url, data=req_data, headers=req_headers,
         origin_req_host=req.origin_req_host, unverifiable=req.unverifiable)
     if hasattr(req, 'timeout'):
         new_req.timeout = req.timeout
-    if req.get_method() == 'PUT':
-        new_req.get_method = lambda : 'PUT'
     return new_req