|
|
@ -1,16 +1,22 @@ |
|
|
|
|
|
import logging |
|
|
from urllib.parse import urljoin |
|
|
from urllib.parse import urljoin |
|
|
|
|
|
|
|
|
import requests |
|
|
import requests |
|
|
|
|
|
from lxml import etree |
|
|
from lxml.html import fromstring as lxml_from_string |
|
|
from lxml.html import fromstring as lxml_from_string |
|
|
|
|
|
|
|
|
from panera_shifts.fill_form import get_form_fields |
|
|
from panera_shifts.fill_form import get_form_fields |
|
|
from panera_shifts.saml_check import saml_check |
|
|
from panera_shifts.saml_check import saml_check |
|
|
|
|
|
|
|
|
PANERA_URL = "https://pantry.panerabread.com" |
|
|
PANERA_URL = "https://pantry.panerabread.com" |
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_login_page(session: requests.Session): |
|
|
def get_login_page(session: requests.Session): |
|
|
|
|
|
logger.debug("Getting login page") |
|
|
landing = session.get(PANERA_URL) |
|
|
landing = session.get(PANERA_URL) |
|
|
|
|
|
if landing.status_code == 200: |
|
|
|
|
|
logger.debug("Got landing page") |
|
|
return saml_check(session, landing) |
|
|
return saml_check(session, landing) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -18,7 +24,10 @@ def login_user(session, username, password): |
|
|
response = get_login_page(session) |
|
|
response = get_login_page(session) |
|
|
parsed = lxml_from_string(response.text) |
|
|
parsed = lxml_from_string(response.text) |
|
|
form = parsed.xpath("//form")[0] |
|
|
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) |
|
|
post_url, to_send = get_form_fields(form) |
|
|
|
|
|
logger.debug(f"Form fields: {to_send}") |
|
|
to_send["username"] = username |
|
|
to_send["username"] = username |
|
|
to_send["password"] = password |
|
|
to_send["password"] = password |
|
|
|
|
|
|
|
|
@ -29,4 +38,7 @@ def login_user(session, username, password): |
|
|
"Referer": "https://pantry.panerabread.com/", |
|
|
"Referer": "https://pantry.panerabread.com/", |
|
|
} |
|
|
} |
|
|
r = session.post(post_url, data=to_send, headers=headers) |
|
|
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) |
|
|
return saml_check(session, r) |