def get(host, path): """Sends HTTP GET using HttpClient and returns the request response body. :param host: host ip addr :param path: resource endpoint path :return: response body """ print('Sending GET ' + path + ' HTTP/1.1 request to ' + host) window.refresh() c = HttpClient(49512) req = c.create_get_request(host, path) logger.debug('GET request created.') logger.debug(req) res = c.request(bytes(req), host) print('Response: ' + res.split(b'\r\n')[0].decode()) window.refresh() return res
def post(host, path, data): """Sends POST request using HttpClient and the data from GUI form. :param host: host ip addr :param path: resource endpoint path :param data: data to be sent as body of the POST request :return: HTTP response body """ cover = open(data, 'rb').read() print('Sending POST ' + path + ' HTTP/1.1 request to ' + host) window.refresh() print('RSTEG not activated.') window.refresh() c = HttpClient(49512) req = c.create_post_request(host, path, cover, 'image/jpg') res = c.request(bytes(req), host) print('Response: ' + res.split(b'\r\n')[0].decode()) window.refresh() return res
from html_parser import HTMLStatsCollector from http_client import HttpClient argp = argparse.ArgumentParser() argp.add_argument('-n', '--hostname', help='Host to request. For example: "python.org"') argp.add_argument( '-p', '--path', help='URL path after hostname. For example: "search/?q=macos&submit="') args = argp.parse_args() client = HttpClient() response = client.request('GET', host=args.hostname, path=args.path) parser = HTMLStatsCollector() parser.feed(response.body) result = parser.get_result() print('Tags:') for key, value in result['tags'].items(): print(f'{key}: {value}') print() print(f'Most frequent tag: {result["most_frequent"]}\n') print('Links:') for link in result['links']: print(link) print() print('Images:')