diff --git a/test/test_networking.py b/test/test_networking.py index 3ab60fe836..2f441fced2 100644 --- a/test/test_networking.py +++ b/test/test_networking.py @@ -39,6 +39,7 @@ from yt_dlp.cookies import YoutubeDLCookieJar from yt_dlp.dependencies import brotli, curl_cffi, requests, urllib3 from yt_dlp.networking import ( HEADRequest, + PATCHRequest, PUTRequest, Request, RequestDirector, @@ -1856,6 +1857,7 @@ class TestRequest: def test_request_helpers(self): assert HEADRequest('http://example.com').method == 'HEAD' + assert PATCHRequest('http://example.com').method == 'PATCH' assert PUTRequest('http://example.com').method == 'PUT' def test_headers(self): diff --git a/yt_dlp/networking/__init__.py b/yt_dlp/networking/__init__.py index 1eaa0ee5fd..39158a8cc1 100644 --- a/yt_dlp/networking/__init__.py +++ b/yt_dlp/networking/__init__.py @@ -3,6 +3,7 @@ import warnings from .common import ( HEADRequest, + PATCHRequest, PUTRequest, Request, RequestDirector, diff --git a/yt_dlp/networking/_urllib.py b/yt_dlp/networking/_urllib.py index a188b35f57..1f826885f2 100644 --- a/yt_dlp/networking/_urllib.py +++ b/yt_dlp/networking/_urllib.py @@ -261,6 +261,11 @@ class ProxyHandler(urllib.request.BaseHandler): self, req, proxy, None) +class PATCHRequest(urllib.request.Request): + def get_method(self): + return 'PATCH' + + class PUTRequest(urllib.request.Request): def get_method(self): return 'PUT' @@ -279,6 +284,8 @@ def update_Request(req, url=None, data=None, headers=None, query=None): req_get_method = req.get_method() if req_get_method == 'HEAD': req_type = HEADRequest + elif req_get_method == 'PATCH': + req_type = PATCHRequest elif req_get_method == 'PUT': req_type = PUTRequest else: diff --git a/yt_dlp/networking/common.py b/yt_dlp/networking/common.py index ddceaa9a97..e33769422b 100644 --- a/yt_dlp/networking/common.py +++ b/yt_dlp/networking/common.py @@ -505,6 +505,7 @@ class Request: HEADRequest = functools.partial(Request, method='HEAD') +PATCHRequest = functools.partial(Request, method='PATCH') PUTRequest = functools.partial(Request, method='PUT')