mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			20 lines
		
	
	
		
			489 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			489 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| import re
 | |
| 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<name> [^/ ]* [^0-9/(]* )
 | |
|     (/ (?P<version> [^/ ]* ))?
 | |
|     ([ /] .*)?
 | |
|     $""",
 | |
|     re.X,
 | |
| )
 | |
| 
 | |
| 
 | |
| def parse_user_agent(user_agent: str) -> Dict[str, str]:
 | |
|     match = pattern.match(user_agent)
 | |
|     assert match is not None
 | |
|     return match.groupdict()
 |