diff --git a/panera_sync/main_loop.py b/panera_sync/main_loop.py index 72097e6..3c59ccd 100644 --- a/panera_sync/main_loop.py +++ b/panera_sync/main_loop.py @@ -1,8 +1,15 @@ import lxml import requests +import datetime from panera_sync.saml_check import saml_check from panera_sync.login import login_user +from panera_sync.oauth_required import ( + get_bearer_token, + get_cafe_id, + get_iBOH_id, + get_shifts, +) PANERA_URL = "https://pantry.panerabread.com" @@ -17,3 +24,10 @@ def login(username, password): login_page = get_login_page(session) login_user(session, login_page, username, password) return session + + +def get_shifts_between(session, start_date: datetime.date, end_date: datetime.date): + bearer_token = get_bearer_token(session) + cafe_id = get_cafe_id(session) + iBOH_id = get_iBOH_id(session, bearer_token) + return get_shifts(session, bearer_token, iBOH_id, cafe_id, start_date, end_date) diff --git a/panera_sync/oauth_required.py b/panera_sync/oauth_required.py new file mode 100644 index 0000000..9e20359 --- /dev/null +++ b/panera_sync/oauth_required.py @@ -0,0 +1,49 @@ +import json +from panera_sync.user import get_signed_in_user +import datetime + + +def get_bearer_token(session): + user_data = get_signed_in_user(session) + return user_data["oauthToken"]["id_token"] + + +def get_cafe_id(session): + user_data = get_signed_in_user(session) + data = user_data["department"] + cafe, useless = data.split("-") + return cafe + + +def get_iBOH_id(session, bearer_token): + headers = {"authorization": f"Bearer {bearer_token}"} + r = session.get( + "https://pantry.panerabread.com/apis/pantry-ui-service/user-profile/v1/user/ibohid", + headers=headers, + ) + data = json.loads(r.text) + return data["ibohid"] + + +def get_shifts( + session, + bearer_token, + iBOH_id, + cafe_id, + start_date: datetime.date, + end_date: datetime.date, +): + headers = {"authorization": f"Bearer {bearer_token}"} + + base_url = f"https://iportal.panerabread.com/pantry-apis/scheduling-ui-service/associate/{iBOH_id}/shifts" + + query = { + "cafeNo": cafe_id, + "withHistory": True, + "startDate": start_date.strftime("%Y-%m-%d"), + "endDate": end_date.strftime("%Y-%m-%d"), + } + + r = session.get(base_url, params=query, headers=headers) + breakpoint() + return json.loads(r.text) diff --git a/panera_sync/user.py b/panera_sync/user.py index e69de29..951d354 100644 --- a/panera_sync/user.py +++ b/panera_sync/user.py @@ -0,0 +1,6 @@ +import json + + +def get_signed_in_user(session): + r = session.get("https://pantry.panerabread.com/session/user") + return json.loads(r.text)