Skip to content

Commit 5541f84

Browse files
authored
[Feat] nickname (#35)
## 작업 내역 (관련 이슈) - ## 특이 사항 -
2 parents bda8c0d + f73f19a commit 5541f84

4 files changed

Lines changed: 48 additions & 53 deletions

File tree

src/main/document/service/document_service.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,29 @@
33
#3. client에게 보낸다.
44

55
from src.main.document.repository.document_repository import get_all_documents, save_document, get_document
6-
from src.main.user.repository.UserRepository import get_user
6+
from src.main.user.repository.UserRepository import UserRepository
77
from src.main.nft.service.nft_service import process_nft_issuance_with_response
88
from src.main.document.dto.document import saveDocument, documentRequestDto
9-
from src.main.user.service import UserService
9+
from src.main.user.service.UserService import UserService
1010
from datetime import datetime
1111
import asyncio
1212

1313

1414
# 사용자로부터 request 받아서 ~~
1515
async def save_document_service(request: documentRequestDto, user_id: str) :
16+
repo = UserRepository()
17+
service_repo= UserService()
1618
upload_date = datetime.now()
17-
18-
user = UserService.get_user_info(user_id)
19-
user_name = user["nickname"]
19+
20+
user = service_repo.get_user_info(user_id)
21+
print(user)
22+
user_name = user.nickname
23+
print(user_name)
2024

2125
saved = saveDocument(
2226
file_id = request.file_id,
2327
document_name = request.document_name,
24-
document_image_url="https://image일것 같아?",
28+
document_image_url="https://d1dnmknlj2pdo4.cloudfront.net/blur1.png",
2529
introduction=request.introduction,
2630
downloads=32,
2731
pageNumber=3,
@@ -36,7 +40,7 @@ async def save_document_service(request: documentRequestDto, user_id: str) :
3640
document_id = save_document(saved)
3741

3842
#point & grade 구하기
39-
user = get_user(user_id)
43+
user = repo.get_user(user_id)
4044
point = user.get("point")
4145
grade = user.get("nft_grade")
4246
user_id = user.get("user_id")

src/main/nft/service/nft_service.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from src.main.nft.dto.nft_dto import NftResponseDto, NftSaveDto
2-
from src.main.user.repository.UserRepository import get_user
2+
from src.main.user.repository.UserRepository import UserRepository
33
from src.main.nft.repository.nft_repository import save_userDB_nft, save_nfts_bulk
44
from datetime import datetime, timezone, timedelta
55
import asyncio
@@ -114,7 +114,8 @@ async def process_nft_issuance_with_response(user_id: str, origin_grade:str, poi
114114
grade = await next_grade(origin_grade)
115115

116116
#user_id
117-
user = get_user(user_id)
117+
repo = UserRepository()
118+
user = repo.get_user(user_id)
118119

119120
# 하나 발급 -> grade의 다음 단계로 받아오게끔 하기
120121
result = await mint_nft_on_xrpl(user, grade, issuser_wallet, issuserAddr)

src/main/user/repository/UserRepository.py

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,8 @@ def __init__(self):
1212
def find_wallets_by_user_id(self, user_id: str) -> list:
1313
wallets = list(self.wallets_collection.find({"user_id": user_id}, {"_id": 0}))
1414
return wallets if wallets else []
15-
16-
def save_wallet(self, user_id: str, wallet_address: str, point: int = 0, nft_grade: str = "bronze"):
17-
existing = self.wallets_collection.find_one({"user_id": user_id})
18-
if existing:
19-
self.wallets_collection.update_one(
20-
{"user_id": user_id},
21-
{"$set": {"address": wallet_address,
22-
"point": point,
23-
"nft_grade": nft_grade}}
24-
)
25-
return {"message": "Wallet updated",
26-
"user_id": user_id,
27-
"wallet_address": wallet_address,
28-
"point": point,
29-
"nft_grade": nft_grade}
30-
else:
31-
self.wallets_collection.insert_one({"user_id": user_id,
32-
"address": wallet_address,
33-
"point": point,
34-
"nft_grade": nft_grade})
35-
return {"message": "Wallet created",
36-
"user_id": user_id,
37-
"wallet_address": wallet_address,
38-
"point": point,
39-
"nft_grade": nft_grade}
40-
4115
#db에서 user 가져오기
42-
def get_user(user_id: str) -> str:
16+
def get_user(self, user_id: str) -> str:
4317
client = get_mongo_client()
4418
db = client['xrpedia-data']
4519
nft_collection = db['wallets']

src/main/user/service/UserService.py

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
import os
88
from src.main.user.dto.UserInfoDto import UserInfoResponse
99
from dotenv import load_dotenv
10+
import logging
11+
12+
logging.basicConfig(level=logging.INFO)
13+
logger = logging.getLogger(__name__)
1014

1115
load_dotenv()
1216

@@ -22,6 +26,14 @@ def __init__(self):
2226
)
2327
self.cognito_client = session.client(
2428
'cognito-idp',
29+
aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID'),
30+
aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY'),
31+
region_name=os.environ.get('AWS_REGION', 'ap-northeast-2')
32+
)
33+
elif os.environ.get('ENV') == 'local':
34+
self.cognito_client = boto3.client(
35+
'cognito-idp',
36+
2537
region_name=os.environ.get('AWS_REGION', 'ap-northeast-2')
2638
)
2739
else:
@@ -30,18 +42,6 @@ def __init__(self):
3042
region_name=os.environ.get('AWS_REGION', 'ap-northeast-2')
3143
)
3244

33-
def get_wallets(self, user_id: str):
34-
wallets = self.user_repository.find_wallets_by_user_id(user_id)
35-
if not wallets:
36-
return {"message": "No wallets found for this user"}
37-
return wallets
38-
39-
async def generate_wallet(self, user_id: str):
40-
wallet = await generate_faucet_wallet(client=client, debug=True)
41-
wallet_address = wallet.classic_address
42-
result = self.user_repository.save_wallet(user_id, wallet_address)
43-
return result
44-
4545
def get_account_info(self, client: JsonRpcClient, address: str, **kwargs) -> dict:
4646
"""
4747
XRPL 네트워크에서 이 계정의 정보를 가져옵니다.
@@ -74,23 +74,39 @@ def get_account_transactions(self, client: JsonRpcClient, address: str, limit: i
7474

7575
def get_user_info(self, user_id: str) -> UserInfoResponse:
7676
# Cognito에서 nickname 조회
77-
nickname = "Unknown"
78-
try:
79-
if self.user_pool_id:
77+
nickname = "오은진"
78+
logger.info(f"userpoolid: {self.user_pool_id}")
79+
if self.user_pool_id:
8080
# Cognito 사용자 풀에서 사용자 정보 조회
8181
response = self.cognito_client.list_users(
8282
UserPoolId=self.user_pool_id,
8383
Filter=f'sub = "{user_id}"'
8484
)
85+
86+
logger.info(response)
8587

8688
if response.get('Users') and len(response['Users']) > 0:
8789
# 사용자의 속성에서 nickname 찾기
8890
for attr in response['Users'][0].get('Attributes', []):
8991
if attr['Name'] == 'nickname':
9092
nickname = attr['Value']
9193
break
92-
except Exception as e:
93-
print(f"Error fetching user from Cognito: {str(e)}")
94+
# try:
95+
# if self.user_pool_id:
96+
# # Cognito 사용자 풀에서 사용자 정보 조회
97+
# response = self.cognito_client.list_users(
98+
# UserPoolId=self.user_pool_id,
99+
# Filter=f'sub = "{user_id}"'
100+
# )
101+
102+
# if response.get('Users') and len(response['Users']) > 0:
103+
# # 사용자의 속성에서 nickname 찾기
104+
# for attr in response['Users'][0].get('Attributes', []):
105+
# if attr['Name'] == 'nickname':
106+
# nickname = attr['Value']
107+
# break
108+
# except Exception as e:
109+
# print(f"Error fetching user from Cognito: {str(e)}")
94110

95111
# MongoDB에서 사용자의 지갑 주소 조회
96112
# point = 0.0

0 commit comments

Comments
 (0)