import httpx
import json
import signal
import time

from sys import argv

script, dataJson = argv

# Настройки.
configData = {"url": "", "proxy": "", "auth": "", "headers": "", "timeout": "", "returnHeaders": ""}

arrData = json.loads(dataJson)

for key in arrData:
	configData[key] = arrData[key]
	
# Проверка и установка настроек.
url = ''
proxy = ''
auth = ''
headers = {}
timeout = 15
returnHeaders = 0
	
if configData["url"] != '':
	url = configData["url"]
else:
	print("Error URL.")
	exit()
	
if configData["proxy"] != '':
	proxy = configData["proxy"]
else:
	print("Error proxy.")
	exit()
	
if configData["auth"] != '':
	auth = configData["auth"]
else:
	print("Error proxy auth.")
	exit()
	
if configData["headers"] != '':
	headers = configData["headers"]
	
if configData["timeout"] != '':
	timeout = configData["timeout"]
	
if configData["returnHeaders"] != '':
	returnHeaders = configData["returnHeaders"]

def signal_handler(signum, frame):
	raise Exception("Error timeout script!")

signal.signal(signal.SIGALRM, signal_handler)

try:
	signal.alarm(timeout)

	response = httpx.get(url, proxies = "http://"+auth+"@"+proxy, headers = headers, verify = False, follow_redirects = False, timeout = timeout)

	print(response.http_version, response.status_code, response.reason_phrase)

	for key in response.headers:
		print(key+": "+response.headers[key])
	print("\n")
	print(response.content.decode("utf-8"))
	# time.sleep(10)
	
	signal.alarm(0)
except Exception as e:
	print(e)