suna/backend/pipedream/services/external_user_id_service.py

16 lines
681 B
Python

import time
import random
import string
from ..protocols import ExternalUserIdGeneratorService
from ..domain.value_objects import ExternalUserId, AppSlug, ProfileName
class ExternalUserIdService:
def generate(self, account_id: str, app_slug: AppSlug, profile_name: ProfileName) -> ExternalUserId:
timestamp = int(time.time() * 1000)
random_suffix = ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
safe_profile_name = profile_name.value.lower().replace(' ', '_')
external_id = f"{account_id[:8]}_{app_slug.value}_{safe_profile_name}_{timestamp}_{random_suffix}"
return ExternalUserId(external_id)