diff --git a/zerver/lib/user_agent.py b/zerver/lib/user_agent.py index 5aa5156b6f..2f2496a3d5 100644 --- a/zerver/lib/user_agent.py +++ b/zerver/lib/user_agent.py @@ -4,11 +4,13 @@ from typing import Dict # Warning: If you change this parsing, please test using # zerver/tests/test_decorators.py # And extend zerver/tests/fixtures/user_agents_unique with any new test cases +pattern = re.compile( + """^ (?P [^/ ]* [^0-9/(]* ) + (/ (?P [^/ ]* ))? + ([ /] .*)? + $""", re.X) + def parse_user_agent(user_agent: str) -> Dict[str, str]: - match = re.match( - """^ (?P [^/ ]* [^0-9/(]* ) - (/ (?P [^/ ]* ))? - ([ /] .*)? - $""", user_agent, re.X) + match = pattern.match(user_agent) assert match is not None return match.groupdict()