File size: 1,683 Bytes
e2a9bea |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import json
import os
from pathlib import Path
from utils.logger import logger
class OSEnver:
def __init__(self):
self.envs_stack = []
self.envs = os.environ.copy()
def store_envs(self):
self.envs_stack.append(self.envs)
def restore_envs(self):
self.envs = self.envs_stack.pop()
def set_envs(self, secrets=True, proxies=None, store_envs=True):
# caller_info = inspect.stack()[1]
# logger.back(f"OS Envs is set by: {caller_info.filename}")
if store_envs:
self.store_envs()
if secrets:
secrets_path = Path(__file__).parents[1] / "secrets.json"
if secrets_path.exists():
with open(secrets_path, "r") as rf:
secrets = json.load(rf)
else:
secrets = {}
if proxies:
for proxy_env in ["http_proxy", "https_proxy"]:
if isinstance(proxies, str):
self.envs[proxy_env] = proxies
elif "http_proxy" in secrets.keys():
self.envs[proxy_env] = secrets["http_proxy"]
elif os.getenv("http_proxy"):
self.envs[proxy_env] = os.getenv("http_proxy")
else:
continue
self.proxy = (
self.envs.get("all_proxy")
or self.envs.get("http_proxy")
or self.envs.get("https_proxy")
or None
)
self.requests_proxies = {
"http": self.proxy,
"https": self.proxy,
}
if self.proxy:
logger.note(f"Using proxy: [{self.proxy}]")
enver = OSEnver()
|