diff --git a/source/diff.py b/source/diff.py index c25cba3..a96bde2 100644 --- a/source/diff.py +++ b/source/diff.py @@ -3207,62 +3207,6 @@ def zip_content(path): return names -def popen(command, stdin=None): - try: - proc = subprocess.Popen(shlex.split(command), shell=IS_WIN, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - for line in proc.stdout: - yield line.decode().rstrip() - except Exception as e: - error(e) - yield (e.errno, e.strerror) - - -def url_open(url, options={}, verify=True, json=False): - data = '' - err = '' - req = Request(url) - try: - if verify: - response = urlopen(req) - else: - context = ssl._create_unverified_context() - response = urlopen(req, context=context) - except HTTPError as e: - error(e) - err = str(e) - except URLError as e: - error(e.reason) - err = str(e.reason) - else: - if json: - data = json_loads(response.read()) - else: - data = response.read() - - return data, err - - -def run(command, wait=False): - try: - if wait: - result = subprocess.check_output(command, shell=True) - else: - p = subprocess.Popen(shlex.split(command), stdin=None, - stdout=None, stderr=None, close_fds=True) - result, er = p.communicate() - except subprocess.CalledProcessError as e: - msg = ("%s\nrun [ERROR]: output = %s, error code = %s\n" - % (command, e.output, e.returncode)) - error(msg) - return False - - if result is None: - return True - - return result.decode() - - def _zippwd(source, target, pwd): if IS_WIN: return False diff --git a/source/easymacro2.py b/source/easymacro2.py index c224651..154c3e4 100644 --- a/source/easymacro2.py +++ b/source/easymacro2.py @@ -33,6 +33,7 @@ import re import shlex import shutil import socket +import ssl import subprocess import sys import tempfile @@ -48,6 +49,8 @@ from pathlib import Path from pprint import pprint from string import Template from typing import Any +from urllib.request import Request, urlopen +from urllib.error import URLError, HTTPError import smtplib from smtplib import SMTPException, SMTPAuthenticationError @@ -687,6 +690,35 @@ def get_size_screen(): return res.strip() +def url_open(url, data=None, headers={}, verify=True, json=False): + data = '' + err = '' + req = Request(url) + for k, v in headers.items(): + req.add_header(k, v) + try: + if verify: + if not data is None and isinstance(data, str): + data = data.encode() + response = urlopen(req, data=data) + else: + context = ssl._create_unverified_context() + response = urlopen(req, context=context) + except HTTPError as e: + error(e) + err = str(e) + except URLError as e: + error(e.reason) + err = str(e.reason) + else: + headers = dict(response.info()) + data = response.read() + if json: + data = json.loads(data) + + return data, headers, err + + def _get_key(password): from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC