* switching to building options in query string
* payloads for things like /message/send are now send through the request body * no longer sending body data in gets This whole patch is basically so we can allow js clients to exist btw -_-
This commit is contained in:
parent
21b184b324
commit
f585cf122c
@ -2,6 +2,8 @@ import sys
|
|||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
|
from urllib.parse import quote
|
||||||
|
|
||||||
|
|
||||||
class RequestError(Exception):
|
class RequestError(Exception):
|
||||||
pass
|
pass
|
||||||
@ -12,7 +14,7 @@ class Response:
|
|||||||
Primarily created by Requests that get `make`'d.
|
Primarily created by Requests that get `make`'d.
|
||||||
'''
|
'''
|
||||||
def __init__(self, method: str, url: str, body: str, code: int, expected: int, out=sys.stdout, color=True,
|
def __init__(self, method: str, url: str, body: str, code: int, expected: int, out=sys.stdout, color=True,
|
||||||
truncate_long_body=True):
|
truncate_long_body=True, p=None):
|
||||||
|
|
||||||
self.method = method
|
self.method = method
|
||||||
self.url = url
|
self.url = url
|
||||||
@ -23,6 +25,7 @@ class Response:
|
|||||||
self.out = out # file handle to write to normally sys.stdout
|
self.out = out # file handle to write to normally sys.stdout
|
||||||
self.color = color # bool telling if log should color anything (on by default)
|
self.color = color # bool telling if log should color anything (on by default)
|
||||||
self.truncate_long_body = truncate_long_body
|
self.truncate_long_body = truncate_long_body
|
||||||
|
self.raw_params = p
|
||||||
|
|
||||||
def _color(self, cc, string):
|
def _color(self, cc, string):
|
||||||
nc = '\033[0m'
|
nc = '\033[0m'
|
||||||
@ -57,11 +60,14 @@ class Response:
|
|||||||
|
|
||||||
def log(self):
|
def log(self):
|
||||||
if self.code != self.expected:
|
if self.code != self.expected:
|
||||||
msg = f'Failed {self.method.upper()} {self.url}\t{self.code} expected {self.expected}'
|
base_url = self.url[:self.url.find('?')]
|
||||||
|
fail = f'Failed {self.method.upper()} {base_url}\t{self.code} expected {self.expected}\n'
|
||||||
|
content = f'\tRaw params: {self.raw_params[0]}\n\tParsed Params: {self.raw_params[1]}'
|
||||||
if self.color:
|
if self.color:
|
||||||
msg = self._color_failing(msg)
|
fail = self._color_failing(fail)
|
||||||
|
|
||||||
self.__write_msg(msg)
|
self.__write_msg(fail)
|
||||||
|
self.__write_msg(content)
|
||||||
self._log_body()
|
self._log_body()
|
||||||
else:
|
else:
|
||||||
msg = f'Passing: {self.method} {self.url}'
|
msg = f'Passing: {self.method} {self.url}'
|
||||||
@ -93,22 +99,43 @@ class Request:
|
|||||||
|
|
||||||
self.method = method
|
self.method = method
|
||||||
self.url = url
|
self.url = url
|
||||||
self.params = params
|
if 'content' in params:
|
||||||
|
self.body = params['content']
|
||||||
|
else:
|
||||||
|
self.body = None
|
||||||
|
|
||||||
|
self.query_string = ''
|
||||||
|
self.qs_dict = params
|
||||||
|
for key in params:
|
||||||
|
# percent encode all of our values before we construct the query string
|
||||||
|
key = quote(key)
|
||||||
|
value = quote(str(params[key]))
|
||||||
|
if key == 'content':
|
||||||
|
self.body = params['content']
|
||||||
|
else:
|
||||||
|
value = params[key]
|
||||||
|
if len(self.query_string) == 0:
|
||||||
|
self.query_string += f'?{key}={value}'
|
||||||
|
else:
|
||||||
|
self.query_string += f'&{key}={value}'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _make_request(self, method: str, hope: int):
|
def _make_request(self, method: str, hope: int):
|
||||||
# Lower driver for actuall making the request we are looking for
|
# Lower driver for actuall making the request we are looking for
|
||||||
method = method.lower()
|
method = method.lower()
|
||||||
|
|
||||||
params = json.dumps(self.params)
|
url = self.url + self.query_string
|
||||||
|
raw_params = (self.query_string, self.qs_dict)
|
||||||
if method == 'get':
|
if method == 'get':
|
||||||
resp = requests.get(self.url, data=params)
|
resp = requests.get(url)
|
||||||
return Response('get', self.url, resp.text, resp.status_code, hope)
|
return Response('get', url, resp.text, resp.status_code, hope, p=raw_params)
|
||||||
elif method == 'post':
|
elif method == 'post':
|
||||||
resp = requests.post(self.url, data=params)
|
resp = requests.post(url, data=self.body)
|
||||||
return Response('post', self.url, resp.text, resp.status_code, hope)
|
return Response('post', url, resp.text, resp.status_code, hope, p=raw_params)
|
||||||
elif method == 'delete':
|
elif method == 'delete':
|
||||||
resp = requests.delete(self.url, data=params)
|
resp = requests.delete(url)
|
||||||
return Response('delete', self.url, resp.text, resp.status_code, hope)
|
return Response('delete', url, resp.text, resp.status_code, hope, p=raw_params)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise RequestError('Invalid method passed')
|
raise RequestError('Invalid method passed')
|
||||||
|
Loading…
Reference in New Issue
Block a user