Skip to content

Commit

Permalink
[v1.1.0] pick-git 배포 (#334)
Browse files Browse the repository at this point in the history
* 프론트엔드 기본 환경 설정 (#3)

* chore: 기본 환경설정 (#2)

* chore: 필수 의존성 설치 (#2)

* Chip 컴포넌트 구현 (#18)

* feat: 전역 스타일링 적용(#2)

Co-authored-by: SONG WON LEE <[email protected]>

* chore: 스토리북 기본설정

Co-authored-by: SONG WON LEE <[email protected]>

* chore: svg inline loader 설치 및 적용

Co-authored-by: SONG WON LEE <[email protected]>

* feat: Chip 컴포넌트 구현

Co-authored-by: SONG WON LEE <[email protected]>

Co-authored-by: SONG WON LEE <[email protected]>

* feat: Avatar 컴포넌트 구현 (#13) (#20)

* CountIndicator 컴포넌트 구현 (#19)

* feat: CountIndicator 컴포넌트 구현 (# 15)

* feat: CountIndicator 컴포넌트에 theme 적용 (#15)

* chore: styled-components 의 theme 객체에 타입을 부여 (#22) (#23)

Co-authored-by: LEESONGWON <[email protected]>

* chore: css normalize 적용 (#21) (#24)

* type declare error 해결 (#25)

* chore: svg-inline-loader를 svgr과 url-loader로 대체

* fix: 오타수정

* fix: type declare오류 수정

- styled components type declare
- svg module declare

* 스토리북 webpack 에 svgr 적용 (#27)

* chore: svg 파일 추가 및 svg 컴포넌트를 하나의 파일에서 import 해올 수 있도록 설정 (#29)

Co-authored-by: LEESONGWON <[email protected]>

* chore: 백엔드 기본 환경 설정 (#30)

* chore: 패키지 구조 분리 및 스켈레톤 코드 작성 (#33)

* feat: CricleIcon 컴포넌트 구현 (#12) (#31)

* [#6] NavigationHeader 컴포넌트 구현 (#42)

* fix: a 태그에 전역으로 부여된 hover 텍스트 color 제거

* chore: 이미지 파일 모듈에 대한 typing 적용

* feat: NavigationHeader 컴포넌트 구현

* feat: NavigationHeader 컴포넌트의 a 태그를 react-router-dom 의 Link 컴포넌트로 교체

- Link 컴포넌트에 경로 prop 할당

* [#17] TextEditor 컴포넌트 구현 (#43)

* feat: svg 파일을 react component로 불러와 적용

* feat: TextEditor 컴포넌트 구현 (#17)

* chore: s3proxy 기본 환경 설정 (#56)

* [#7] StepHeader 컴포넌트 구현 (#47)

* feat: StepHeader 컴포넌트 구현 - close #7

* feat: padding, width 값 px -> rem 으로 전환

* [#44] API Layer 추상화 및 profile request 구현 (#59)

* chore: axios 설치

Co-authored-by: SONG WON LEE <[email protected]>

* chore: 디렉터리 및 파일 이름 변경

Co-authored-by: SONG WON LEE <[email protected]>

* feat: useLocalStorage hook 구현

Co-authored-by: LEE SONG WON <[email protected]>

* feat: Profile reqest 및 query 구현

Co-authored-by: LEE SONG WON <[email protected]>

* fix: 잘못사용한 메서드 수정

* feat: json-server를 통해 resource mocking

Co-authored-by: SONG WON LEE <[email protected]>
Co-authored-by: LEE SONG WON <[email protected]>

* [#8] SearchHeader 컴포넌트 구현 (#60)

* chore: StepHeader 컴포넌트 폴더 위치 변경

* feat: SearchHeader 컴포넌트 구현

* feat: Tabs 컴포넌트 구현 (#14) (#64)

* feat: ContributionGraph 컴포넌트 구현 (#67)

* feat: Input 컴포넌트 구현 (#65)

* feat: ImageUploader 컴포넌트 구현 (#66)

* feat: Button 컴포넌트 구현 (#41) (#72)

* [#71] 초기 패키지 및 세팅을 설정 (#74)

* chore: 초기 설정 및 엔티티 맵핑 보완 (#71)

* chore: Authentication 패키지 스켈레톤 코드 작성 (#71)

* [#46] Github OAuth 2.0을 사용한 로그인 기능 구현 (#75)

* feat: pick-git 도메인이 등록된 Github Login URL을 받아오는 기능 구현

* fix: 존재하지 않는 패키지 import로 인해 발생하는 문제 해결

* feat: 사용자가 Github 로그인 후 Github Authorization Server로부터 AccessToken 가져오는 기능 구현

* refactor: application.yml에서 Github관련 구조 수정

* feat: 로그인시 Github Profile 최신화 및 토큰 생성하여 반환하는 기능 구현

* test: 로그인 관련 표현 계층 테스트 추가

* feat: DB로 부터 User 정보가 존재하는지 확인하기 위해 User 도메인 구현

* feat: 회원가입(첫 로그인)과 로그인(두번째 로그인부터)시 DB에 저장하는 기능 구현

- 회원가입(첫 로그인시) Github Profile을 가져와서 DB에 저장한다.
- 로그인(두번째 로그인부터) Github Profile과 관련된 정보만 수정한다.

* feat: 회원 인증을 위한 인터셉터와 HandlerMethodArgumentResolver 구현

* refactor: OAuth 액세스 토큰 DB에 접근하는 DAO 인터페이스로 분리 및 테스트 코드 추가

* refactor: OAuth로부터 Profile가져오는 코드 분리

* test: OAuthService 슬라이스 테스트 추가

* chore: 애플리케이션 설정 수정

* refactor: rebase과정에서 발생한 문제 해결 및 리팩토링

* feat: Comment 컴포넌트 구현 (#63) (#73)

* [#4] ImageSlider 컴포넌트 구현 (#77)

* feat: goBack, goForward svg가 currnetColor을 받도록 수정

* feat: useTrottle 구현

* feat: ImageComponent 구현 (#4)

* fix: 색상코드 오타 수정

* [#5] PostItem 컴포넌트 구현 (#81)

* feat: PostItem 컴포넌트 구현

- svg 아이콘 4개 추가

Co-authored-by: Tanney102 <[email protected]>

* refactor: Comment 컴포넌트 props 수정

- name -> authorName
- like -> 삭제(authorName을 활용하여 직접 link 생성)

* fix: TextEditor 컴포넌트 fontSize prop 이 적용되지 않는 문제 해결

* refactor: Input 컴포넌트 Ref 사용 구문 단순화

Co-authored-by: Tanney102 <[email protected]>

* [#76] 로그인 기능 리팩토링 및 테스트 추가 (#80)

* refactor: OAuthController 목킹 애노테이션(WebMvcTest) 매개변수 수정

* refactor: Mock을 사용한 OAuthService 리팩토링 및  UserService(JPA)사용한 통합 테스트 작성

* fix: OAuth 관련 URL앞에 /api 없던 문제 수정

* refactor: 로그인 관련 요청 반환값으로 json형식이 반환되도록 리팩토링

* test: 인증 인터셉터 테스트 추가

* test: 인증 핸들러 메서드 아규먼트 리졸버 테스트 추가

* test: JWT 토큰을 통해 AppUser 반환하는 테스트 추가

* test: 로그인 URL 요청 및 로그인 인수 테스트 추가

* test: 로그인 URL 요청 및 로그인 인수 테스트 추가

* fix: OAuthService 통합테스트시 같은 AccessTokenDB를 Bean으로 공유해서 같은 토큰이 발행되는 테스트 문제 해결

* refactor: 인수테스트시 로그인하면 토큰을 주는 메서드 추가

* refactor: 게시물과 프로필 조회시 로그인 상태가 아니여도 인터셉터 통과하도록 리팩토링

* [#40] 게시물 작성 기능 구현 (#68)

* feat: 게시물 작성 기능 구현

* fix: rebase conflict 해결

* refactor: @authenticated AppUser 바인딩 추가

* test: 슬라이스 테스트 작성

* refactor: URI.create() 메소드 추출

* refactor: 메소드명 변경

* feat: Bean Validation 예외 핸들링

* test: 메소드명 변경

* test: 슬라이스 테스트 보완

* test: 통합 테스트 작성

* feat: 유효성 검증 로직 추가

* test: 슬라이스 테스트 수정

* style: 필드 선언 순서 변경

* test: 인수 테스트 작성

* test: 인수 테스트 추가

* test: Data JPA 테스트 수정

* [#51 #53] 파일 업로드 기능 구현 (#69)

* feat: S3-EC2 파일 업로드 기능 구현

* feat: 파일 업로드 API 구현

* feat: 파일 확장자 확인 기능 구현 (#54)

* test: 인수테스트 작성

* refactor: 테스트 이름 재작성

* [#35 #36] 선택한 Github 레포지토리의 사용 언어 태그 추출 및 태그 저장/조회 기능 구현 (#52)

* chore: 인수 테스트를 위한 RestAssured 의존성 추가 및 테스트 환경 구성 (#35)

* feat: GIthub 특정 Repository에서 Language Tags 추출 (#35)

* feat: Github Tag 추출 서비스 구현 (#35)

* feat: Github Tag 추출 표현 계층 구현 (#35)

* refactor: 태그 추출 기능 중 Github API 호출 부분 인터페이스 분리 (#35)

* refactor: stub token으로 변경

* refactor: controlleradvice tag 패키지 범위 지정

* refactor: GithubTagExtractor 구현체 ObjectMapper 주입 (#35)

* refactor: TagExtractor 피드백 반영 및 컨트롤러 슬라이싱 테스트 추가 (#35)

* refactor: 태그 추출에 로그인 기능 포함 (#35)

* feat: Post 저장시 등록된 Tag도 함께 저장 (#36)

* feat: 이름에 해당하는 Tag가 없을때만 Tag 생성하는 서비스 구현 (#36)

* refactor: 현재 글에 존재하는 Tag와 중복되는 이름의 태그 추가시 예외 발생 (#35)

* refactor: Post에 Tag 정상 등록하는 테스트 추가 (#36)

* refactor: 태그 unique 제약 추가 및 @transactional 적용 (#36)

* refactor: 태그 도메인 생성 유효성 검사 추가 (#36)

* refactor: 태그 인수 테스트 추가 및 패키지 구조 변경 (#36)

* chore: secret 삭제

* refactor: Rebase 이후 인수 테스트에 로그인 요청 모듈 추가 (#35)

* refactor: 잘못된 토큰으로 요청시 예외 확인 인수 테스트 추가 (#35)

* fix: rebase 이후 실패하는 테스트 보완

* refactor: 태그 추가 실패 에러 및 플랫폼 에러를 커스텀 예외로 변환 및 TagController 반환타입 변경 (#35)

* [#55 #57] 유저 프로필 조회 기능 구현 및 팔로우 팔로잉 기능 구현 (#61)

* feat: 유저 프로필 조회 기능 구현 (#55)

* feat: 유저 프로필 정보에 github url 추가 및 누락 파일 추가 (#55)

* feat: 유저 팔로우 팔로잉 기능 구현 (#57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현 (#55 #57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현(#55 #57)

* refactor: 유저 프로필 및 팔로우/팔로잉 피드백 반영 (#55 #57)

* test: verify() 추가 (#55 #57)

* [#88] LoginPage 구현 (#98)

* fix: 오타 수정

* chore: storybook 설정에 full screen 옵션 추가

* feat: 웹폰트 추가

* feat: GithubIconLarge svg 추가

* fix: button attribute type 오류 해결

* feat: github login mock api 추가

* feat: user context 구현

* fix: ProfileQuery accessToken type error 해결

* feat: github login link 조회 api 구현

* feat: github login 페이지 구현(#88)

* fix: UserContextProvider Props 타이핑 간소화

* feat: Provider 분리 및 UserContextProvider 추가

* feat: access token 조회 api 구현(#88)

* feat: github OAuth 로그인을 처리하는 페이지 구현

* [#104] merge시 누락된 코드 추가 (#105)

* fix: 누락된 interface 정의 추가

* fix: 누락된 prop 추가(commentId)

* fix: 누락된 url constants 추가

* feat: 파일 업로드 기능 구현 (#100)

* [#108] 예외 처리 전략 구현 (#112)

* feat: 예외 처리 전략 구현

* refactor: GlobalExceptionHandler에서 최상위 카테고리인 ApplicationException만 받도록 수정

* refactor: RestControllerAdvice로 수정

* refactor: 예외 로깅용 예외 message 생성자 파라미터 추가

* feat: Button 컴포넌트 kind type 추가(#107) (#111)

- SquaredBlock, RoundedInline추가

* [#102] 게시물에 Github Repository 주소 추가 기능 구현  (#109)

* feat: post 업로드 시 github repository 주소 함께 저장 (#102)

* fix: 불필요한 파일 삭제 (#102)

* refactor: 피드백 반영 (#102)

* [#34] 댓글 기능 구현 (#84)

* feat: Comment 유효성 검증 로직 추가 (#34)

* feat: Post 영속시 Comment 함께 영속화하는 기능 추가 (#34)

* feat: User가 특정 Post에 Comment 추가하는 기능 구현 (#34)

* feat: 등록된 게시물에 Comment 추가하는 서비스 구현 (#34)

* test: Service 통합 테스트 추가 (#34)

* feat: 댓글 추가 API 단위 및 인수 테스트 추가 (#34)

* refactor: CommentFormat 예외 상태코드 변경 및 에러 코드 테스트 검증 (#34)

* refactor: ControllerAdvice 이름을 특정 컨트롤러로 명시 (#34)

* refactor: 코드 병합으로 인한 테스트 코드 및 설정 수정 (#34)

* refactor: rebase 병합 해결 (#34)

* [#37] Github Repositories 조회 기능 구현 (#58)

* feat: Github Repositories 조회 기능 구현

* test: 슬라이스 테스트 작성

* refactor: get -> show 메소드명 수정

* refactor: 클래스명 수정

* refactor: Repository -> Repositories 클래스명 변경

* fix: rebase conflict 해결

* refactor: application -> domain <- infrastructure 방향으로 의존성 흐르도록 수정

* test: given-when-then 구문 수정

* refactor: HttpEntity -> RequestEntity 변경

* test: given-when-then 구문 수정

* refactor: Github Repositories 조회 기능 수정

* test: 컨트롤러 테스트 수정

* test: 슬라이스 테스트 수정

* test: 슬라이스 테스트 작성

* test: 인수 테스트 작성

* test: 통합 테스트 작성

* test: rebase conflict 해결

* feat: 프로필 조회시 팔로우 여부 판단 기능 구현 (#113) (#117)

* [#95] 홈 피드 게시글 조회 (#114)

* feat: 페이징을 통해 게시물을 조회하고 DTO로 변환 (#95)

* refactor: rebase 병합으로 인한 충돌 해결 (#95)

* feat: 게시물 조회 페이징 기능 서비스 테스트 추가 (#95)

* refactor: 게시글 목록 조회 기능 인수 테스트 추가 및 태그 DTO 정리 (#95)

* refactor: Post 조회 RestAssured 메서드 중복 리팩토링 (#95)

* refactor: 병합으로 인한 충돌 해결 (#95)

* refactor: batch size를 통한 페이징 쿼리 성능 개선 (#95)

* refactor: 페이징 fetch join 추가 (#95)

* [#119] 서브모듈 적용 (#120)

* chore: 서브모듈 추가 (#119)

* chore: 서브모듈 적용 (#119)

* chore: 서브모듈 수정 (#119)

* [#87] HomeFeedPage 페이지 컴포넌트 구현 (#121)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <[email protected]>

* feat: Profile 페이지 query 초기화

* refactor: CommentData 타입 변경 & Comment 컴포넌트 Props 의 CommentData 타입 의존성 제거

* fix: PostItem 컴포넌트에 댓글 달기 버튼 추가 & Tag 들을 나타내는 Chip 들 추가

- send.svg 추가
- PostItem 스타일링 변경

* chore: webpack 이미지 파일 로더 룰 추가

* feat: TextEditor 컴포넌트 배경색 prop 제거

- 기본 border-radius 제거

* feat: Button kind 별 padding 변화 적용

* feat: 상속용 Styled Component 제작

* feat: Header 컴포넌트들에 모듈 Styled Component 상속 적용

* chore: .vscode 를 gitignore 목록에 추가

* feat: PostItem 컴포넌트 마크업 구조 수정

- 필요하지 않은 prop 할당 삭제

* feat: Header 컴포넌트에 일괄적으로 적용할 높이값 상수화

* feat: PostItem 스타일 속성 수정

* feat: Feed 컴포넌트 구현

* feat: HomeFeedPage 페이지 구현

* feat: FAILURE_MESSAGE & LIMIT 상수 추가

- LIMIT 는 어플리케이션에서 제한하는 데이터 형식을 나타내는 상수들을 담은 객체
- FAILURE_MESSAGE 는 요청 혹은 동작이 실패했을 때 사용자 피드백에 활용될 메세지들을 담은 객체

* feat: HomeFeedPage 라우팅 적용

Co-authored-by: Tanney102 <[email protected]>

* [#118] 예외 처리 전략을 적용 및 Entity에 id 동등성 추가  (#122)

* refactor: Authentication 커스텀 예외처리 구현

* refactor: User, Tag 커스텀 예외처리 구현

* refactor: Post, Comment 커스텀 예외처리 구현

* refactor: 엔티티 id 동등성 정의

* refactor: 플랫폼 이니셜 V로 수정

* fix: DataJpaTest에 Date 관련 테스트 설정 추가 (#123)

* [#89] Profile Page 구현 (#126)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <[email protected]>

* feat: Profile 페이지 query 초기화

* feat: Avatar 컴포넌트 name의 fontWeight을 bold로 변경

* feat: storybook dummy token 추가

* feat: mock data 및 routes 추가

* chore: svg 아이콘 추가

* fix: Profile interface 수정

* Revert "feat: mock data 및 routes 추가"

This reverts commit ea74c1bfda40c4bacf71283d193fad62927859d7.

* feat: ProfileHeader 컴포넌트 구현 (#89)

* feat: Profile 컴포넌트의 api로직 및 query 구현

* feat: Profile 컴포넌트 구현(#89)

* chore: assets/images의 파일을 .png, .jpg 로 통일

* chore: 이미지 확장자에 대해 url loader추가

* feat: profile 관련 mock api 추가

* feat: default Profile 이미지를 svg에서 png 파일로 변경

* refactor: profile page url을 하나로 통일

* feat: main 태그 추가

* feat: Profile컴포넌트 story 추가

* refactor: Profile url에 userType param 추가

* refactor: isMyProfile 속성을 Profile컴포넌트의 상위로 이동

* feat: Tabs 컴포넌트에 해당 탭에 대한 컨텐츠 추가

* feat: LoggedInWrapper util로 분리

* feat: ProfileFeed 컴포넌트 레이아웃 구현

* feat: mock data 추가

* feat: svg icon 추가

* refactor: 불필요한 코드 제거 및 누락 코드 보충

- 불필요한 의존성 제거
- 누락된 key prop 추가
- tab 스타일 변경
- 중복된 코드 제거

* feat: 프로필 피드에 비동기 로직 추가

* feat: GithubStatistics 컴포넌트 구현

* feat: Profile Page 구현(#89)

* refactor: 불필요한 interface 제거

* feat: 로그인 페이지 레이아웃 수정 및 홈 버튼 추가

* feat: 레이아웃 수정

* fix: 누락된 accessToken 추가

* refactor: 불필요한 코드 제거

* feat: 스타일 변경

- main widht를 모바일 사이즈로 고정
- black button 패딩 조정

* feat: 데모를 위해 항상 로그인 상태를 유지하도록 수정

* feat: 반응형 레이아웃 적용

* refactor: optional한 엘리먼트를 JSX로 처리

* refactor: error에 따른 ui 분기를 선언적으로 명시

Co-authored-by: SONG WON LEE <[email protected]>
Co-authored-by: Tanney102 <[email protected]>

* feat: 젠킨스 설정 파일 생성 (#133)

* refactor: 비로그인 유저로도 홈 피드 조회를 하도록 수정 (#134) (#135)

* fix: 파라미터 없이 route하도록 url 및 관련 코드 수정 (#131)

* fix: s3storage bean 탐색을 하지 못하는 버그 수정 (#136)

* [hotfix] CORS 버그 해결 (#138)

* fix: CORS 버그 해결

* chore: security 수정

* [#137] 내 프로필 계정의 게시물을 조회한다. (#139)

* feat: 내 프로필 계정의 게시물을 조회 기능 구현 (#137)

* refactor: Jenkins 빌드 스크립트 sleep을 3에서 10으로 변경

* [chore] api mocking 관련 코드 수정 (#140)

* feat: 무한스크롤 구현 전임을 감안하여 posts 조회시 page, limit mock

* feat: login mock 제거

* chore: 배포 환경에 따라 api proxy여부 분기

* chore: 운영 환경 설정 서브 모듈을 추가 (#143) (#144)

* [#141] 다른 유저의 프로필 계정의 게시물 조회  (#142)

* feat: 다른 유저의 프로필 피드를 조회하는 기능 구현 (#141)

* refactor: Pageable 사용하도록 수정 (#141)

* fix: PostRepository에 @param 추가 (#145)

* [#146] 로그인 반환 값에 유저 네임 추가 및 인터셉터 매치 기능 리팩토링 (#147)

* refactor: PathPattern 인터셉터 URL과 Method를 통해 매치되도록 리팩토링

* refactor: 로그인후 반환할 때 토큰과 함께 유저 네임도 보내도록 수정

* fix: 응답 파싱 에러 수정 (#148)

* [#129] follow 추가, 취소 기능 구현 (#149)

* fix: 폰트 import 위치 변경

* feat: follow 추가, 취소 기능 구현(#129)

* feat: 어플리케이션 진입시 로그인 상태 확인

* refactor: submodule의 remote branch 기준을 main으로 변경 (#155)

master -> main

* refactor: 젠킨슨 빌드 유발 방식 변경에 따른 스크립트 수정 (#157)

* [#152] 응답 파싱 에러 수정 (#153)

* fix: 응답 파싱 에러 수정

* refactor: build.gradle 형식 통일

* fix: 비정상 파일 이름및 확장자 도출 버그 해결 (#160)

* [#163] 빌드 에러를 확인하다. (#164)

* fix: 비정상 파일 이름및 확장자 도출 버그 해결

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정 (#165)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* [#162] 태그 추출 API 명세 변경 (#166)

* refactor: 태그 추출 api에서 name 제외 (#162)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* refactor: 태그 추출 api에서 name 제외 (#162)

Co-authored-by: DAEUN LEE <[email protected]>
Co-authored-by: Minsung Son <[email protected]>
Co-authored-by: Tanney102 <[email protected]>
Co-authored-by: SONG WON LEE <[email protected]>
Co-authored-by: binghe819 <[email protected]>

* [#192] 프로필 페이지 401에러 미처리 이슈 해결 (#196)

* refactor: 변수 이름 수정, userName을 username으로 통일

* refactor: localStorage관련 로직 변경

* fix: 유효하지 않은 토큰에 대해 프로필 정보 리패치

* refactor: storage 모듈이 각 함수를 export 하도록 변경

* fix: 유효하지 않은 토큰에 대해 프로필 피드 리패치

* fix: github tas api url 변경 반영

* refactor: 타입가드 추가

* [#179] Github Repositories 조회 기능 수정 (#195)

* refactor: 서브모듈 수정

* refactor: Github Repository URL도 함께 응답 (#179)

* refactor: htmlUrl -> url 변수명 변경 (#179)

* [#197] 레이아웃 및 UI를 개선 (#198)

* feat: 더 이상 불러올 데이터가 없으면 Loader 가 사라지도록 Infinite Scroll 기능 수정

- Feed 데이터를 Page 에서 넘겨주도록 재설정
- 세부 기능이 구현되지 않은 TagFeedPage, UserFeedPage 페이지 컴포넌트 추가(HomeFeedPage 와 현재는 기능 동일)
- 데이터 로딩 시 화면에 나타낼 PageLoading 컴포넌트 구현

* feat: 모든 ul 태그의 margin을 0으로 하는 전역 스타일링 적용

* feat: 데이터 로딩 시 PageLoading 컴포넌트가 나타나도록 설정

- Profile, RepositorySelector, TagInputForm 컴포넌트에 적용

* feat: PostItem 컴포넌트 padding 값 수정

* feat: 모바일 반응형 break point 재설정 &  각 페이지 컴포넌트의 Container 에 Page 스타일드 컴포넌트 확장 적용

* feat: RepositorySelector 컴포넌트의 RepositoryList 에 고정 높이 값 적용

- 내용물이 높이값을 초과할 시 스크롤이 나타나도록 설정

* feat: 로그아웃 버튼 추가 (#203)

* [#194] REST Docs 적용 (#201)

* feat: 문서화 코드 작성

* feature: 문서화 로직 및 기반 파일 구성

* [#207] 배포 자동화 버그 수정 (#208)

* refactor: 빌드와 테스트를 하나의 stage로 합침.

* refactor: 기존 process 제거 시 SIGKILL로 변경

* fix: 누락된 스크립트 추가.

* [#91] Snackbar 구현 (#209)

* fix: 컴포넌트 이름과 중복되는 interface 이름 변경

* feat: 스낵바 구현

* chore: 배포 환경에 따라 api url 분기 (#211)

* chore: 프론트엔드 빌드 커맨드 수정 (#214)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <[email protected]>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293] Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

Co-authored-by: Tanney102 <[email protected]>
Co-authored-by: SONG WON LEE <[email protected]>
Co-authored-by: SONG WON LEE <[email protected]>
Co-authored-by: LEESONGWON <[email protected]>
Co-authored-by: Minsung Son <[email protected]>
Co-authored-by: Jinhong <[email protected]>
Co-authored-by: binghe819 <[email protected]>
Co-authored-by: Tanney102 <[email protected]>
Co-authored-by: YunTroubleshooter <[email protected]>
  • Loading branch information
10 people committed Aug 4, 2021
1 parent 275853d commit 5aca371
Show file tree
Hide file tree
Showing 427 changed files with 20,173 additions and 5,889 deletions.
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ assignees: ''

---

## 이슈 번호

## 상세 내용

<br/>

## 주의사항
6 changes: 5 additions & 1 deletion .github/ISSUE_TEMPLATE/feature-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@
name: Feature Template
about: 구현할 기능을 이슈에 등록한다.
title: "[feature/{branch_name}] 기능을 구현한다."
labels: ''
labels: 'feature'
assignees: ''

---

## 구현 기능

<br/>

## 작업 내용

<br/>

## 주의사항
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/refactor-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Refactor Template
about: 리팩토링할 기능을 이슈에 등록한다.
title: "[refactor/{branch_name}] 기능을 리팩토링한다."
labels: 'refactor'
assignees: ''

---

## 작업 내용

<br/>

## 주의사항
6 changes: 6 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 상세 내용

<br/>

## 기타

<br/>

Close #{이슈_번호}
13 changes: 10 additions & 3 deletions backend/pick-git/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.apache.httpcomponents:httpclient:4.5'
implementation 'net.rakugakibox.spring.boot:logback-access-spring-boot-starter:2.7.1'

compileOnly 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.4'

Expand All @@ -27,9 +28,15 @@ dependencies {

asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor:1.2.6.RELEASE'

testImplementation('org.springframework.restdocs:spring-restdocs-mockmvc')
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'

testCompileOnly 'org.projectlombok:lombok:1.18.20'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'

testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation group: 'io.rest-assured', name: 'rest-assured', version: '4.4.0'
testImplementation 'io.rest-assured:rest-assured:4.4.0'
}

processResources.dependsOn('copySecurity')
Expand Down Expand Up @@ -68,4 +75,4 @@ bootJar {

test {
useJUnitPlatform()
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.woowacourse.pickgit.authentication.application;

import com.woowacourse.pickgit.user.domain.User;

public interface JwtTokenProvider {

String createToken(String payload);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.woowacourse.pickgit.authentication.application;

import com.woowacourse.pickgit.authentication.application.dto.TokenDto;
import com.woowacourse.pickgit.authentication.application.dto.OAuthProfileResponse;
import com.woowacourse.pickgit.authentication.application.dto.TokenDto;
import com.woowacourse.pickgit.authentication.dao.OAuthAccessTokenDao;
import com.woowacourse.pickgit.authentication.domain.OAuthClient;
import com.woowacourse.pickgit.authentication.domain.user.AppUser;
Expand Down Expand Up @@ -41,7 +41,8 @@ public String getGithubAuthorizationUrl() {
public TokenDto createToken(String code) {
String githubAccessToken = githubOAuthClient.getAccessToken(code);

OAuthProfileResponse githubProfileResponse = githubOAuthClient.getGithubProfile(githubAccessToken);
OAuthProfileResponse githubProfileResponse = githubOAuthClient
.getGithubProfile(githubAccessToken);

updateUserOrCreateUser(githubProfileResponse);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.woowacourse.pickgit.user.domain.profile.BasicProfile;
import com.woowacourse.pickgit.user.domain.profile.GithubProfile;
import lombok.Builder;

@Builder
public class OAuthProfileResponse {

@JsonProperty("login")
Expand Down Expand Up @@ -43,18 +45,6 @@ public OAuthProfileResponse(String name, String image, String description,
this.twitter = twitter;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getImage() {
return image;
}

public GithubProfile toGithubProfile() {
return new GithubProfile(
githubUrl,
Expand All @@ -73,55 +63,35 @@ public BasicProfile toBasicProfile() {
);
}

public void setImage(String image) {
this.image = image;
public String getName() {
return name;
}

public String getDescription() {
return description;
public String getImage() {
return image;
}

public void setDescription(String description) {
this.description = description;
public String getDescription() {
return description;
}

public String getGithubUrl() {
return githubUrl;
}

public void setGithubUrl(String githubUrl) {
this.githubUrl = githubUrl;
}

public String getCompany() {
return company;
}

public void setCompany(String company) {
this.company = company;
}

public String getLocation() {
return location;
}

public void setLocation(String location) {
this.location = location;
}

public String getWebsite() {
return website;
}

public void setWebsite(String website) {
this.website = website;
}

public String getTwitter() {
return twitter;
}

public void setTwitter(String twitter) {
this.twitter = twitter;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import javax.servlet.http.HttpServletRequest;

public class AuthorizationExtractor {
public static final String AUTHORIZATION = "Authorization";
public static final String ACCESS_TOKEN_TYPE = AuthorizationExtractor.class.getSimpleName() + ".ACCESS_TOKEN_TYPE";
public static String BEARER_TYPE = "Bearer";

private static final String AUTHORIZATION = "Authorization";
private static final String ACCESS_TOKEN_TYPE = AuthorizationExtractor.class.getSimpleName() + ".ACCESS_TOKEN_TYPE";
private static String BEARER_TYPE = "Bearer";

public static String extract(HttpServletRequest request) {
Enumeration<String> headers = request.getHeaders(AUTHORIZATION);
Expand All @@ -24,6 +25,5 @@ public static String extract(HttpServletRequest request) {
}

return null;

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.woowacourse.pickgit.authentication.domain.OAuthClient;
import com.woowacourse.pickgit.authentication.infrastructure.dto.OAuthAccessTokenRequest;
import com.woowacourse.pickgit.authentication.infrastructure.dto.OAuthAccessTokenResponse;
import com.woowacourse.pickgit.exception.platform.PlatformHttpErrorException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
Expand Down Expand Up @@ -50,7 +51,7 @@ public String getAccessToken(String code) {
.getAccessToken();

if (accessToken == null) {
throw new IllegalArgumentException("깃헙 인증 에러");
throw new PlatformHttpErrorException();
}
return accessToken;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.woowacourse.pickgit.authentication.presentation.interceptor.AuthHeader;
import javax.servlet.http.HttpServletRequest;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ public IgnoreAuthenticationInterceptor(
}

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
if (isPreflightRequest(request)) {
return true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.woowacourse.pickgit.common.network;

import com.woowacourse.pickgit.post.infrastructure.RestClient;
import com.woowacourse.pickgit.post.domain.util.RestClient;
import java.net.URI;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -30,7 +30,9 @@ public class RestTemplateClient implements RestClient {
public final RestTemplate restTemplate = createRestTemplate();

private static RestTemplate createRestTemplate() {
var factory = new HttpComponentsClientHttpRequestFactory();
HttpComponentsClientHttpRequestFactory factory =
new HttpComponentsClientHttpRequestFactory();

factory.setReadTimeout(READ_TIMEOUT);
factory.setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,24 @@ public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers)

@Override
public void addInterceptors(InterceptorRegistry registry) {
HandlerInterceptor authenticationInterceptor = new PathMatchInterceptor(authenticationInterceptor())
HandlerInterceptor authenticationInterceptor = new PathMatchInterceptor(
authenticationInterceptor())
.addPathPatterns("/api/posts/me", HttpMethod.GET)
.addPathPatterns("/api/github/*/repositories", HttpMethod.GET)
.addPathPatterns("/api/github/repositories/*/tags/languages", HttpMethod.GET)
.addPathPatterns("/api/posts", HttpMethod.POST)
.addPathPatterns("/api/posts/*/likes", HttpMethod.POST, HttpMethod.DELETE)
.addPathPatterns("/api/posts/*/likes", HttpMethod.PUT, HttpMethod.DELETE)
.addPathPatterns("/api/posts/*/comments", HttpMethod.POST)
.addPathPatterns("/api/profiles/me", HttpMethod.GET)
.addPathPatterns("/api/profiles/*/followings", HttpMethod.POST, HttpMethod.DELETE);
.addPathPatterns("/api/profiles/me", HttpMethod.GET, HttpMethod.POST)
.addPathPatterns("/api/profiles/*/followings", HttpMethod.POST, HttpMethod.DELETE)
.addPathPatterns("/api/posts/*", HttpMethod.PUT, HttpMethod.DELETE);

HandlerInterceptor ignoreAuthenticationInterceptor = new PathMatchInterceptor(ignoreAuthenticationInterceptor())
HandlerInterceptor ignoreAuthenticationInterceptor = new PathMatchInterceptor(
ignoreAuthenticationInterceptor())
.addPathPatterns("/api/profiles/*", HttpMethod.GET)
.addPathPatterns("/api/posts", HttpMethod.GET)
.addPathPatterns("/api/posts/*", HttpMethod.GET)
.addPathPatterns("/api/search/**", HttpMethod.GET)
.excludePatterns("/api/profiles/*/followings", HttpMethod.POST, HttpMethod.DELETE)
.excludePatterns("/api/profiles/me", HttpMethod.GET)
.excludePatterns("/api/posts/me", HttpMethod.GET);
Expand Down

This file was deleted.

Loading

0 comments on commit 5aca371

Please sign in to comment.