Browse Source

Added logging

master
Raphael Roberts 5 years ago
parent
commit
24b73647cb
  1. 14
      panera_shifts/__init__.py
  2. 12
      panera_shifts/login.py
  3. 5
      panera_shifts/saml_check.py
  4. 4
      panera_shifts/user.py

14
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

12
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)

5
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)

4
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)
Loading…
Cancel
Save