2019-04-12 18:09:35 +05:30
|
|
|
import json
|
2018-11-09 20:32:08 +05:30
|
|
|
import time
|
|
|
|
|
import random
|
|
|
|
|
import requests
|
2020-12-06 14:59:19 +05:30
|
|
|
import warnings
|
|
|
|
|
|
2021-02-07 19:43:30 +05:30
|
|
|
import arjun.core.config as mem
|
|
|
|
|
|
|
|
|
|
from arjun.core.utils import dict_to_xml
|
2018-11-09 20:32:08 +05:30
|
|
|
|
|
|
|
|
warnings.filterwarnings('ignore') # Disable SSL related warnings
|
|
|
|
|
|
2020-12-06 14:59:19 +05:30
|
|
|
def requester(request, payload={}):
|
2021-02-07 19:43:30 +05:30
|
|
|
"""
|
|
|
|
|
central function for making http requests
|
|
|
|
|
returns str on error otherwise response object of requests library
|
|
|
|
|
"""
|
2022-09-11 02:57:13 +05:30
|
|
|
if len(request.get('include', '')) != 0:
|
2020-12-06 14:59:19 +05:30
|
|
|
payload.update(request['include'])
|
|
|
|
|
if mem.var['stable']:
|
|
|
|
|
mem.var['delay'] = random.choice(range(6, 12))
|
|
|
|
|
time.sleep(mem.var['delay'])
|
|
|
|
|
url = request['url']
|
|
|
|
|
if mem.var['kill']:
|
|
|
|
|
return 'killed'
|
|
|
|
|
try:
|
|
|
|
|
if request['method'] == 'GET':
|
2022-04-04 14:47:27 +05:30
|
|
|
response = requests.get(url,
|
|
|
|
|
params=payload,
|
|
|
|
|
headers=request['headers'],
|
|
|
|
|
verify=False,
|
|
|
|
|
allow_redirects=False,
|
|
|
|
|
timeout=mem.var['timeout'],
|
|
|
|
|
)
|
2020-12-06 14:59:19 +05:30
|
|
|
elif request['method'] == 'JSON':
|
2021-02-08 09:51:36 +05:30
|
|
|
request['headers']['Content-Type'] = 'application/json'
|
2021-02-07 19:43:30 +05:30
|
|
|
if mem.var['include'] and '$arjun$' in mem.var['include']:
|
2022-04-04 14:47:27 +05:30
|
|
|
payload = mem.var['include'].replace('$arjun$',
|
|
|
|
|
json.dumps(payload).rstrip('}').lstrip('{'))
|
|
|
|
|
response = requests.post(url,
|
|
|
|
|
data=payload,
|
|
|
|
|
headers=request['headers'],
|
|
|
|
|
verify=False,
|
|
|
|
|
allow_redirects=False,
|
|
|
|
|
timeout=mem.var['timeout'],
|
|
|
|
|
)
|
2021-02-07 19:43:30 +05:30
|
|
|
else:
|
2022-04-04 14:47:27 +05:30
|
|
|
response = requests.post(url,
|
|
|
|
|
json=payload,
|
|
|
|
|
headers=request['headers'],
|
|
|
|
|
verify=False,
|
|
|
|
|
allow_redirects=False,
|
|
|
|
|
timeout=mem.var['timeout'],
|
|
|
|
|
)
|
2021-02-07 19:43:30 +05:30
|
|
|
elif request['method'] == 'XML':
|
2021-02-08 09:51:36 +05:30
|
|
|
request['headers']['Content-Type'] = 'application/xml'
|
2022-04-04 14:47:27 +05:30
|
|
|
payload = mem.var['include'].replace('$arjun$',
|
|
|
|
|
dict_to_xml(payload))
|
|
|
|
|
response = requests.post(url,
|
|
|
|
|
data=payload,
|
|
|
|
|
headers=request['headers'],
|
|
|
|
|
verify=False,
|
|
|
|
|
allow_redirects=False,
|
|
|
|
|
timeout=mem.var['timeout'],
|
|
|
|
|
)
|
2020-12-06 14:59:19 +05:30
|
|
|
else:
|
2022-04-04 14:47:27 +05:30
|
|
|
response = requests.post(url,
|
|
|
|
|
data=payload,
|
|
|
|
|
headers=request['headers'],
|
|
|
|
|
verify=False,
|
|
|
|
|
allow_redirects=False,
|
|
|
|
|
timeout=mem.var['timeout'],
|
|
|
|
|
)
|
2020-12-06 14:59:19 +05:30
|
|
|
return response
|
|
|
|
|
except Exception as e:
|
|
|
|
|
return str(e)
|