|
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): |
|
|
|
|
|
|
|
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() |
|
|