Skip to content

Conversation

@yechan-kim
Copy link
Member

@yechan-kim yechan-kim commented Dec 29, 2025

1. 무슨 이유로 코드를 변경했나요?

OCI Object Storage를 이용한 파일 업로드 기능을 구현합니다.

2. 어떤 위험이나 장애를 발견했나요?


3. 관련 스크린샷을 첨부해주세요.

image

4. 완료 사항

  • OCI Object Storage를 이용한 파일 업로드 기능 구현

5. 추가 사항

  • 파일 이름을 기반으로 버킷 주소를 반환하는 유틸성 기능을 미리 만들어뒀습니다. 추후에 관련 기능을 구현하실 때 참고하시기 바랍니다.
  • 인프라 관련된 사항은 추후에 작업하여 comment에 추가하도록 하겠습니다.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements file upload functionality using OCI Object Storage through pre-authenticated URLs. The implementation allows clients to request temporary upload URLs with a 15-minute expiration time, enabling direct file uploads to OCI without exposing permanent credentials.

  • Added OCI Object Storage client configuration with authentication setup
  • Implemented pre-authenticated URL generation with unique file naming
  • Created utility function for retrieving object URLs from bucket
  • Secured the new endpoint with user role authorization

Reviewed changes

Copilot reviewed 10 out of 12 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
build.gradle.kts Added OCI SDK dependencies for Object Storage integration
.gitignore Excluded private key files (.pem) from version control
src/main/resources/application.yml Added OCI configuration properties for tenant, user, region, and bucket settings
src/main/kotlin/land/leets/global/config/OciConfig.kt Configured OCI ObjectStorage client bean with authentication provider
src/main/kotlin/land/leets/global/config/SecurityConfig.kt Added authorization rule for the pre-authenticated URL endpoint
src/main/kotlin/land/leets/domain/storage/usecase/GetPreAuthenticatedUrl.kt Defined interface for pre-authenticated URL generation use case
src/main/kotlin/land/leets/domain/storage/usecase/GetPreAuthenticatedUrlImpl.kt Implemented pre-authenticated URL generation with UUID-based unique file naming
src/main/kotlin/land/leets/domain/storage/usecase/GetObjectUrl.kt Defined interface for object URL retrieval utility
src/main/kotlin/land/leets/domain/storage/usecase/GetObjectUrlImpl.kt Implemented object URL construction from file name
src/main/kotlin/land/leets/domain/storage/presentation/dto/PreAuthenticatedUrlResponse.kt Created response DTO for pre-authenticated URL
src/main/kotlin/land/leets/domain/storage/presentation/StorageController.kt Exposed POST endpoint for pre-authenticated URL generation
src/test/kotlin/land/leets/domain/storage/usecase/GetPreAuthenticatedUrlImplTest.kt Added unit tests for pre-authenticated URL generation

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Member

@jwnnoh jwnnoh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨어요! 코멘트 참고 부탁드려요 ㅎㅎ

Copy link
Member

@rootTiket rootTiket left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~ 코멘트 한번 읽어주시면 감사할 것 같아요 :)

Copy link
Member

@jwnnoh jwnnoh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

상수 위치만 변경하면 될 것 같아요~!

@yechan-kim yechan-kim requested review from jwnnoh and rootTiket January 1, 2026 10:08
Copy link
Member

@rootTiket rootTiket left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셧습니다~

@yechan-kim yechan-kim merged commit b532b3f into main Jan 4, 2026
1 check passed
@yechan-kim yechan-kim deleted the feat/#86 branch January 4, 2026 05:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] 파일 업로드 기능 구현

4 participants