36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
import logging
|
|
import sys
|
|
|
|
from client import command as cmd
|
|
from httplib.exceptions import UnhandledHTTPCode
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='HTTP Client')
|
|
parser.add_argument("--verbose", "-v", action='count', default=0, help="Increase verbosity level of logging")
|
|
parser.add_argument("--command", "-c", help="HEAD, GET, PUT or POST", default="GET")
|
|
parser.add_argument("--port", "-p", help="The port used to connect with the server", default=80, type=int)
|
|
parser.add_argument("URI", help="The URI to connect to")
|
|
|
|
arguments = parser.parse_args()
|
|
|
|
# Setup logging
|
|
logging.basicConfig(level=logging.INFO - (10 * arguments.verbose), format="[%(levelname)s] %(message)s")
|
|
logging.debug("Arguments: %s", arguments)
|
|
|
|
command = cmd.create(arguments.command, arguments.URI, arguments.port)
|
|
command.execute()
|
|
|
|
|
|
try:
|
|
main()
|
|
except UnhandledHTTPCode as e:
|
|
logging.info(f"[{e.status_code}] {e.cause}:\r\n{e.headers}")
|
|
sys.exit(2)
|
|
except Exception as e:
|
|
logging.info("[ABRT] Internal error: %s", e)
|
|
logging.debug("Internal error", exc_info=e)
|
|
sys.exit(1)
|