TP-78987 | Network broadcast deprecated (#221)

This commit is contained in:
Sayed Owais Ali
2024-08-22 18:02:33 +05:30
committed by GitHub
parent ae21b143a7
commit 1ed9545b56
4 changed files with 7 additions and 90 deletions

View File

@@ -11,5 +11,5 @@ import okhttp3.Request
import okhttp3.Response
interface AlfredApiLogsProvider {
fun sendApiLog(request: Request, response: Response)
fun sendApiLog(request: Request, response: Response, exception: Exception? = null)
}

View File

@@ -8,17 +8,13 @@
package com.navi.alfred.network
import android.content.Context
import android.content.Intent
import android.util.Log
import com.chuckerteam.chucker.api.ChuckerCollector
import com.chuckerteam.chucker.api.ChuckerInterceptor
import com.google.gson.GsonBuilder
import com.navi.alfred.AlfredManager
import com.navi.alfred.BuildConfig
import com.navi.alfred.deserializer.FailureDataDeserializer
import com.navi.alfred.model.ErrorMessage
import com.navi.alfred.model.FailureRequest
import com.navi.alfred.network.model.RequestInfo
import com.navi.alfred.utils.AlfredConstants
import com.navi.alfred.utils.ApiConstants
import com.navi.alfred.utils.handleException
@@ -40,13 +36,14 @@ object AlfredFailureRetrofitProvider {
private val networkInterceptor: Interceptor
get() = Interceptor { chain ->
val request = chain.request()
var exception: Exception? = null
val response =
if (isNetworkAvailable()) {
try {
chain.proceed(request).newBuilder().build()
} catch (e: Exception) {
exception = e
val errorMessage = handleException(e)
setNetworkFailureBroadcast(e, errorMessage, request)
// A mocked response in case of n/w exception
Response.Builder()
.request(request)
@@ -66,7 +63,7 @@ object AlfredFailureRetrofitProvider {
.build()
}
AlfredApiLogsManager.getAlfredApiLogsProvider()
?.sendApiLog(request = request, response = response)
?.sendApiLog(request = request, response = response, exception = exception)
response
}
@@ -118,25 +115,6 @@ object AlfredFailureRetrofitProvider {
.build()
}
private fun setNetworkFailureBroadcast(
e: Exception,
errorMessage: ErrorMessage,
request: Request
) {
Log.d("Alfred", "AlfredRetrofitProvider setNetworkFailureBroadcast - sending Broadcast")
val intent = Intent(AlfredConstants.BROADCAST_ACTION_TYPE)
val requestInfo =
RequestInfo(
request.url.toString(),
request.headers[AlfredConstants.HEADER_X_TARGET],
request.headers[AlfredConstants.HEADER_APP_REQUEST_ID]
)
intent.putExtra(AlfredConstants.BROADCAST_EXCEPTION, e)
intent.putExtra(AlfredConstants.BROADCAST_ERROR_MESSAGE, errorMessage)
intent.putExtra(AlfredConstants.BROADCAST_REQUEST, requestInfo)
AlfredManager.applicationContext.sendBroadcast(intent)
}
fun getApiService(): AlfredFailureRetrofitService {
return apiService
}

View File

@@ -7,17 +7,7 @@
package com.navi.alfred.network
import android.content.Intent
import android.util.Log
import com.navi.alfred.AlfredManager
import com.navi.alfred.model.ErrorMessage
import com.navi.alfred.network.model.RequestInfo
import com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE
import com.navi.alfred.utils.AlfredConstants.BROADCAST_ERROR_MESSAGE
import com.navi.alfred.utils.AlfredConstants.BROADCAST_EXCEPTION
import com.navi.alfred.utils.AlfredConstants.BROADCAST_REQUEST
import com.navi.alfred.utils.AlfredConstants.HEADER_APP_REQUEST_ID
import com.navi.alfred.utils.AlfredConstants.HEADER_X_TARGET
import com.navi.alfred.utils.handleException
import com.navi.alfred.utils.orZero
import okhttp3.*
@@ -34,8 +24,6 @@ internal class AlfredResourceManagerInterceptor {
chain.proceed(request).newBuilder().build()
} catch (e: Exception) {
val errorMessage = handleException(e)
// send failure broadcast if the request is critical
setNetworkFailureBroadcast(e, errorMessage, request)
// A mocked response in case of n/w exception
Response.Builder()
.request(request)
@@ -54,27 +42,6 @@ internal class AlfredResourceManagerInterceptor {
.message(AlfredManager.criticalJourneyResponseMessage.orEmpty())
.build()
}
AlfredApiLogsManager.getAlfredApiLogsProvider()
?.sendApiLog(request = request, response = response)
response
}
private fun setNetworkFailureBroadcast(
e: Exception,
errorMessage: ErrorMessage,
request: Request
) {
Log.d("Alfred", "AlfredResourceManagerInterceptor: setNetworkFailureBroadcast")
val intent = Intent(BROADCAST_ACTION_TYPE)
val requestInfo =
RequestInfo(
request.url.toString(),
request.headers[HEADER_X_TARGET],
request.headers[HEADER_APP_REQUEST_ID]
)
intent.putExtra(BROADCAST_EXCEPTION, e)
intent.putExtra(BROADCAST_ERROR_MESSAGE, errorMessage)
intent.putExtra(BROADCAST_REQUEST, requestInfo)
AlfredManager.applicationContext.sendBroadcast(intent)
}
}

View File

@@ -8,8 +8,6 @@
package com.navi.alfred.network
import android.content.Context
import android.content.Intent
import android.util.Log
import com.chuckerteam.chucker.api.ChuckerCollector
import com.chuckerteam.chucker.api.ChuckerInterceptor
import com.google.gson.GsonBuilder
@@ -18,17 +16,9 @@ import com.navi.alfred.BuildConfig
import com.navi.alfred.deserializer.AnalyticsDataDeserializer
import com.navi.alfred.deserializer.MetricsDataDeserializer
import com.navi.alfred.deserializer.SessionDataDeserializer
import com.navi.alfred.model.ErrorMessage
import com.navi.alfred.model.EventMetricRequest
import com.navi.alfred.model.SessionRequest
import com.navi.alfred.network.model.RequestInfo
import com.navi.alfred.utils.AlfredConstants
import com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE
import com.navi.alfred.utils.AlfredConstants.BROADCAST_ERROR_MESSAGE
import com.navi.alfred.utils.AlfredConstants.BROADCAST_EXCEPTION
import com.navi.alfred.utils.AlfredConstants.BROADCAST_REQUEST
import com.navi.alfred.utils.AlfredConstants.HEADER_APP_REQUEST_ID
import com.navi.alfred.utils.AlfredConstants.HEADER_X_TARGET
import com.navi.alfred.utils.ApiConstants
import com.navi.alfred.utils.handleException
import com.navi.alfred.utils.isNetworkAvailable
@@ -50,13 +40,14 @@ object AlfredRetrofitProvider {
private val networkInterceptor: Interceptor
get() = Interceptor { chain ->
val request = chain.request()
var exception: Exception? = null
val response =
if (isNetworkAvailable()) {
try {
chain.proceed(request).newBuilder().build()
} catch (e: Exception) {
exception = e
val errorMessage = handleException(e)
setNetworkFailureBroadcast(e, errorMessage, request)
// A mocked response in case of n/w exception
Response.Builder()
.request(request)
@@ -76,7 +67,7 @@ object AlfredRetrofitProvider {
.build()
}
AlfredApiLogsManager.getAlfredApiLogsProvider()
?.sendApiLog(request = request, response = response)
?.sendApiLog(request = request, response = response, exception = exception)
response
}
@@ -137,25 +128,6 @@ object AlfredRetrofitProvider {
return apiService
}
private fun setNetworkFailureBroadcast(
e: Exception,
errorMessage: ErrorMessage,
request: Request
) {
Log.d("Alfred", "AlfredRetrofitProvider setNetworkFailureBroadcast - sending Broadcast")
val intent = Intent(BROADCAST_ACTION_TYPE)
val requestInfo =
RequestInfo(
request.url.toString(),
request.headers[HEADER_X_TARGET],
request.headers[HEADER_APP_REQUEST_ID]
)
intent.putExtra(BROADCAST_EXCEPTION, e)
intent.putExtra(BROADCAST_ERROR_MESSAGE, errorMessage)
intent.putExtra(BROADCAST_REQUEST, requestInfo)
AlfredManager.applicationContext.sendBroadcast(intent)
}
private fun loggingInterceptor() =
HttpLoggingInterceptor().apply { setLevel(HttpLoggingInterceptor.Level.BODY) }
}