You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
917 B

  1. from lxml.html import fromstring as lxml_from_string
  2. from urllib.parse import urljoin
  3. import requests
  4. from panera_sync.saml_check import saml_check
  5. from panera_sync.fill_form import get_form_fields
  6. PANERA_URL = "https://pantry.panerabread.com"
  7. def get_login_page(session: requests.Session):
  8. landing = session.get(PANERA_URL)
  9. return saml_check(session, landing)
  10. def login_user(session, username, password):
  11. response = get_login_page(session)
  12. parsed = lxml_from_string(response.text)
  13. form = parsed.xpath("//form")[0]
  14. post_url, to_send = get_form_fields(form)
  15. to_send["username"] = username
  16. to_send["password"] = password
  17. post_url = urljoin(response.url, post_url)
  18. headers = {
  19. "Host": "iso3.panerabread.com",
  20. "Referer": "https://pantry.panerabread.com/",
  21. }
  22. r = session.post(post_url, data=to_send, headers=headers)
  23. return saml_check(session, r)