| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import logging
- import os
- import ssl
- import urllib.request
- from collections.abc import Mapping
- from typing import Any
- from urllib import parse
- from urllib.error import HTTPError
-
- # Create an SSL context that allows for a lower level of security
- ssl_context = ssl.create_default_context()
- ssl_context.set_ciphers("HIGH:!DH:!aNULL")
- ssl_context.check_hostname = False
- ssl_context.verify_mode = ssl.CERT_NONE
-
- # Create an opener object and pass in a custom SSL context
- opener = urllib.request.build_opener(urllib.request.HTTPSHandler(context=ssl_context))
-
- urllib.request.install_opener(opener)
-
- logger = logging.getLogger(__name__)
-
-
- def http_request(url: str, timeout: int | float, headers: Mapping[str, str] = {}) -> tuple[int, str | None]:
- try:
- request = urllib.request.Request(url, headers=dict(headers))
- res = urllib.request.urlopen(request, timeout=timeout)
- body = res.read().decode("utf-8")
- return res.code, body
- except HTTPError as e:
- if e.code == 304:
- logger.warning("http_request error,code is 304, maybe you should check secret")
- return 304, None
- logger.warning("http_request error,code is %d, msg is %s", e.code, e.msg)
- raise e
-
-
- def url_encode(params: dict[str, Any]) -> str:
- return parse.urlencode(params)
-
-
- def makedirs_wrapper(path: str) -> None:
- os.makedirs(path, exist_ok=True)
|