mirror of
https://github.com/internetarchive/warcprox.git
synced 2025-01-18 13:22:09 +01:00
new api, http://{warcprox_host}:{port}/status returns status info json
This commit is contained in:
parent
a2f11f4e66
commit
8caae0d7d3
2
setup.py
2
setup.py
@ -51,7 +51,7 @@ except:
|
|||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name='warcprox',
|
name='warcprox',
|
||||||
version='2.1b1.dev58',
|
version='2.1b1.dev59',
|
||||||
description='WARC writing MITM HTTP/S proxy',
|
description='WARC writing MITM HTTP/S proxy',
|
||||||
url='https://github.com/internetarchive/warcprox',
|
url='https://github.com/internetarchive/warcprox',
|
||||||
author='Noah Levitt',
|
author='Noah Levitt',
|
||||||
|
@ -1279,6 +1279,18 @@ def test_dedup_ok_flag(
|
|||||||
assert results[0]['filename'] == results[1]['filename']
|
assert results[0]['filename'] == results[1]['filename']
|
||||||
assert results[0]['offset'] < results[1]['offset']
|
assert results[0]['offset'] < results[1]['offset']
|
||||||
|
|
||||||
|
def test_status_api(warcprox_):
|
||||||
|
url = 'http://localhost:%s/status' % warcprox_.proxy.server_port
|
||||||
|
response = requests.get(url)
|
||||||
|
assert response.status_code == 200
|
||||||
|
response_dict = json.loads(response.content.decode('ascii'))
|
||||||
|
assert response_dict.keys() == {
|
||||||
|
'role', 'version', 'host', 'address', 'port', 'pid', 'load',
|
||||||
|
'queue_size'}
|
||||||
|
assert response_dict['role'] == 'warcprox'
|
||||||
|
assert response_dict['version'] == warcprox.__version__
|
||||||
|
assert response_dict['port'] == warcprox_.proxy.server_port
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
pytest.main()
|
pytest.main()
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ import warcprox
|
|||||||
import datetime
|
import datetime
|
||||||
import ipaddress
|
import ipaddress
|
||||||
import urlcanon
|
import urlcanon
|
||||||
|
import os
|
||||||
|
|
||||||
class WarcProxyHandler(warcprox.mitmproxy.MitmProxyHandler):
|
class WarcProxyHandler(warcprox.mitmproxy.MitmProxyHandler):
|
||||||
'''
|
'''
|
||||||
@ -198,6 +199,29 @@ class WarcProxyHandler(warcprox.mitmproxy.MitmProxyHandler):
|
|||||||
|
|
||||||
return recorded_url
|
return recorded_url
|
||||||
|
|
||||||
|
def do_GET(self):
|
||||||
|
if self.path == '/status' and self.command == 'GET':
|
||||||
|
status_info = {
|
||||||
|
'role': 'warcprox',
|
||||||
|
'version': warcprox.__version__,
|
||||||
|
'host': socket.gethostname(),
|
||||||
|
'address': self.connection.getsockname()[0],
|
||||||
|
'port': self.connection.getsockname()[1],
|
||||||
|
'load': 1.0 * self.server.recorded_url_q.qsize() / (
|
||||||
|
self.server.recorded_url_q.maxsize or 100),
|
||||||
|
'queue_size': self.server.recorded_url_q.qsize(),
|
||||||
|
'pid': os.getpid(),
|
||||||
|
}
|
||||||
|
payload = json.dumps(
|
||||||
|
status_info, indent=2).encode('utf-8') + b'\n'
|
||||||
|
self.send_response(200, 'OK')
|
||||||
|
self.send_header('Content-type', 'application/json')
|
||||||
|
self.send_header('Content-Length', len(payload))
|
||||||
|
self.end_headers()
|
||||||
|
self.wfile.write(payload)
|
||||||
|
else:
|
||||||
|
self.do_COMMAND()
|
||||||
|
|
||||||
# deprecated
|
# deprecated
|
||||||
def do_PUTMETA(self):
|
def do_PUTMETA(self):
|
||||||
'''
|
'''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user