| """ |
| Statsig ID generator for reverse interfaces. |
| """ |
|
|
| import base64 |
| import random |
| import string |
|
|
| from app.core.logger import logger |
| from app.core.config import get_config |
|
|
|
|
| class StatsigGenerator: |
| """Statsig ID generator for reverse interfaces.""" |
|
|
| @staticmethod |
| def _rand(length: int, alphanumeric: bool = False) -> str: |
| """Generate random string.""" |
| chars = ( |
| string.ascii_lowercase + string.digits |
| if alphanumeric |
| else string.ascii_lowercase |
| ) |
| return "".join(random.choices(chars, k=length)) |
|
|
| @staticmethod |
| def gen_id() -> str: |
| """ |
| Generate Statsig ID. |
| |
| Returns: |
| Base64 encoded ID. |
| """ |
| dynamic = get_config("app.dynamic_statsig") |
|
|
| |
| if dynamic: |
| logger.debug("Generating dynamic Statsig ID") |
| |
| if random.choice([True, False]): |
| rand = StatsigGenerator._rand(5, alphanumeric=True) |
| message = f"e:TypeError: Cannot read properties of null (reading 'children['{rand}']')" |
| else: |
| rand = StatsigGenerator._rand(10) |
| message = ( |
| f"e:TypeError: Cannot read properties of undefined (reading '{rand}')" |
| ) |
|
|
| return base64.b64encode(message.encode()).decode() |
|
|
| |
| logger.debug("Generating static Statsig ID") |
| return "ZTpUeXBlRXJyb3I6IENhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgdW5kZWZpbmVkIChyZWFkaW5nICdjaGlsZE5vZGVzJyk=" |
|
|
|
|
| __all__ = ["StatsigGenerator"] |
|
|