db8c9df33c
(user-agent parsing has been removed in Werkzeug 2.1)
25 lines
737 B
Python
25 lines
737 B
Python
from typing import Optional, Tuple
|
|
|
|
from flask import Request
|
|
from ua_parser import user_agent_parser
|
|
from werkzeug.user_agent import UserAgent as IUserAgent
|
|
|
|
|
|
class UserAgent(IUserAgent):
|
|
def __init__(self, string: str):
|
|
super().__init__(string)
|
|
self.platform, self.browser = self._parse_user_agent(self.string)
|
|
|
|
@staticmethod
|
|
def _parse_user_agent(
|
|
user_agent: str,
|
|
) -> Tuple[Optional[str], Optional[str]]:
|
|
parsed_string = user_agent_parser.Parse(user_agent)
|
|
platform = parsed_string.get('os', {}).get('family')
|
|
browser = parsed_string.get('user_agent', {}).get('family')
|
|
return platform, browser
|
|
|
|
|
|
class CustomRequest(Request):
|
|
user_agent_class = UserAgent
|