From 30479d2705e103aef74315fe7855b93664d90385 Mon Sep 17 00:00:00 2001 From: doe1080 <98906116+doe1080@users.noreply.github.com> Date: Fri, 11 Apr 2025 02:34:32 +0900 Subject: [PATCH] [networking] Support PATCH request --- test/test_networking.py | 2 ++ yt_dlp/networking/__init__.py | 1 + yt_dlp/networking/_urllib.py | 7 +++++++ yt_dlp/networking/common.py | 1 + 4 files changed, 11 insertions(+) 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')