Skip to content
This repository has been archived by the owner on Apr 23, 2024. It is now read-only.

Commit

Permalink
add basic request/response logging capability (#168)
Browse files Browse the repository at this point in the history
  • Loading branch information
SebRut committed May 27, 2021
1 parent 88f0009 commit c0a6b1f
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 5 deletions.
20 changes: 16 additions & 4 deletions pygrocy/grocy.py
@@ -1,3 +1,4 @@
import logging
from datetime import datetime
from typing import List

Expand Down Expand Up @@ -25,12 +26,23 @@
from .grocy_api_client import UserDto # noqa: F401
from .grocy_api_client import DEFAULT_PORT_NUMBER, GrocyApiClient, TransactionType

_LOGGER = logging.getLogger(__name__)
_LOGGER.setLevel(logging.INFO)


class Grocy(object):
def __init__(
self, base_url, api_key, port: int = DEFAULT_PORT_NUMBER, verify_ssl=True
self,
base_url,
api_key,
port: int = DEFAULT_PORT_NUMBER,
verify_ssl=True,
debug=False,
):
self._api_client = GrocyApiClient(base_url, api_key, port, verify_ssl)
self._api_client = GrocyApiClient(base_url, api_key, port, verify_ssl, debug)

if debug:
_LOGGER.setLevel(logging.DEBUG)

def stock(self) -> List[Product]:
raw_stock = self._api_client.get_stock()
Expand All @@ -42,8 +54,8 @@ def expiring_products(self, get_details: bool = False) -> List[Product]:
return self.due_products(get_details)

def due_products(self, get_details: bool = False) -> List[Product]:
raw_due_prodcuts = self._api_client.get_volatile_stock().due_products
due_products = [Product(resp) for resp in raw_due_prodcuts]
raw_due_products = self._api_client.get_volatile_stock().due_products
due_products = [Product(resp) for resp in raw_due_products]

if get_details:
for item in due_products:
Expand Down
42 changes: 41 additions & 1 deletion pygrocy/grocy_api_client.py
@@ -1,5 +1,6 @@
import base64
import json
import logging
from datetime import datetime
from enum import Enum
from typing import List
Expand All @@ -19,6 +20,9 @@

DEFAULT_PORT_NUMBER = 9192

_LOGGER = logging.getLogger(__name__)
_LOGGER.setLevel(logging.INFO)


class ShoppingListItem(object):
def __init__(self, parsed_json):
Expand Down Expand Up @@ -535,11 +539,35 @@ def __init__(self, parsed_json):
)


def _enable_debug_mode():
_LOGGER.setLevel(logging.DEBUG)

# log http request related data
from http.client import HTTPConnection

HTTPConnection.debuglevel = 1
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True


class GrocyApiClient(object):
def __init__(
self, base_url, api_key, port: int = DEFAULT_PORT_NUMBER, verify_ssl=True
self,
base_url,
api_key,
port: int = DEFAULT_PORT_NUMBER,
verify_ssl=True,
debug=False,
):
if debug:
_enable_debug_mode()

self._base_url = "{}:{}/api/".format(base_url, port)
_LOGGER.debug(f"generated base url: {self._base_url}")

self._api_key = api_key
self._verify_ssl = verify_ssl
if self._api_key == "demo_mode":
Expand All @@ -550,6 +578,9 @@ def __init__(
def _do_get_request(self, end_url: str):
req_url = urljoin(self._base_url, end_url)
resp = requests.get(req_url, verify=self._verify_ssl, headers=self._headers)

_LOGGER.debug(f"response: {resp.content}")

if resp.status_code >= 400:
raise GrocyError(resp)

Expand All @@ -561,6 +592,9 @@ def _do_post_request(self, end_url: str, data: dict):
resp = requests.post(
req_url, verify=self._verify_ssl, headers=self._headers, json=data
)

_LOGGER.debug(f"response: {resp.content}")

if resp.status_code >= 400:
raise GrocyError(resp)
if len(resp.content) > 0:
Expand All @@ -578,6 +612,9 @@ def _do_put_request(self, end_url: str, data):
resp = requests.put(
req_url, verify=self._verify_ssl, headers=up_header, data=data
)

_LOGGER.debug(f"response: {resp.content}")

if resp.status_code >= 400:
raise GrocyError(resp)

Expand All @@ -587,6 +624,9 @@ def _do_put_request(self, end_url: str, data):
def _do_delete_request(self, end_url: str):
req_url = urljoin(self._base_url, end_url)
resp = requests.get(req_url, verify=self._verify_ssl, headers=self._headers)

_LOGGER.debug(f"response: {resp.content}")

if resp.status_code >= 400:
raise GrocyError(resp)

Expand Down

0 comments on commit c0a6b1f

Please sign in to comment.