diff --git a/panera_shifts/__init__.py b/panera_shifts/__init__.py index 6e4a9fe..5871929 100644 --- a/panera_shifts/__init__.py +++ b/panera_shifts/__init__.py @@ -1,4 +1,6 @@ import datetime +import logging +import pprint import requests @@ -11,18 +13,30 @@ from panera_shifts.oauth_required import ( get_timezone, ) +logger = logging.getLogger(__name__) +logger.addHandler(logging.NullHandler()) + def login(username, password): + logger.info("Trying to log in") session = requests.Session() login_user(session, username, password) return session def get_shifts_between(session, start_date: datetime.date, end_date: datetime.date): + logger.info("Started get_shifts_between") bearer_token = get_bearer_token(session) + logger.info("Acquired OAuth bearer token") + logger.debug(f"Bearer token: {bearer_token}") cafe_id = get_cafe_id(session) + logger.debug(f"Cafe id: {cafe_id}") iBOH_id = get_iBOH_id(session, bearer_token) + logger.debug(f"iBOH id: {iBOH_id}") timezone_info = get_timezone(session, bearer_token, cafe_id) + logger.debug(f"Timezone: {timezone_info}") ret = get_shifts(session, bearer_token, iBOH_id, cafe_id, start_date, end_date) ret["data"]["timezone"] = timezone_info["timezone"] + logger.info("Ended get_shifts_between") + logger.debug(pprint.pformat(ret)) return ret diff --git a/panera_shifts/login.py b/panera_shifts/login.py index 154ccba..b629cf5 100644 --- a/panera_shifts/login.py +++ b/panera_shifts/login.py @@ -1,16 +1,22 @@ +import logging from urllib.parse import urljoin import requests +from lxml import etree from lxml.html import fromstring as lxml_from_string from panera_shifts.fill_form import get_form_fields from panera_shifts.saml_check import saml_check PANERA_URL = "https://pantry.panerabread.com" +logger = logging.getLogger(__name__) def get_login_page(session: requests.Session): + logger.debug("Getting login page") landing = session.get(PANERA_URL) + if landing.status_code == 200: + logger.debug("Got landing page") return saml_check(session, landing) @@ -18,7 +24,10 @@ def login_user(session, username, password): response = get_login_page(session) parsed = lxml_from_string(response.text) form = parsed.xpath("//form")[0] + nice = etree.tostring(form, pretty_print=True).decode() + logger.debug(f"Form:\n{nice}") post_url, to_send = get_form_fields(form) + logger.debug(f"Form fields: {to_send}") to_send["username"] = username to_send["password"] = password @@ -29,4 +38,7 @@ def login_user(session, username, password): "Referer": "https://pantry.panerabread.com/", } r = session.post(post_url, data=to_send, headers=headers) + logger.debug(f"Login post response: {r.status_code}") + if r.status_code == 200: + logger.info("Successfully logged in") return saml_check(session, r) diff --git a/panera_shifts/saml_check.py b/panera_shifts/saml_check.py index aefefe0..1f892fe 100644 --- a/panera_shifts/saml_check.py +++ b/panera_shifts/saml_check.py @@ -1,9 +1,12 @@ +import logging from urllib.parse import urlparse from lxml.html import fromstring as lxml_from_string from panera_shifts.fill_form import get_form_fields +logger = logging.getLogger(__name__) + def saml_submit(session, response): origin_url = response.url @@ -15,6 +18,7 @@ def saml_submit(session, response): parsed = lxml_from_string(response.text) form = parsed.xpath("//form")[0] post_url, to_submit = get_form_fields(form) + logging.debug(f"Form fields: {to_submit}") return session.post(post_url, data=to_submit, headers=headers) @@ -23,4 +27,5 @@ def saml_check(session, response, response_text=None): witness = parsed.xpath('//form//input[contains(@name,"SAML")]') if len(witness) != 0: + logger.debug("SAML submit required") return saml_submit(session, response) diff --git a/panera_shifts/user.py b/panera_shifts/user.py index 951d354..52fe58c 100644 --- a/panera_shifts/user.py +++ b/panera_shifts/user.py @@ -1,6 +1,10 @@ import json +import logging + +logger = logging.getLogger(__name__) def get_signed_in_user(session): r = session.get("https://pantry.panerabread.com/session/user") + logger.debug(r.text) return json.loads(r.text)