시배's Android
Hi Jack Mocker | Android 오픈 소스 배포기 (2) 본문
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를 다시 합치는 기능
앞으로
설계한 내용을 바탕으로 구현을 진행한 내용을 포스팅하겠습니다.
'Android > Hi Jack Mocker' 카테고리의 다른 글
Hi Jack Mocker | 개선기 (2) feat.JSON 변환 이슈 (0) | 2024.07.12 |
---|---|
Hi Jack Mocker | 개선기 (1) feat.UninitializedPropertyAccessException (0) | 2024.07.12 |
Hi Jack Mocker | Android 오픈 소스 배포기 (4) (0) | 2024.07.11 |
Hi Jack Mocker | Android 오픈 소스 배포기 (3) (0) | 2024.07.10 |
Hi Jack Mocker | Android 오픈 소스 배포기 (1) (0) | 2024.06.23 |