def _store_page( pipeline: redis.client.Pipeline, date: str, expire: int, url: urllib.parse.ParseResult, ) -> None: key: str = f"stats:page:{date}" pipeline.zincrby(key, 1, url.path) pipeline.expireat(key, expire)
def _store_browser(pipeline: redis.client.Pipeline, date: str, expire: int) -> None: browser: Optional[str] = flask.request.user_agent.browser if browser is not None: browser_key: str = f"stats:browser:{date}" pipeline.zincrby(browser_key, 1, browser) pipeline.expireat(browser_key, expire) version: Optional[str] = flask.request.user_agent.version if version is not None: version_key: str = f"stats:{browser}:{date}" pipeline.zincrby(version_key, 1, version) pipeline.expireat(version_key, expire)
def _store_referrer(pipeline: redis.client.Pipeline, date: str, expire: int) -> None: referrer: Optional[str] = flask.request.referrer if referrer is not None: try: referrer_url: urllib.parse.ParseResult = urllib.parse.urlparse( flask.request.url) except: pass else: key: str = f"stats:referrers:{date}" pipeline.zincrby(key, 1, referrer_url.netloc) pipeline.expireat(key, expire)
def _store_os(pipeline: redis.client.Pipeline, date: str, expire: int) -> None: os: Optional[str] = flask.request.user_agent.platform if os is not None: key: str = f"stats:os:{date}" pipeline.zincrby(key, 1, os) pipeline.expireat(key, expire)