Skip to content

Commit a2bedd2

Browse files
committed
FLAGSAPI-1091 Remove lxml dependency
1 parent 8c6cd92 commit a2bedd2

File tree

3 files changed

+21
-116
lines changed

3 files changed

+21
-116
lines changed

poetry.lock

Lines changed: 1 addition & 109 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

proxygen_cli/lib/auth.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,30 @@
44
import uuid
55
from time import time
66
from urllib.parse import parse_qs, urlparse
7+
from html.parser import HTMLParser
78

89
import jwt
910
import requests
10-
from lxml import html
1111

1212
from .credentials import get_credentials
1313
from .dot_proxygen import token_cache_file
1414

1515

16+
class KeycloakFormParser(HTMLParser):
17+
action = None
18+
19+
def handle_starttag(self, tag, attrs):
20+
if tag != 'form':
21+
return
22+
23+
attributes = dict(attrs)
24+
25+
if attributes.get('id') != "kc-form-login":
26+
return
27+
28+
self.action = attributes.get('action')
29+
30+
1631
def cache_key():
1732
s = get_credentials().json()
1833
return hashlib.md5(s.encode("utf-8")).hexdigest()
@@ -106,11 +121,10 @@ def _get_token_data_from_user_login():
106121
f"Login page get request status was {login_page_resp.status_code} expected to be 200"
107122
)
108123

109-
login_form = html.fromstring(login_page_resp.content.decode()).get_element_by_id(
110-
"kc-form-login"
111-
)
124+
parser = KeycloakFormParser()
125+
parser.feed(login_page_resp.content.decode())
126+
url = parser.action
112127

113-
url = login_form.action
114128
user_login_resp = session.post(
115129
url,
116130
headers={
@@ -180,4 +194,4 @@ def _get_token_data_from_machine_user():
180194
raise RuntimeError(
181195
f"Token response was {token_response.status_code} expected 200"
182196
)
183-
return token_response.json()
197+
return token_response.json()

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ pydantic = "^1.9.1"
1616
click = "^8.1.3"
1717
pyjwt = "^2.3.0"
1818
requests = "^2.27.1"
19-
lxml = "^4.7.1"
2019
cryptography = ">=42,<44"
2120
pyyaml = "^6.0"
2221
yaspin = "^2.2.0"

0 commit comments

Comments
 (0)