From 477edc4910b57b80191ee487ffde560a3875563a Mon Sep 17 00:00:00 2001 From: Barbagus Date: Mon, 13 Feb 2023 18:44:32 +0100 Subject: [PATCH] Implement a `raise_for_status()` on `HTTPError` --- src/delarte/api.py | 3 +-- src/delarte/download.py | 6 ++---- src/delarte/error.py | 5 +++++ src/delarte/hls.py | 3 +-- src/delarte/www.py | 3 +-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/delarte/api.py b/src/delarte/api.py index 6273ce2..e40614a 100644 --- a/src/delarte/api.py +++ b/src/delarte/api.py @@ -15,8 +15,7 @@ def _fetch_api_object(http, url, object_type): # Fetch an API object. r = http.request("GET", url) - if not 200 <= r.status < 300: - raise HTTPError(r) + HTTPError.raise_for_status(r) mime_type = r.getheader("content-type") if mime_type != MIME_TYPE: diff --git a/src/delarte/download.py b/src/delarte/download.py index 34cb12d..410b6a2 100644 --- a/src/delarte/download.py +++ b/src/delarte/download.py @@ -27,8 +27,7 @@ def download_mp4_media(url, file_name, http, on_progress): headers={"Range": f"bytes={f.tell()}-"}, preload_content=False, ) - if not 200 <= r.status < 300: - raise HTTPError(r) + HTTPError.raise_for_status(r) _, total = r.getheader("content-range").split("/") total = int(total) @@ -54,8 +53,7 @@ def download_vtt_media(url, file_name, http, on_progress): with open(temp_file, "w", encoding="utf-8") as f: r = http.request("GET", url) - if not 200 <= r.status < 300: - raise HTTPError(r) + HTTPError.raise_for_status(r) subtitles.convert(r.data.decode("utf-8"), f) on_progress(file_name, f.tell(), f.tell()) diff --git a/src/delarte/error.py b/src/delarte/error.py index 67c8551..fd956f9 100644 --- a/src/delarte/error.py +++ b/src/delarte/error.py @@ -27,6 +27,11 @@ class UnexpectedError(ModuleError): class HTTPError(Exception): """A wrapper around a filed HTTP response.""" + @classmethod + def raise_for_status(self, r): + if not 200 <= r.status < 300: + raise self(r) + # # www diff --git a/src/delarte/hls.py b/src/delarte/hls.py index 7583a9f..288a7ed 100644 --- a/src/delarte/hls.py +++ b/src/delarte/hls.py @@ -30,8 +30,7 @@ MIME_TYPE = "application/x-mpegURL" def _fetch_index(http, url): # Fetch a M3U8 playlist r = http.request("GET", url) - if not 200 <= r.status < 300: - raise HTTPError(r) + HTTPError.raise_for_status(r) if (_ := r.getheader("content-type")) != MIME_TYPE: raise UnexpectedHLSResponse("MIME_TYPE", url, MIME_TYPE, _) diff --git a/src/delarte/www.py b/src/delarte/www.py index cba2566..2b5379b 100644 --- a/src/delarte/www.py +++ b/src/delarte/www.py @@ -101,8 +101,7 @@ def iter_programs(page_url, http): # special handling of 404 if r.status == 404: raise PageNotFound(page_url) - if not 200 <= r.status < 300: - raise HTTPError(r) + HTTPError.raise_for_status(r) # no HTML parsing required, whe just find the mark html = r.data.decode("utf-8")