Skip to content

Commit

Permalink
Improvement logger when make request
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanarodr committed Apr 29, 2024
1 parent 6604ba0 commit c6139d8
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import br.com.stonks.infrastructure.network.builder.OkHttpBuilder
import br.com.stonks.infrastructure.network.builder.RetrofitBuilder
import br.com.stonks.infrastructure.network.interceptor.MockResponseInterceptor
import br.com.stonks.infrastructure.network.mock.MockManager
import br.com.stonks.infrastructure.network.mock.MockPrettyLogger
import br.com.stonks.infrastructure.network.provider.NetworkServiceProvider
import br.com.stonks.infrastructure.network.provider.NetworkServiceProviderImpl
import okhttp3.Interceptor
Expand All @@ -13,6 +14,10 @@ import org.koin.dsl.module

val networkModule = module {

factory {
MockPrettyLogger()
}

factory {
MockManager(
assetManager = get(),
Expand All @@ -28,6 +33,7 @@ val networkModule = module {
factory {
MockResponseInterceptor(
mockManager = get(),
prettyLogger = get(),
)
} bind Interceptor::class

Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,37 @@
package br.com.stonks.infrastructure.network.interceptor

import br.com.stonks.infrastructure.network.mock.MockManager
import br.com.stonks.infrastructure.network.mock.MockPrettyLogger
import br.com.stonks.infrastructure.network.mock.MockResponse
import okhttp3.Interceptor
import okhttp3.Protocol
import okhttp3.Request
import okhttp3.Response

internal class MockResponseInterceptor(
private val mockManager: MockManager,
private val prettyLogger: MockPrettyLogger,
) : Interceptor {

override fun intercept(chain: Interceptor.Chain): Response {
return mockManager(
endpoint = chain.request().url.encodedPath
).run {
createMockedResponse(this)
prettyLogger(this)
createMockedResponse(chain.request(), this)
}
}

private fun createMockedResponse(response: MockResponse): Response {
private fun createMockedResponse(
request: Request,
response: MockResponse,
): Response {
return Response.Builder()
.code(response.code)
.message(response.message)
.body(response.body)
.protocol(Protocol.HTTP_1_1)
.request(request)
.build()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ internal class MockManager(

return createMockResponse(
endpoint = endpoint,
fileName = assetFileName,
payload = assetContent,
)
}
Expand All @@ -39,9 +40,14 @@ internal class MockManager(
return assetManager.openFile(fileName)
}

private fun createMockResponse(endpoint: String, payload: String?): MockResponse {
private fun createMockResponse(
endpoint: String,
fileName: String,
payload: String?,
): MockResponse {
return if (payload.isNullOrEmpty()) {
MockResponse(
fileName = fileName,
code = 500,
message = "Internal Server Error",
body = createResponseBody(
Expand All @@ -51,6 +57,7 @@ internal class MockManager(
)
} else {
MockResponse(
fileName = fileName,
code = 200,
message = "OK",
body = createResponseBody(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package br.com.stonks.infrastructure.network.mock

import timber.log.Timber
import java.io.IOException

internal class MockPrettyLogger {

operator fun invoke(mockResponse: MockResponse) {
try {
Timber.d(mockResponse.prettyLog())
} catch (_: IOException) {
return
}
}

private fun MockResponse.prettyLog(): String = """
.:: MOCK PRETTY LOGGER ::.
--> START REQUEST
Asset file: $fileName
--> END REQUEST
<-- START RESPONSE
Status: $code $message
Content-Type: ${body.contentType()}
Content-Length: ${body.contentLength()}
<-- END RESPONSE
""".trimIndent()
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package br.com.stonks.infrastructure.network.mock
import okhttp3.ResponseBody

internal data class MockResponse(
val fileName: String,
val code: Int,
val message: String,
val body: ResponseBody,
Expand Down

0 comments on commit c6139d8

Please sign in to comment.