diff --git a/.gitignore b/.gitignore index f7275bb..409db80 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ venv/ +__pycache__/ +config.json \ No newline at end of file diff --git a/OnePakCLI.py b/OnePakCLI.py new file mode 100644 index 0000000..dcd86af --- /dev/null +++ b/OnePakCLI.py @@ -0,0 +1,25 @@ +import argparse +import json +import OnePakRequests as opr +import re + +with open("config.json") as configFile: + config = json.load(configFile) + + +parser = argparse.ArgumentParser(description='Use the OnePak API.') + +parser.add_argument("--search", action=argparse.BooleanOptionalAction) +parser.add_argument("--cancel", action=argparse.BooleanOptionalAction) +parser.add_argument("--lease", type=str, required=True) + +args = parser.parse_args() + +assert re.match("\d{3}-\d{7}-\d{3}", args.lease) != None , f"Invalid lease number: '{args.lease}'" + +if args.search: + searchResult = opr.retrieve_return_data(args.lease, config["APIKey"]) + print(searchResult) +elif args.cancel: + cancelResult = opr.search_and_cancel(args.lease, config["APIKey"]) + print(cancelResult) \ No newline at end of file diff --git a/OnePakRequests.py b/OnePakRequests.py index 72ae20e..2ca7567 100644 --- a/OnePakRequests.py +++ b/OnePakRequests.py @@ -1,6 +1,6 @@ import requests as rq import re -from logging import debug, error, basicConfig +from logging import debug, error, basicConfig, DEBUG, WARNING, ERROR, INFO import json with open("config.json") as configFile: @@ -17,15 +17,15 @@ def retrieve_return_data(lease_number: str, apiKey: str, details: bool = False) """ debug(f"[I] retrieve_return_data: {lease_number} | deatils: {details}") if re.match("\d{3}-\d{7}-\d{3}", lease_number) == None: - error(f"[!E!] Invalid lease number: {lease_number}") + error(f"[E] Invalid lease number: {lease_number}") return {"error": f"Invalid lease number: {lease_number}"} resp = rq.post(RETURNCENTER_BASE_RL, json={"action": "get", "lease_number": lease_number, "details": "yes" if details else "no"}, headers={"Content-Type": "application/json"}, auth=(apiKey, '')) - if not resp.ok(): - error(f"[!E!] retrieve_return_data: response was unsuccessful: {resp.text}") - return {"error": f"{resp.text}"} + if not resp.ok: + error(f"[E] retrieve_return_data: response was unsuccessful: {resp.text}") + return {"error": f"{resp.status_code} | {resp.text}"} debug(f"[I] retrieve_return_data: resp: {resp}\n{resp.json()}") return dict(resp.json()) @@ -42,19 +42,19 @@ def cancel_return(ra_number: str, apiKey: str, cancel_reason: str = "No longer n json={"action": "cancel", "ra_number": ra_number, "reason": cancel_reason}, headers={"Content-Type": "application/json"}, auth=(apiKey, '')) - if not resp.ok(): - error(f"[!E!] cancel_return: response was unsuccessful: {resp.text}") - return {"error": f"{resp.text}"} + if not resp.ok: + error(f"[E] cancel_return: response was unsuccessful: {resp.text}") + return {"error": f"{resp.status_code} | {resp.text}"} debug(f"[I] cancel_return: resp: {resp}\n{resp.json()}") return dict(resp.json()) def search_and_cancel(lease_number: str, apiKey: str, details: bool = False, cancel_reason: str = "No longer needed") -> dict: searchResult = retrieve_return_data(lease_number, apiKey, details, cancel_reason) if "error" in searchResult.keys(): - error(f"[!E!] search_and_cancel: Failed to find lease number: {lease_number}\n{searchResult}") + error(f"[E] search_and_cancel: Failed to find lease number: {lease_number}\n{searchResult}") return searchResult cancelresult = cancel_return(searchResult["ra_number"], apiKey, cancel_return) if "error" in cancelresult.keys(): - error(f"[!E!] search_and_cancel: Failed to cancel RA: {lease_number} | {searchResult['ra_number']}\n{cancelresult}") + error(f"[E] search_and_cancel: Failed to cancel RA: {lease_number} | {searchResult['ra_number']}\n{cancelresult}") return searchResult return {"success": "RA has been canceled"} \ No newline at end of file