
Signed-off-by: -LAN- <laipz8200@outlook.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
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)
|