opgg-hackthon / musicward-server Goto Github PK
View Code? Open in Web Editor NEW게임과 음악을 사랑하는 게이머들을 위한 플레이리스트 공유, 추천 서비스
Home Page: https://site.music-ward.com/
게임과 음악을 사랑하는 게이머들을 위한 플레이리스트 공유, 추천 서비스
Home Page: https://site.music-ward.com/
테이블 명 변경
모든 Entity class
Repository interface에 Repository annotation을 작성함으로써 가독성 향상
모든 DAO 객체
플레이리스트를 목록 조회 기능을 구현한다.
SpringBoot Security 기본 세팅
WebConfig, SecurityConfig
Refresh Token저장 Redis Entity 구현
Token, Type, TokenRepository
Spotify 로그인 링크 Api
https://developer.spotify.com/documentation/general/guides/authorization-guide/
챔피언 관련 조회 API를 구현한다.
Controller단에서 일어난 Exception을 ExceptionHandlerFilter에서 못잡는 현상 발견
Spring MVC를 보면 Dispatcher Servlet에서 처리가 끝난 이후 ExceptionHandlerFilter로 response가 온다고 생각되어 GlobalExceptionHandler를 다시 생성한다.
데이터베이스 연동에 필요한 정보를 기입합니다.
구글 OAuth 로그인 시 필요한 링크를 발급받는 API
https://developers.google.com/identity/protocols/oauth2/web-server#httprest_5
유저 엔티티 Column, UserDetails 구현
User 엔티티
다른 Controller와 양식을 통일하기 위한 수정
도커 이미지 이름 변경
Docker Swarm pit
Controller에서 CommonResponse로 반환
구글 OAuth 링크를 통해 발급받은 code를 이용해 로그인하는 API
SecurityContext에서 현재 user id를 조회하기 위한 util class를 구현한다.
Jwt사용을 위한 JwtTokenProvider, Filter, Configure 작성
OpenFeign에서 Api를 호출하였을 때 발생하는 예외처리.
Token Entity에서 Token 객체 생성 시 불필요한 부분을 없앰.
request dto를 validation하며 나오는 에러 메시지를 가공하여 적절히 보여지도록 수정한다.
조사한 API를 기반으로 필요한 playlist 명세를 작성한다.
챔피언 관련 API명세
JwtTokenFilter 구현
google OAuth 2.0의 경우 code를 활용하여 token 정보를 요청할 경우 redirect uri로 code 정보와 함께
GET
으로 전달된다. 하지만 현재 UserController는POST
를 활용하여 redirect된 code 정보를 받도록 설정하였기 때문에 정상적으로 처리되지 않는다.
ECR을 활용한 CD
youtube에서 music-ward에 등록하지 않은 플레이리스트 목록을 조회할 수 있는 기능을 구현한다.
UserDetailsService 구현
AuthDetailsService
플레이리스트를 삭제하고 조회수를 증가하는 기능을 구현한다.
Riot LOL 관련 API를 분석한다.
다른 서비스(구글, Spotify)의 Api를 호출하기 위한 OpenFeign설정
데이터 베이스 (Redis, MySQL) 환경변수 및 설정
플레이리스트 id를 입력받아 music ward 플레이리스트로 등록하는 과정을 구현한다.
플레이리스트를 동기화하고 수정하는 기능을 구현한다.
로그에 client ip가 null로 들어가는 현상 해결
Google Info Client api url 변경
https://developers.google.com/identity/protocols/oauth2/openid-connect#discovery
각 api 역할에 맞게 상태 코드를 전달할 수 있도록 수정한다.
Logger 설정
특정한 user가 등록한 플레이리스트를 조회할 수 있는 기능을 추가한다.
Spotify 로그인 구현
유저 엔티티 google_email, spotify_email 변경
Cors Method ( GET, POST, PUT, PATCH, DELETE) 추가
에러 핸들링 필터 생성 및 설정
기존의 GlobalExceptionHandler에서는 @RestControllerAdvice로 ExceptionHandling을 진행하였는데, 이 방법으로 Filter단에서 발생한, 즉 Controller에 도달하기 전에 발생한 Exception은 처리되지않고 Status 500, Message : "Internal Server Error"로 response된다. 이를 해결하기 위해 JwtTokenFilter 앞에 ExceptionHandlerFilter를 설정하고, ExceptionHandlerFilter에서 catch로 Exception을 처리한다.
token에 저장된 google refresh token을 활용하여 access token을 조회하는 기능을 구현한다.
플레이리스트 id를 활용하여 단 건 조회 기능을 구현한다.
기존에 작성된 findByIdAndType 조회에 지속적으로 실패한다.
NoSuchElementException: No value present
Token을 수정하여 한 map 안에 모든 refresh 관련 정보가 들어갈 수 있도록 수정한다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.