39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional, Dict, Any, List
|
|
|
|
# ================ Google ================
|
|
class GoogleUserInfo(BaseModel):
|
|
"""Google 사용자 정보"""
|
|
provider: str = "google"
|
|
provider_id: str
|
|
email: Optional[str] = None
|
|
name: Optional[str] = None
|
|
picture: Optional[str] = None
|
|
raw_data: Dict[str, Any] = {}
|
|
|
|
class GoogleTokenResponse(BaseModel):
|
|
"""Google OAuth 토큰 응답"""
|
|
access_token: str
|
|
refresh_token: Optional[str] = None
|
|
expires_at: Optional[str] = None
|
|
token_type: str
|
|
user_info: GoogleUserInfo
|
|
scopes: Optional[List[str]] = None
|
|
|
|
class GoogleCallbackResponse(BaseModel):
|
|
"""Google OAuth 콜백 응답"""
|
|
message: str
|
|
temp_token_id: str
|
|
return_url: Optional[str] = None
|
|
user_info: GoogleUserInfo
|
|
|
|
class GoogleLoginRequest(BaseModel):
|
|
"""Google 로그인 요청"""
|
|
return_url: Optional[str] = None
|
|
|
|
class GoogleHealthResponse(BaseModel):
|
|
"""Google OAuth 헬스체크 응답"""
|
|
status: str
|
|
provider: str = "google"
|
|
message: str
|
|
redis_health: Optional[Dict[str, Any]] = None |