시배's Android

Hi Jack Mocker | Android 오픈 소스 배포기 (2) 본문

Android/Hi Jack Mocker

Hi Jack Mocker | Android 오픈 소스 배포기 (2)

si8ae 2024. 6. 24. 15:00

Hi Jack Mocker란?

 

GitHub - koreatlwls/Hi-Jack-Mocker: Hi-Jack-Mocker is a project that leverages OkHttp3's interceptor to intercept and modify net

Hi-Jack-Mocker is a project that leverages OkHttp3's interceptor to intercept and modify network requests and responses, allowing you to verify the UI easily. - koreatlwls/Hi-Jack-Mocker

github.com

 

Hi Jack Mocker는 비개발자도 UI 엣지 케이스를 쉽게 테스트할 수 있도록 돕는 라이브러리입니다. 이 프로젝트는 OkHttp3 인터셉터를 활용하여 네트워크 요청과 응답을 가로채고 수정할 수 있게 합니다. 이를 통해 개발자뿐만 아니라 다양한 사용자들이 다양한 시나리오를 테스트할 수 있게 합니다.

Hi Jack Mocker 설계

1. OkHttp3의 인터셉터를 상속받아 네트워크 요청과 응답을 가로채는 기능을 하는 Custom Interceptor 필요

class HiJackInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val request = chain.request()
        val response = chain.proceed(request)
        return response
    }
}

Okhttp3는 Interceptor를 상속받아 intercept 함수를 override 하여 request와 response를 후처리 하는 방법을 쉽게 제공해주고 있습니다.

2. 가로챈 OkHttp3 응답을 전달하고 받을 수 있는 데이터 스트림을 관리하는 매니저가 필요

  • 네트워크 요청과 응답을 전달하고 관리하기 위한 데이터 스트림으로 Kotlin Channel을 선택
  • Channel은 외부 인터셉터에서 가로챈 데이터를 담아뒀다가 액티비티에서 소비하게 하는 역할을 합니다.
private var interceptorChannel = Channel<Response>(UNLIMITED)
private var resultChannel = Channel<Response>(UNLIMITED)

Okhttp3의 Resposne 타입의 UNLIMITED Channel을 이용할 예정입니다.

3. Hi Jack Mocker 모드의 On/Off 상태를 관리하는 기능 필요

  • Jetpack DataStore 이용
 

앱 아키텍처: 데이터 영역 - Datastore - Android 개발자  |  Android Developers

데이터 영역 라이브러리에 관한 이 앱 아키텍처 가이드를 통해 Preferences DataStore 및 Proto DataStore, 설정 등을 알아보세요.

developer.android.com

4. UI에 표현을 위한 데이터 모델링

 

  • ApiUiState: HTTP 스키마, 호스트, 메서드, 코드 등의 정보를 담고 있는 모델.
  • RequestUiState: 요청 내용을 담고 있는 모델.
  • ResponseUiState: 응답 내용을 담고 있는 모델.
data class ApiUiState(
	...
)

data class RequestUiState(
	...
)

data class ResponseUiState(
	...
)

 

5. JsonString을 UI에 표현하기 위한 데이터 모델링

  • 요청과 응답 body를 키-값 형식으로 파싱하기 위해 모델링을 정의했습니다.
data class SingleItem(
	...
)

data class ArrayGroup(
	...
)

data class ObjectGroup(
	...
)

6. UI 표현을 위한 Parsing Extension

  • 가로챈 Request와 Response를 UI에 표현하기 위해 데이터를 파싱하는 기능
  • Mocking한 Request와 Response를 다시 합치는 기능

앞으로

설계한 내용을 바탕으로 구현을 진행한 내용을 포스팅하겠습니다.

 

 

 

 

Hi Jack Mocker | Android 오픈 소스 배포기 (1)

Hi Jack Mocker란? GitHub - koreatlwls/Hi-Jack-Mocker: Hi-Jack-Mocker is a project that leverages OkHttp3's interceptor to intercept and modify netHi-Jack-Mocker is a project that leverages OkHttp3's interceptor to intercept and modify network requests an

si8ae.tistory.com

 

'Android > Hi Jack Mocker' 카테고리의 다른 글

Hi Jack Mocker | Android 오픈 소스 배포기 (1)  (0) 2024.06.23