Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WEAV-15] Open API Generator 를 통한 네트워크 레이어 구축 #5

Merged
merged 4 commits into from
Sep 8, 2024

Conversation

jisu15-kim
Copy link
Member

@jisu15-kim jisu15-kim commented Sep 7, 2024

구현사항

  • Open API Generator 를 통한 네트워크 레이어 구축
    • OAS Repository SubModule 셋업하여 관리
    • makefile 을 통해 Client.swift, Type.swift 파일 생성하도록 함
  • client middleware 도입
    • 인터셉터에서 401 catch 하여 리프레시토큰 갱신 처리하도록 구현
    • LoggerMiddleWare 구현
  • Model 모듈 생성
  • 샘플로 Auth 관련 네트워크 Endpoint 생성

Link

https://linear.app/match-weave/issue/WEAV-15/oas-네트워크-레이어-구축

Summary by CodeRabbit

  • New Features

    • OpenAPI 생성 및 SMS 인증을 위한 새로운 API 클라이언트 기능 추가.
    • SMS 인증 요청 및 코드 확인을 위한 새로운 메서드 추가.
    • OpenAPI 생성기를 위한 새로운 서브모듈 및 패키지 통합.
  • Bug Fixes

    • 인증 상태 관리 로직 개선 및 오류 처리 추가.
  • Documentation

    • 새로운 API 구조 및 사용법에 대한 문서화.
  • Chores

    • 프로젝트 구성에 OpenAPI 생성기 의존성 추가.

@jisu15-kim jisu15-kim self-assigned this Sep 7, 2024
Copy link
Contributor

coderabbitai bot commented Sep 7, 2024

Walkthrough

이 변경 사항은 OpenApiGenerator 서브모듈을 추가하고, API 관련 파일 생성 및 관리, 인증 프로세스 개선을 위한 여러 파일을 새로 도입하는 것을 포함합니다. 또한, Swift 패키지 및 종속성 관리에 대한 업데이트가 포함되어 있습니다. 전반적으로, 이 변경은 API 상호작용을 용이하게 하고, 인증 상태 관리를 개선하며, 코드의 구조를 강화합니다.

Changes

파일 경로 변경 요약
.gitmodules OpenApiGenerator 서브모듈 추가, 경로 및 URL 설정
Makefile API 파일 생성을 위한 api 타겟 추가
OpenApiGenerator/.swift-openapi-generator OpenApiGenerator의 서브프로젝트 커밋 해시 추가
OpenApiGenerator/Makefile OpenAPI 사양에서 소스 파일을 생성하는 구조화된 Makefile 추가
OpenApiGenerator/Package.resolved Swift 프로젝트의 종속성 관리 파일 생성
OpenApiGenerator/Package.swift OpenApiGenerator 패키지 정의, 플랫폼 및 종속성 설정
OpenApiGenerator/Sources/OpenapiGenerated/Client.swift API 클라이언트 구현을 위한 Client 구조체 추가
OpenApiGenerator/Sources/OpenapiGenerated/Types.swift OpenAPI 사양에서 생성된 API 인터페이스 정의 및 프로토콜 추가
OpenApiGenerator/Sources/openapi-generator-cli/3days-oas 서브프로젝트 커밋 해시를 포함하는 파일 추가
OpenApiGenerator/Sources/openapi-generator-cli/main.swift "Hello, world!"를 출력하는 간단한 Swift 프로그램 추가
OpenApiGenerator/Sources/openapi-generator-cli/openapi-generator-config.yaml OpenAPI 구성 파일 추가, 생성 타겟 및 접근 수정자 설정
Projects/App/Sources/ContentView.swift onAppear 메소드 수정, SMS 인증 요청 추가
Projects/Core/CoreKit/Sources/AuthStatus.swift AuthState 클래스에 새로운 상태 추가 및 상태 변경 메소드 구현
Projects/Core/CoreKit/Sources/TokenManager.swift TokenManager 접근 수준 변경 및 새로운 프로퍼티 추가
Projects/Core/Model/Sources/Network/RefreshTokenResponse.swift RefreshTokenResponse 구조체 추가, 토큰 응답 모델 정의
Projects/Core/Model/Sources/Network/SMSVerificationRequest.swift SMS 인증 요청을 위한 구조체 추가
Projects/Core/Model/Sources/Network/SMSVerificationResponse.swift SMS 인증 응답을 위한 구조체 추가
Projects/Core/NetworkKit/Sources/AuthService/AuthEndpoint.swift AuthEndpoint 기능 확장, SMS 인증 요청 및 코드 검증 메소드 추가
Projects/Core/NetworkKit/Sources/NetworkCore/EndpointType.swift Endpointable 프로토콜 추가, 클라이언트 접근 방식 표준화
Projects/Core/NetworkKit/Sources/NetworkCore/Interceptor.swift refreshAccessToken 메소드 주석 처리
Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/AuthorizationMiddleware.swift AuthenticationMiddleware 구조체 추가, 요청에 인증 헤더 추가
Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/LogMiddleWare.swift LoggingMiddleware 구조체 추가, HTTP 요청 및 응답 로깅 기능 구현
Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/RetryingMiddleware.swift RetryingMiddleware 구조체 추가, 자동 재시도 메커니즘 구현
Projects/Core/NetworkKit/Sources/NetworkCore/ServiceClient.swift ServiceClient 구조체 추가, 네트워크 작업을 위한 중앙 클라이언트 구현
Projects/Core/Project.swift 외부 종속성으로 OpenAPI 생성된 구성 추가
Tuist/Package.resolved 새로운 종속성 추가, 여러 라이브러리 버전 관리
Tuist/Package.swift OpenApiGenerator에 대한 로컬 패키지 종속성 추가
Tuist/ProjectDescriptionHelpers/Dependency+extensions.swift ExternalDependency 열거형에 openapiGenerated 케이스 추가

Poem

🐰
변화의 바람이 불어와,
새로운 길이 열렸네.
API와 인증이 손을 잡고,
코드가 춤추는 이 순간,
모두 함께 기뻐하자,
Rabbit의 축제, 함께해요! 🎉


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 6

Outside diff range, codebase verification and nitpick comments (2)
Projects/App/Sources/ContentView.swift (1)

24-24: 하드코딩된 전화번호를 파라미터화하세요

ContentView.swift 파일에서 전화번호 "010-4602-2274"가 하드코딩되어 있습니다. 이는 보안 위험을 초래할 수 있으며 유연성을 감소시킵니다. 전화번호를 파라미터화하거나 안전한 소스에서 가져오는 것이 좋습니다.

  • Projects/App/Sources/ContentView.swift: 하드코딩된 전화번호를 파라미터화하거나 안전한 소스에서 가져오도록 수정하세요.
Analysis chain

onAppear 메소드의 새로운 구현

비동기 프로그래밍을 사용하여 SMS 인증을 요청하는 새로운 onAppear 블록이 추가되었습니다. 이는 사용자 경험을 개선하고 메인 스레드의 블로킹을 방지합니다. 하지만, 하드코딩된 전화번호는 파라미터화되어야 할 수 있습니다.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the phone number should be parameterized.

# Test: Search for hardcoded phone numbers. Expect: No hardcoded numbers.
rg --type swift '010-4602-2274'

Length of output: 160

Projects/Core/CoreKit/Sources/AuthStatus.swift (1)

39-44: 주석 형식 및 공백 관련 경고 수정 제안

SwiftLint에서는 주석과 관련된 경고를 제공하고 있습니다. 특히 MARK 주석의 형식이 올바르지 않으며, 주석 뒤에 공백이 필요합니다. 다음과 같이 수정하는 것이 좋습니다.

-    //MARK: State 정의
+    // MARK: - State 정의

-    //MARK: Current
+    // MARK: - Current

-    //MARK: - Update
+    // MARK: - Update
Tools
SwiftLint

[Warning] 39-39: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 42-42: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 39-39: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)


[Warning] 42-42: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 90f5e8d and 59e0862.

Files selected for processing (28)
  • .gitmodules (1 hunks)
  • Makefile (1 hunks)
  • OpenApiGenerator/.swift-openapi-generator (1 hunks)
  • OpenApiGenerator/Makefile (1 hunks)
  • OpenApiGenerator/Package.resolved (1 hunks)
  • OpenApiGenerator/Package.swift (1 hunks)
  • OpenApiGenerator/Sources/OpenapiGenerated/Client.swift (1 hunks)
  • OpenApiGenerator/Sources/OpenapiGenerated/Types.swift (1 hunks)
  • OpenApiGenerator/Sources/openapi-generator-cli/3days-oas (1 hunks)
  • OpenApiGenerator/Sources/openapi-generator-cli/main.swift (1 hunks)
  • OpenApiGenerator/Sources/openapi-generator-cli/openapi-generator-config.yaml (1 hunks)
  • Projects/App/Sources/ContentView.swift (2 hunks)
  • Projects/Core/CoreKit/Sources/AuthStatus.swift (1 hunks)
  • Projects/Core/CoreKit/Sources/TokenManager.swift (2 hunks)
  • Projects/Core/Model/Sources/Network/RefreshTokenResponse.swift (1 hunks)
  • Projects/Core/Model/Sources/Network/SMSVerificationRequest.swift (1 hunks)
  • Projects/Core/Model/Sources/Network/SMSVerificationResponse.swift (1 hunks)
  • Projects/Core/NetworkKit/Sources/AuthService/AuthEndpoint.swift (1 hunks)
  • Projects/Core/NetworkKit/Sources/NetworkCore/EndpointType.swift (2 hunks)
  • Projects/Core/NetworkKit/Sources/NetworkCore/Interceptor.swift (2 hunks)
  • Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/AuthorizationMiddleware.swift (1 hunks)
  • Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/LogMiddleWare.swift (1 hunks)
  • Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/RetryingMiddleware.swift (1 hunks)
  • Projects/Core/NetworkKit/Sources/NetworkCore/ServiceClient.swift (1 hunks)
  • Projects/Core/Project.swift (1 hunks)
  • Tuist/Package.resolved (1 hunks)
  • Tuist/Package.swift (1 hunks)
  • Tuist/ProjectDescriptionHelpers/Dependency+extensions.swift (1 hunks)
Files skipped from review due to trivial changes (7)
  • .gitmodules
  • Makefile
  • OpenApiGenerator/.swift-openapi-generator
  • OpenApiGenerator/Package.resolved
  • OpenApiGenerator/Sources/openapi-generator-cli/3days-oas
  • OpenApiGenerator/Sources/openapi-generator-cli/main.swift
  • OpenApiGenerator/Sources/openapi-generator-cli/openapi-generator-config.yaml
Additional context used
SwiftLint
Projects/Core/CoreKit/Sources/AuthStatus.swift

[Warning] 12-12: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 39-39: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 42-42: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 12-12: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)


[Warning] 39-39: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)


[Warning] 42-42: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)

Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/AuthorizationMiddleware.swift

[Warning] 1-1: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 13-13: Prefer at least one space after slashes for comments

(comment_spacing)

Projects/Core/NetworkKit/Sources/AuthService/AuthEndpoint.swift

[Warning] 55-55: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 55-55: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)

Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/LogMiddleWare.swift

[Warning] 1-1: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 13-13: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 121-121: Prefer using UTF-8 encoded strings when converting between String and Data

(non_optional_string_data_conversion)

Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/RetryingMiddleware.swift

[Warning] 1-1: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 13-13: Prefer at least one space after slashes for comments

(comment_spacing)

OpenApiGenerator/Sources/OpenapiGenerated/Types.swift

[Warning] 172-172: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 173-173: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 265-265: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 266-266: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 267-267: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Error] 171-171: Type name 'genderPayload' should start with an uppercase character

(type_name)


[Error] 229-229: Type name 'birthYearRangePayload' should start with an uppercase character

(type_name)


[Error] 264-264: Type name 'preferDistancePayload' should start with an uppercase character

(type_name)


[Error] 448-448: Type name 'requestVerification' should start with an uppercase character

(type_name)


[Error] 466-466: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Error] 504-504: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Error] 635-635: Type name 'verifyCode' should start with an uppercase character

(type_name)


[Error] 668-668: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Warning] 705-705: Type name 'Ok' should be between 3 and 40 characters long

(type_name)


[Error] 709-709: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Error] 884-884: Type name 'registerUser' should start with an uppercase character

(type_name)


[Error] 1110-1110: Type name 'refreshToken' should start with an uppercase character

(type_name)


[Error] 1128-1128: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Warning] 1162-1162: Type name 'Ok' should be between 3 and 40 characters long

(type_name)

Additional comments not posted (27)
Projects/Core/Model/Sources/Network/SMSVerificationResponse.swift (1)

11-14: 구조 승인됨

SMSVerificationResponse 구조체는 간단하고 명확하며, Swift에서 데이터 모델로 사용하기에 적합합니다. refreshTokenaccessToken이 항상 필요하다고 가정하는 것이 적절한지 확인하세요.

Tuist/ProjectDescriptionHelpers/Dependency+extensions.swift (1)

13-13: 새로운 의존성 케이스 추가 승인됨

openapiGenerated 케이스는 ExternalDependency 열거형에 잘 추가되었습니다. 이 변경은 Open API Generator를 통해 생성된 의존성을 지원하기 위한 것입니다. 다른 의존성과의 관계에서 이 케이스의 위치를 고려해 보세요.

Projects/Core/Model/Sources/Network/RefreshTokenResponse.swift (1)

11-21: 구조 승인됨

RefreshTokenResponse 구조체는 refreshTokenaccessToken을 옵셔널로 선언하여 API 응답에서 이 토큰들이 항상 존재하지 않을 수 있음을 고려하고 있습니다. 명시적 초기화자는 속성이 올바르게 설정되도록 보장합니다.

Projects/Core/Project.swift (1)

15-15: OpenAPI 의존성 추가 승인

.external(.openapiGenerated)networkKit의 의존성 목록에 추가된 것을 확인했습니다. 이 변경은 OpenAPI 생성 구성 요소를 통합하여 API 상호 작용을 개선하는 데 도움이 될 것입니다.

OpenAPI 생성 구성 요소가 프로젝트에 올바르게 통합되었는지 확인하십시오.

Verification successful

OpenAPI 생성 구성 요소의 통합 확인

OpenapiGenerated 구성 요소가 프로젝트에 올바르게 통합된 것을 확인했습니다. 이 구성 요소는 EndpointType.swiftServiceClient.swift 파일에서 사용되고 있으며, Package.swift에 정의되어 있어 프로젝트의 패키지 종속성의 일부로 확인되었습니다.

  • Dependency+extensions.swift에서 OpenapiGenerated가 정의되었습니다.
  • EndpointType.swiftServiceClient.swift에서 OpenapiGenerated가 가져와 사용되고 있습니다.
  • OpenApiGenerator/Package.swift에서 OpenapiGenerated가 패키지로 정의되었습니다.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the integration of OpenAPI components in the project.

# Test: Search for the usage of OpenAPI components in the project. Expect: Proper integration and usage.
rg --type swift -A 5 $'OpenapiGenerated'

Length of output: 2526

Projects/Core/NetworkKit/Sources/NetworkCore/EndpointType.swift (2)

22-24: 새로운 프로토콜 Endpointable의 추가

Endpointable 프로토콜은 네트워킹 컴포넌트 간의 일관된 클라이언트 접근 방식을 제공합니다. 이는 코드 재사용성과 일관성을 증진시킬 수 있습니다.


26-29: Endpointable 확장을 통한 클라이언트 구현

이 확장은 ServiceClient.client를 반환하여, 모든 Endpointable 타입이 공통된 클라이언트 인스턴스에 접근할 수 있도록 합니다. 이 구현은 효율적인 리소스 관리와 코드 중복을 줄이는 데 도움이 됩니다.

Tuist/Package.swift (1)

18-18: 새로운 로컬 패키지 의존성 추가

OpenApiGenerator 패키지를 추가함으로써, 프로젝트의 기능성이 확장됩니다. 이 변경은 프로젝트의 전반적인 의존성 관리 전략과 일치하는지 확인해야 합니다.

Projects/Core/CoreKit/Sources/TokenManager.swift (1)

11-12: 접근성 개선을 위한 변경 사항 승인

TokenManageraccessTokenrefreshToken 속성이 public static var로 변경되어 다른 모듈에서 접근할 수 있게 되었습니다. 이는 네트워크 레이어의 접근성을 향상시키는 데 도움이 됩니다.

Also applies to: 21-21

OpenApiGenerator/Package.swift (1)

1-36: 패키지 설정 파일 검토

새로 생성된 Package.swift 파일은 OpenAPI Generator를 위한 패키지 설정을 명확하게 정의하고 있습니다. Swift 도구 버전, 플랫폼, 의존성 및 타겟이 적절히 설정되어 있어 빌드 프로세스에 필요한 구성 요소들이 잘 정리되어 있습니다.

Projects/Core/CoreKit/Sources/AuthStatus.swift (1)

12-33: AuthState 클래스의 State 열거형 및 상태 변경 로직 검토

AuthState 클래스 내에 정의된 State 열거형은 로그인, 로그아웃, 회원가입 등 다양한 인증 상태를 나타내며, changeState 메소드를 통해 토큰 관리가 상태 변경과 동기화되도록 합니다. 이는 사용자의 인증 상태를 일관되게 관리하는 데 중요합니다.

Tools
SwiftLint

[Warning] 12-12: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 12-12: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)

Tuist/Package.resolved (4)

22-27: 새 의존성: swift-collections

swift-collections 의존성이 추가되었습니다. 버전 1.1.3으로, 올바르게 설정되어 있습니다. 이 라이브러리는 Swift에서 고성능 컬렉션 타입을 제공합니다.


31-36: 새 의존성: swift-http-types

swift-http-types 의존성이 추가되었습니다. 버전 1.3.0으로, HTTP 관련 타입을 제공하여 네트워크 레이어 구축에 도움을 줍니다.


40-45: 새 의존성: swift-openapi-runtime

swift-openapi-runtime 의존성이 추가되었습니다. 버전 1.5.0으로, OpenAPI 스펙을 기반으로 한 런타임을 제공합니다.


49-54: 새 의존성: swift-openapi-urlsession

swift-openapi-urlsession 의존성이 추가되었습니다. 버전 1.0.2으로, URLSession을 사용하여 OpenAPI 클라이언트를 구현하는 데 필요합니다.

Projects/Core/NetworkKit/Sources/NetworkCore/Interceptor.swift (1)

Line range hint 52-69: 토큰 갱신 로직 주석 처리에 대한 검토 필요

refreshAccessToken 메소드가 주석 처리되어 있습니다. 이는 자동 토큰 갱신 기능을 비활성화하며, 인증 실패를 유발할 수 있습니다. 이 변경의 배경과 대체 전략에 대한 추가적인 설명이 필요합니다. 만약 토큰 갱신이 여전히 필요하다면, 이 로직을 다시 활성화하거나 적절한 대체 로직을 구현하는 것을 고려해야 합니다.

Projects/Core/NetworkKit/Sources/AuthService/AuthEndpoint.swift (4)

10-11: 모듈 임포트 확인

ModelCoreKit 모듈이 추가되었습니다. 이는 AuthEndpoint의 기능 확장을 위한 것으로 보입니다. 모듈 사용이 적절한지 확인하고, 필요하지 않은 경우 제거하는 것이 좋습니다.


13-15: 새로운 에러 타입 추가

AuthEndpointError 열거형이 추가되어 토큰 관련 에러를 관리합니다. 이는 명확한 에러 관리를 가능하게 하며, emptyTokentokenResponseNotValid 케이스를 통해 더 세밀한 에러 처리가 가능합니다.


18-50: SMS 인증 메소드 추가

requestSMSVerificationverifySMSCode 두 개의 정적 메소드가 추가되었습니다. 이는 SMS 인증 프로세스를 지원하기 위한 것으로, 각 메소드는 비동기적으로 동작하며 예외를 발생시킬 수 있습니다. 이 구현은 사용자가 존재하는지 여부에 따라 다른 인증 상태를 업데이트하는 로직을 포함하고 있습니다. 코드의 로직과 예외 처리가 적절하게 구현되었는지 확인해야 합니다.


55-75: 액세스 토큰 갱신 로직 추가

refreshAccessToken 메소드가 추가되어, 토큰 갱신 프로세스를 관리합니다. TokenManager를 사용하여 리프레시 토큰이 있는지 확인하고, 없을 경우 AuthEndpointError.emptyToken 에러를 발생시킵니다. 이 메소드는 토큰 갱신이 성공적으로 완료되면 새로운 토큰 정보를 반환합니다. 이 로직은 보안적인 측면에서 중요하므로, 토큰 관리가 안전하게 처리되고 있는지 추가 검토가 필요합니다.

Tools
SwiftLint

[Warning] 55-55: Prefer at least one space after slashes for comments

(comment_spacing)


[Warning] 55-55: MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...'

(mark)

OpenApiGenerator/Makefile (3)

5-13: 환경 변수 설정

Makefile에서 다양한 환경 변수가 설정되어 있습니다. 이 변수들은 OpenAPI Generator의 구성과 관련이 있으며, 명령어 라인에서 오버라이드할 수 있습니다. 이 설정들이 프로젝트 요구사항에 맞게 적절히 설정되었는지 확인해야 합니다.


37-42: 소스 생성 명령어

generate 타겟은 OpenAPI Generator를 사용하여 소스 코드를 생성합니다. 이 과정에서 --config, --output-directory, 그리고 OpenAPI 스펙 파일 경로를 사용합니다. 이 명령어가 올바르게 설정되었는지, 그리고 생성된 소스 코드가 예상대로 작동하는지 확인해야 합니다.


46-52: 클린업 명령어

cleanclean-all 타겟은 생성된 소스와 OpenAPI Generator의 체크아웃을 정리합니다. 사용자 입력을 요구하는 방식으로 구현되어 있으며, 이는 실수로 중요한 데이터를 삭제하는 것을 방지할 수 있습니다. 이 명령어들이 프로젝트의 다른 부분과 충돌하지 않는지 확인해야 합니다.

Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/LogMiddleWare.swift (2)

19-52: 로깅 미들웨어 구현

LoggingMiddleware 액터는 네트워크 요청과 응답을 로깅합니다. 이 구현은 클라이언트와 서버 양쪽에서 사용될 수 있으며, LoggerBodyLoggingPolicy를 사용하여 로깅 수준을 관리합니다. 로깅 정책이 시스템의 보안과 성능에 부정적인 영향을 미치지 않도록 주의 깊게 검토해야 합니다.


96-138: 바디 로깅 정책

BodyLoggingPolicy 열거형은 요청 및 응답 바디의 로깅 정책을 정의합니다. 이 정책은 로깅할 데이터의 크기를 제한하거나, 특정 조건에서 로깅을 금지하는 등의 기능을 포함합니다. 이 정책이 데이터 프라이버시 규정을 준수하며, 성능 저하 없이 효과적으로 작동하는지 확인해야 합니다.

Tools
SwiftLint

[Warning] 121-121: Prefer using UTF-8 encoded strings when converting between String and Data

(non_optional_string_data_conversion)

Projects/Core/NetworkKit/Sources/NetworkCore/Middleware/RetryingMiddleware.swift (1)

18-78: 코드 구조 및 설계 검토:

RetryingMiddleware 구조체는 재시도 로직을 잘 정의하고 있습니다. 사용된 열거형(RetryableSignal, RetryingPolicy, DelayPolicy)은 코드의 가독성을 높이고, 관련 로직을 체계적으로 구성합니다. 초기화 메서드에서 기본값을 제공하는 것은 사용자가 미들웨어를 쉽게 설정할 수 있게 해줍니다.

OpenApiGenerator/Sources/OpenapiGenerated/Client.swift (1)

13-343: 자동 생성된 코드 검토:

Client 구조체는 OpenAPI 명세에 따라 네트워크 작업을 처리합니다. 이 파일은 자동 생성되므로 일반적으로 수동으로 수정해서는 안 됩니다. 각 네트워크 작업은 명확하게 정의되어 있으며, 입력 및 출력 타입이 잘 설계되어 있습니다.

다음 사항들을 확인하세요:

  • 모든 네트워크 호출이 예외를 적절히 처리하고 있습니다.
  • HTTP 메서드와 경로가 명세와 일치하는지 확인하세요.
  • 생성된 타입과 메서드가 API의 최신 버전과 일치하는지 검토하세요.
OpenApiGenerator/Sources/OpenapiGenerated/Types.swift (1)

13-1271: 타입 정의 코드 검토:

Types.swift 파일은 API에서 사용되는 다양한 타입을 정의합니다. 이 파일은 OpenAPI 명세서에서 자동 생성된 것으로, 각 타입이 명세서와 일치하는지 확인하는 것이 중요합니다.

다음 사항들을 검토하세요:

  • 각 타입이 API의 요구 사항을 정확히 반영하고 있는지 확인하세요.
  • 타입의 필드가 적절히 문서화되어 있고, 필요한 경우 기본값이 제공되는지 검토하세요.
  • 생성된 코드가 명세의 최신 버전을 반영하고 있는지 확인하세요.
Tools
SwiftLint

[Warning] 172-172: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 173-173: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 265-265: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 266-266: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Warning] 267-267: String enum values can be omitted when they are equal to the enumcase name

(redundant_string_enum_value)


[Error] 171-171: Type name 'genderPayload' should start with an uppercase character

(type_name)


[Error] 229-229: Type name 'birthYearRangePayload' should start with an uppercase character

(type_name)


[Error] 264-264: Type name 'preferDistancePayload' should start with an uppercase character

(type_name)


[Error] 448-448: Type name 'requestVerification' should start with an uppercase character

(type_name)


[Error] 466-466: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Error] 504-504: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Error] 635-635: Type name 'verifyCode' should start with an uppercase character

(type_name)


[Error] 668-668: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Warning] 705-705: Type name 'Ok' should be between 3 and 40 characters long

(type_name)


[Error] 709-709: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Error] 884-884: Type name 'registerUser' should start with an uppercase character

(type_name)


[Error] 1110-1110: Type name 'refreshToken' should start with an uppercase character

(type_name)


[Error] 1128-1128: Type name 'jsonPayload' should start with an uppercase character

(type_name)


[Warning] 1162-1162: Type name 'Ok' should be between 3 and 40 characters long

(type_name)

@jisu15-kim jisu15-kim merged commit 75c6157 into develop Sep 8, 2024
2 checks passed
@jisu15-kim jisu15-kim deleted the feat/WEAV-15 branch September 8, 2024 12:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant