mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-21 03:28:47 +00:00
Fix header case bugs in status code errors.
This commit is contained in:
@@ -60,7 +60,7 @@ class RemoteConfigRefreshJob private constructor(parameters: Parameters) : Job(p
|
|||||||
if (result.code == 304) {
|
if (result.code == 304) {
|
||||||
Log.i(TAG, "Remote config has not changed since last pull.")
|
Log.i(TAG, "Remote config has not changed since last pull.")
|
||||||
SignalStore.remoteConfig.lastFetchTime = System.currentTimeMillis()
|
SignalStore.remoteConfig.lastFetchTime = System.currentTimeMillis()
|
||||||
SignalStore.misc.setLastKnownServerTime(result.headers[SignalWebSocket.SERVER_DELIVERED_TIMESTAMP_HEADER]?.toLongOrNull() ?: System.currentTimeMillis(), System.currentTimeMillis())
|
SignalStore.misc.setLastKnownServerTime(result.header(SignalWebSocket.SERVER_DELIVERED_TIMESTAMP_HEADER)?.toLongOrNull() ?: System.currentTimeMillis(), System.currentTimeMillis())
|
||||||
Result.success()
|
Result.success()
|
||||||
} else {
|
} else {
|
||||||
Result.retry(defaultBackoff())
|
Result.retry(defaultBackoff())
|
||||||
|
|||||||
@@ -201,8 +201,9 @@ sealed class NetworkResult<T>(
|
|||||||
data class NetworkError<T>(val exception: IOException) : NetworkResult<T>()
|
data class NetworkError<T>(val exception: IOException) : NetworkResult<T>()
|
||||||
|
|
||||||
/** Indicates we got a response, but it was a non-2xx response. */
|
/** Indicates we got a response, but it was a non-2xx response. */
|
||||||
data class StatusCodeError<T>(val code: Int, val stringBody: String?, val binaryBody: ByteArray?, val headers: Map<String, String>, val exception: NonSuccessfulResponseCodeException) : NetworkResult<T>() {
|
data class StatusCodeError<T>(val code: Int, val stringBody: String?, val binaryBody: ByteArray?, private val headers: Map<String, String>, val exception: NonSuccessfulResponseCodeException) : NetworkResult<T>() {
|
||||||
constructor(e: NonSuccessfulResponseCodeException) : this(e.code, e.stringBody, e.binaryBody, e.headers, e)
|
constructor(e: NonSuccessfulResponseCodeException) : this(e.code, e.stringBody, e.binaryBody, e.headers, e)
|
||||||
|
constructor(result: StatusCodeError<*>) : this(result.code, result.stringBody, result.binaryBody, result.headers, result.exception)
|
||||||
|
|
||||||
inline fun <reified T> parseJsonBody(): T? {
|
inline fun <reified T> parseJsonBody(): T? {
|
||||||
return try {
|
return try {
|
||||||
@@ -282,7 +283,7 @@ sealed class NetworkResult<T>(
|
|||||||
|
|
||||||
is NetworkError -> NetworkError<R>(exception)
|
is NetworkError -> NetworkError<R>(exception)
|
||||||
is ApplicationError -> ApplicationError<R>(throwable)
|
is ApplicationError -> ApplicationError<R>(throwable)
|
||||||
is StatusCodeError -> StatusCodeError<R>(code, stringBody, binaryBody, headers, exception)
|
is StatusCodeError -> StatusCodeError<R>(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
return map.runOnStatusCodeError(statusCodeErrorActions).runOnApplicationError(applicationErrorActions)
|
return map.runOnStatusCodeError(statusCodeErrorActions).runOnApplicationError(applicationErrorActions)
|
||||||
@@ -334,7 +335,7 @@ sealed class NetworkResult<T>(
|
|||||||
is Success -> result(this.result)
|
is Success -> result(this.result)
|
||||||
is NetworkError -> NetworkError<R>(exception)
|
is NetworkError -> NetworkError<R>(exception)
|
||||||
is ApplicationError -> ApplicationError<R>(throwable)
|
is ApplicationError -> ApplicationError<R>(throwable)
|
||||||
is StatusCodeError -> StatusCodeError<R>(code, stringBody, binaryBody, headers, exception)
|
is StatusCodeError -> StatusCodeError<R>(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
return then.runOnStatusCodeError(statusCodeErrorActions).runOnApplicationError(applicationErrorActions)
|
return then.runOnStatusCodeError(statusCodeErrorActions).runOnApplicationError(applicationErrorActions)
|
||||||
|
|||||||
Reference in New Issue
Block a user