Refactory url_open

This commit is contained in:
Mauricio Baeza 2020-11-10 13:08:55 -06:00
parent 1702529ca8
commit ce93d84c08
2 changed files with 32 additions and 56 deletions

View File

@ -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

View File

@ -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