diff --git a/src/main/document/service/document_service.py b/src/main/document/service/document_service.py index 7c4d3b4..c438d3a 100644 --- a/src/main/document/service/document_service.py +++ b/src/main/document/service/document_service.py @@ -3,25 +3,29 @@ #3. client에게 보낸다. from src.main.document.repository.document_repository import get_all_documents, save_document, get_document -from src.main.user.repository.UserRepository import get_user +from src.main.user.repository.UserRepository import UserRepository from src.main.nft.service.nft_service import process_nft_issuance_with_response from src.main.document.dto.document import saveDocument, documentRequestDto -from src.main.user.service import UserService +from src.main.user.service.UserService import UserService from datetime import datetime import asyncio # 사용자로부터 request 받아서 ~~ async def save_document_service(request: documentRequestDto, user_id: str) : + repo = UserRepository() + service_repo= UserService() upload_date = datetime.now() - - user = UserService.get_user_info(user_id) - user_name = user["nickname"] + + user = service_repo.get_user_info(user_id) + print(user) + user_name = user.nickname + print(user_name) saved = saveDocument( file_id = request.file_id, document_name = request.document_name, - document_image_url="https://image일것 같아?", + document_image_url="https://d1dnmknlj2pdo4.cloudfront.net/blur1.png", introduction=request.introduction, downloads=32, pageNumber=3, @@ -36,7 +40,7 @@ async def save_document_service(request: documentRequestDto, user_id: str) : document_id = save_document(saved) #point & grade 구하기 - user = get_user(user_id) + user = repo.get_user(user_id) point = user.get("point") grade = user.get("nft_grade") user_id = user.get("user_id") diff --git a/src/main/nft/service/nft_service.py b/src/main/nft/service/nft_service.py index 0594800..9b1c2ed 100644 --- a/src/main/nft/service/nft_service.py +++ b/src/main/nft/service/nft_service.py @@ -1,5 +1,5 @@ from src.main.nft.dto.nft_dto import NftResponseDto, NftSaveDto -from src.main.user.repository.UserRepository import get_user +from src.main.user.repository.UserRepository import UserRepository from src.main.nft.repository.nft_repository import save_userDB_nft, save_nfts_bulk from datetime import datetime, timezone, timedelta import asyncio @@ -114,7 +114,8 @@ async def process_nft_issuance_with_response(user_id: str, origin_grade:str, poi grade = await next_grade(origin_grade) #user_id - user = get_user(user_id) + repo = UserRepository() + user = repo.get_user(user_id) # 하나 발급 -> grade의 다음 단계로 받아오게끔 하기 result = await mint_nft_on_xrpl(user, grade, issuser_wallet, issuserAddr) diff --git a/src/main/user/repository/UserRepository.py b/src/main/user/repository/UserRepository.py index f428b9e..e8ce72d 100644 --- a/src/main/user/repository/UserRepository.py +++ b/src/main/user/repository/UserRepository.py @@ -12,34 +12,8 @@ def __init__(self): def find_wallets_by_user_id(self, user_id: str) -> list: wallets = list(self.wallets_collection.find({"user_id": user_id}, {"_id": 0})) return wallets if wallets else [] - - def save_wallet(self, user_id: str, wallet_address: str, point: int = 0, nft_grade: str = "bronze"): - existing = self.wallets_collection.find_one({"user_id": user_id}) - if existing: - self.wallets_collection.update_one( - {"user_id": user_id}, - {"$set": {"address": wallet_address, - "point": point, - "nft_grade": nft_grade}} - ) - return {"message": "Wallet updated", - "user_id": user_id, - "wallet_address": wallet_address, - "point": point, - "nft_grade": nft_grade} - else: - self.wallets_collection.insert_one({"user_id": user_id, - "address": wallet_address, - "point": point, - "nft_grade": nft_grade}) - return {"message": "Wallet created", - "user_id": user_id, - "wallet_address": wallet_address, - "point": point, - "nft_grade": nft_grade} - #db에서 user 가져오기 - def get_user(user_id: str) -> str: + def get_user(self, user_id: str) -> str: client = get_mongo_client() db = client['xrpedia-data'] nft_collection = db['wallets'] diff --git a/src/main/user/service/UserService.py b/src/main/user/service/UserService.py index 89c067b..5f68f48 100644 --- a/src/main/user/service/UserService.py +++ b/src/main/user/service/UserService.py @@ -7,6 +7,10 @@ import os from src.main.user.dto.UserInfoDto import UserInfoResponse from dotenv import load_dotenv +import logging + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) load_dotenv() @@ -22,6 +26,14 @@ def __init__(self): ) self.cognito_client = session.client( 'cognito-idp', + aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID'), + aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY'), + region_name=os.environ.get('AWS_REGION', 'ap-northeast-2') + ) + elif os.environ.get('ENV') == 'local': + self.cognito_client = boto3.client( + 'cognito-idp', + region_name=os.environ.get('AWS_REGION', 'ap-northeast-2') ) else: @@ -30,18 +42,6 @@ def __init__(self): region_name=os.environ.get('AWS_REGION', 'ap-northeast-2') ) - def get_wallets(self, user_id: str): - wallets = self.user_repository.find_wallets_by_user_id(user_id) - if not wallets: - return {"message": "No wallets found for this user"} - return wallets - - async def generate_wallet(self, user_id: str): - wallet = await generate_faucet_wallet(client=client, debug=True) - wallet_address = wallet.classic_address - result = self.user_repository.save_wallet(user_id, wallet_address) - return result - def get_account_info(self, client: JsonRpcClient, address: str, **kwargs) -> dict: """ XRPL 네트워크에서 이 계정의 정보를 가져옵니다. @@ -74,14 +74,16 @@ def get_account_transactions(self, client: JsonRpcClient, address: str, limit: i def get_user_info(self, user_id: str) -> UserInfoResponse: # Cognito에서 nickname 조회 - nickname = "Unknown" - try: - if self.user_pool_id: + nickname = "오은진" + logger.info(f"userpoolid: {self.user_pool_id}") + if self.user_pool_id: # Cognito 사용자 풀에서 사용자 정보 조회 response = self.cognito_client.list_users( UserPoolId=self.user_pool_id, Filter=f'sub = "{user_id}"' ) + + logger.info(response) if response.get('Users') and len(response['Users']) > 0: # 사용자의 속성에서 nickname 찾기 @@ -89,8 +91,22 @@ def get_user_info(self, user_id: str) -> UserInfoResponse: if attr['Name'] == 'nickname': nickname = attr['Value'] break - except Exception as e: - print(f"Error fetching user from Cognito: {str(e)}") + # try: + # if self.user_pool_id: + # # Cognito 사용자 풀에서 사용자 정보 조회 + # response = self.cognito_client.list_users( + # UserPoolId=self.user_pool_id, + # Filter=f'sub = "{user_id}"' + # ) + + # if response.get('Users') and len(response['Users']) > 0: + # # 사용자의 속성에서 nickname 찾기 + # for attr in response['Users'][0].get('Attributes', []): + # if attr['Name'] == 'nickname': + # nickname = attr['Value'] + # break + # except Exception as e: + # print(f"Error fetching user from Cognito: {str(e)}") # MongoDB에서 사용자의 지갑 주소 조회 # point = 0.0