Skip to content

[feat] IPFS 연동을 통한 캡슐 컨텐츠 업로드 및 메타데이터 저장#23

Open
junjinyun wants to merge 13 commits intomainfrom
feat/#19
Open

[feat] IPFS 연동을 통한 캡슐 컨텐츠 업로드 및 메타데이터 저장#23
junjinyun wants to merge 13 commits intomainfrom
feat/#19

Conversation

@junjinyun
Copy link
Copy Markdown
Contributor

@junjinyun junjinyun commented Jul 20, 2025

[feat] IPFS 연동을 통한 캡슐 컨텐츠 업로드 및 메타데이터 저장

😺 Issue

✅ 작업 리스트

  • content 관련 service, entity, repository, dto, controller 생성
  • ErrorCode 에 대응하는 커스텀 에러 추가
  • SecurityUtil 이용하여 UserService 에 userid 추출하는 기능 추가
  • IPFS 담당 클래스 global 에 생성 및 연동하여, 콘텐츠 업로드, 핀해제 및 gc 요청, 다운로드 하는 기능 추가
  • application.yml 에 ipfs url 추가
  • 테스트 코드 작성하여 각 기능 빠르게 테스트 하게 구현

⚙️ 작업 내용

  • service에서 메타데이터는 직접 처리하고, 컨텐츠 상호작용은 IpfsClient에 필요한 정보(ex: 해시,파일 등)를 넘겨줘서 처리하며 기능으로
  1. 캡슐(콘텐츠, 메타데이터) 업로드
  2. 메타데이터의 id 기반 메타데이터 조회
  3. 유저id 로 유저의 모든 메타데이터 조회
  4. 특정 메타데이터의 일부 정보(title,description) 수정
  5. 캡슐 삭제
  6. 캡슐 조회 의 기능을 가짐
  • 메타데이터는 클라이언트에서 title, description, category 와 같은 요소를 넘겨 받고 컨텐츠를 IPFS에 업로드 후 hash, fileName, fileSize 를 받아 둘을 결합하여 DB에 저장하며, userid를 입력해 소유자가 누구인지 식별

  • METADATA_NOT_FOUND, FILE_NOT_FOUND, ACCESS_DENIED 등의 커스텀 에러를 추가

  • IpfsClient에서는 RestTemplate의 post를 사용해서 업로드, 다운로드, 핀해제 등의 요소를 처리

  • application.yml 에 ipfs url 속성을 추가해 env 파일의 값만 바꾸면 전체에 반영됨

  • SecurityUtil 의 getCurrentUsername 과 UserService 에 추가된 getUserIdByUsername 을 통해 ContentController에서 userid를 jwt를 통해서 추출하여 사용

📷 테스트 / 구현 내용

image image

junjinyun added 11 commits July 18, 2025 23:35
값 수정 기능은 추후 JWT 이용해서 접근하는 유저의 id를 가져와 메타데이터의 id와 동일한 경우에만 수정 가능하게 변경 할 예정
…를 기반으로 보안처리 및 유저 식별하여 코드 실행하게 수정
DB에 메타데이터로 해시값을 저장함 에 따라 과정, 코드 간결화 하기 위함 + 혹시 모를 오류 방지를 위해 업로드 시 핀 설정은 해제 상태로 업로드(추후 운영단계에서 true로 수정)
@junjinyun junjinyun self-assigned this Jul 20, 2025
@junjinyun junjinyun added 👾 feat 새 기능 / New features 🐯 준진 labels Jul 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐯 준진 👾 feat 새 기능 / New features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant