Browse Source

Everything seems to work just fine

master
Raphael Roberts 5 years ago
parent
commit
c2b7f6a959
  1. 14
      panera_sync/main_loop.py
  2. 49
      panera_sync/oauth_required.py
  3. 6
      panera_sync/user.py

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

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

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