Files
@ 6fa39f685829
Branch filter:
Location: ChaosStuff/stockcli/stockcli/utils.py - annotation
6fa39f685829
2.0 KiB
text/x-python
Fix stock_amount not being an integer
6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 6d0c2e63f225 | import logging
import string
from operator import attrgetter
from typing import Any, Optional
import click
import requests
from .console import error_console
UNALLOWED_CHARACTERS = str.maketrans(dict((c, None) for c in string.whitespace))
def make_request(method: str, url_path: str, data: Optional[Any] = None) -> Any:
obj = click.get_current_context().obj
session = obj["request_session"]
base_url = obj["base_url"]
requested_url = base_url + url_path
method_function = attrgetter(method)
try:
if data is not None:
response = method_function(session)(requested_url, json=data)
else:
response = method_function(session)(requested_url)
response.raise_for_status()
except requests.Timeout:
logging.error(f"The connection to {requested_url} timed out!")
error_console.print("Connection timed out!")
raise
except requests.ConnectionError:
logging.error(f"Couldn't establish a connection to {requested_url}!")
error_console.print("Couldn't establish a connection!")
raise
except requests.HTTPError:
logging.error(f"{requested_url} sent back an HTTPError")
error_console.print("Got the following error:")
error_message = response.json()["error_message"]
logging.error(error_message)
error_console.print(error_message)
raise
except requests.TooManyRedirects:
logging.error(f"{requested_url} had too many redirects!")
error_console.print("Too many redirects!")
raise
else:
return response.json()
def get_request(url_path: str) -> Any:
return make_request("get", url_path)
def post_request(url_path: str, data: dict[str, Any]) -> Any:
return make_request("post", url_path, data)
def put_request(url_path: str, data: dict[str, Any]) -> Any:
return make_request("put", url_path, data)
def prepare_barcode(barcode: str) -> str:
return barcode.translate(UNALLOWED_CHARACTERS)
|