Skip to content

Commit

Permalink
feat: 외부 API 호출 기능 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
wonyangs committed Sep 9, 2024
1 parent 83ab2a2 commit 3af6e57
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 2 deletions.
24 changes: 22 additions & 2 deletions app/api/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from app.dependencies.token_validation import validate_token
from app.services.s3_upload import get_presigned_url, upload_to_s3, image_get_presigned_url
from app.services.transcode import trigger_transcode_job
from app.services.member_service import patch_member
from app.core.config import settings

router = APIRouter()
Expand Down Expand Up @@ -34,9 +35,15 @@ async def upload_video(
}


@router.post("/profiles/")
@router.patch("/members/")
async def update_member(
file: UploadFile = File(...), # 이미지 파일 업로드
token: str = Depends(validate_token), # 로그인 토큰 확인
nickName: str = Form(...), # 닉네임
instagramId: str = Form(...), # 인스타그램 ID
height: float = Form(...), # 키 (소수점 포함)
gender: str = Form(...), # 성별
reach: float = Form(...) # 리치(팔 길이, 소수점 포함)
):
# Step 1: Get S3 presigned URL from external API for the image upload
presigned_url_data = image_get_presigned_url()
Expand All @@ -46,10 +53,23 @@ async def update_member(
# Step 2: Upload image to S3 using presigned URL
file.file.seek(0)
upload_to_s3(presigned_url, file.file)

# Step 3: Process the member update
member_data = {
"nickName": nickName,
"instagramId": instagramId,
"height": height,
"gender": gender,
"reach": reach,
"profileImageUrl": f"{ settings.cdn_domain }/{ s3_filename }"
}

response = await patch_member(token, member_data)

return {
"message": "Member updated successfully",
"profileImageUrl": f"{ settings.cdn_domain }/{ s3_filename }"
"member_data": member_data,
"response": response
}


Expand Down
21 changes: 21 additions & 0 deletions app/services/member_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from app.core.config import settings
import httpx

API_BASE_URL = settings.api_base_url
MEMBER_PATCH_ENDPOINT = "/members"

async def patch_member(token: str, member_data: dict):
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

async with httpx.AsyncClient() as client:
response = await client.patch(
f"{API_BASE_URL}{MEMBER_PATCH_ENDPOINT}",
json=member_data,
headers=headers
)
response.raise_for_status()

return response.json()

0 comments on commit 3af6e57

Please sign in to comment.