mirror of
https://github.com/openflocon/Flocon.git
synced 2026-05-03 20:10:08 +00:00
Refact network model (#123)
* refact: [NETWORK] model with error * refact: [NETWORK] model with error * refact: [NETWORK] model with error * refact: [NETWORK] model with error * refact: [NETWORK] model with error * refact * merged with main --------- Co-authored-by: Florent Champigny <florent@bere.al>
This commit is contained in:
parent
db3c8a118c
commit
35d896af23
31 changed files with 571 additions and 504 deletions
|
|
@ -2,81 +2,68 @@ package io.github.openflocon.data.local.network.mapper
|
|||
|
||||
import io.github.openflocon.data.local.network.models.FloconNetwockCallEntityLite
|
||||
import io.github.openflocon.data.local.network.models.FloconNetworkCallType
|
||||
import io.github.openflocon.data.local.network.models.FloconNetworkRequestLiteEmbedded
|
||||
import io.github.openflocon.data.local.network.models.FloconNetworkResponseLiteEmbedded
|
||||
import io.github.openflocon.domain.network.models.FloconNetworkCallDomainModel
|
||||
import io.github.openflocon.domain.network.models.FloconNetworkRequestDomainModel
|
||||
import io.github.openflocon.domain.network.models.FloconNetworkResponseDomainModel
|
||||
import kotlin.Boolean
|
||||
|
||||
fun toDomainModel(request: FloconNetworkRequestLiteEmbedded): FloconNetworkRequestDomainModel {
|
||||
return with(request) {
|
||||
FloconNetworkRequestDomainModel(
|
||||
url = this.url,
|
||||
method = this.method,
|
||||
startTime = this.startTime,
|
||||
headers = this.requestHeaders,
|
||||
body = null, // null on lite
|
||||
byteSize = this.requestByteSize,
|
||||
isMocked = this.isMocked,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun FloconNetwockCallEntityLite.toDomainModel(): FloconNetworkCallDomainModel? {
|
||||
return try {
|
||||
val networkRequest = toDomainModel(request)
|
||||
when (type) {
|
||||
FloconNetworkCallType.HTTP -> FloconNetworkCallDomainModel.Http(
|
||||
callId = callId,
|
||||
networkRequest = networkRequest,
|
||||
response = response?.let {
|
||||
FloconNetworkCallDomainModel.Http.Response(
|
||||
httpCode = response.http!!.responseHttpCode,
|
||||
networkResponse = toDomainModel(response),
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
FloconNetworkCallType.GRAPHQL -> FloconNetworkCallDomainModel.GraphQl(
|
||||
callId = callId,
|
||||
request = FloconNetworkCallDomainModel.GraphQl.Request(
|
||||
networkRequest = networkRequest,
|
||||
query = request.graphql!!.query,
|
||||
operationType = request.graphql.operationType,
|
||||
),
|
||||
response = response?.let {
|
||||
FloconNetworkCallDomainModel.GraphQl.Response(
|
||||
httpCode = response.graphql!!.responseHttpCode,
|
||||
isSuccess = response.graphql.isSuccess,
|
||||
networkResponse = toDomainModel(response),
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
FloconNetworkCallType.GRPC -> FloconNetworkCallDomainModel.Grpc(
|
||||
callId = callId,
|
||||
networkRequest = networkRequest,
|
||||
response = response?.let {
|
||||
FloconNetworkCallDomainModel.Grpc.Response(
|
||||
networkResponse = toDomainModel(response),
|
||||
responseStatus = response.grpc!!.responseStatus,
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
FloconNetworkCallDomainModel(
|
||||
callId = callId,
|
||||
request = toRequestDomainModel(),
|
||||
response = response?.toDomainModel(),
|
||||
)
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
private fun toDomainModel(response: FloconNetworkResponseLiteEmbedded): FloconNetworkResponseDomainModel = with(response) {
|
||||
FloconNetworkResponseDomainModel(
|
||||
contentType = responseContentType,
|
||||
private fun FloconNetwockCallEntityLite.toRequestDomainModel(): FloconNetworkCallDomainModel.Request =
|
||||
FloconNetworkCallDomainModel.Request(
|
||||
url = request.url,
|
||||
method = request.method,
|
||||
startTime = request.startTime,
|
||||
headers = request.requestHeaders,
|
||||
body = null, // null on lite
|
||||
headers = responseHeaders,
|
||||
byteSize = responseByteSize,
|
||||
durationMs = durationMs,
|
||||
byteSize = request.requestByteSize,
|
||||
isMocked = request.isMocked,
|
||||
specificInfos = when (type) {
|
||||
FloconNetworkCallType.HTTP -> FloconNetworkCallDomainModel.Request.SpecificInfos.Http
|
||||
FloconNetworkCallType.GRAPHQL -> FloconNetworkCallDomainModel.Request.SpecificInfos.GraphQl(
|
||||
query = request.graphql!!.query,
|
||||
operationType = request.graphql.operationType,
|
||||
)
|
||||
|
||||
FloconNetworkCallType.GRPC -> FloconNetworkCallDomainModel.Request.SpecificInfos.Grpc
|
||||
},
|
||||
)
|
||||
|
||||
private fun FloconNetworkResponseLiteEmbedded.toDomainModel(): FloconNetworkCallDomainModel.Response? {
|
||||
return if(responseError != null) {
|
||||
FloconNetworkCallDomainModel.Response.Failure(
|
||||
durationMs = durationMs,
|
||||
responseError
|
||||
)
|
||||
} else {
|
||||
FloconNetworkCallDomainModel.Response.Success(
|
||||
contentType = responseContentType,
|
||||
body = null, // null on lite
|
||||
headers = responseHeaders,
|
||||
byteSize = responseByteSize,
|
||||
durationMs = durationMs,
|
||||
specificInfos = when {
|
||||
graphql != null -> FloconNetworkCallDomainModel.Response.Success.SpecificInfos.GraphQl(
|
||||
httpCode = graphql.responseHttpCode,
|
||||
isSuccess = graphql.isSuccess,
|
||||
)
|
||||
grpc != null -> FloconNetworkCallDomainModel.Response.Success.SpecificInfos.Grpc(
|
||||
grpcStatus = grpc.responseStatus,
|
||||
)
|
||||
http != null -> FloconNetworkCallDomainModel.Response.Success.SpecificInfos.Http(
|
||||
httpCode = http.responseHttpCode,
|
||||
)
|
||||
else -> return null
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,82 +2,70 @@ package io.github.openflocon.data.local.network.mapper
|
|||
|
||||
import io.github.openflocon.data.local.network.models.FloconNetworkCallEntity
|
||||
import io.github.openflocon.data.local.network.models.FloconNetworkCallType
|
||||
import io.github.openflocon.data.local.network.models.FloconNetworkRequestEmbedded
|
||||
import io.github.openflocon.data.local.network.models.FloconNetworkResponseEmbedded
|
||||
import io.github.openflocon.domain.network.models.FloconNetworkCallDomainModel
|
||||
import io.github.openflocon.domain.network.models.FloconNetworkRequestDomainModel
|
||||
import io.github.openflocon.domain.network.models.FloconNetworkResponseDomainModel
|
||||
|
||||
private fun toDomainModel(request: FloconNetworkRequestEmbedded): FloconNetworkRequestDomainModel {
|
||||
return with(request) {
|
||||
FloconNetworkRequestDomainModel(
|
||||
url = this.url,
|
||||
method = this.method,
|
||||
startTime = this.startTime,
|
||||
headers = this.requestHeaders,
|
||||
body = this.requestBody,
|
||||
byteSize = this.requestByteSize,
|
||||
isMocked = this.isMocked,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun FloconNetworkCallEntity.toDomainModel(): FloconNetworkCallDomainModel? {
|
||||
return try {
|
||||
val networkRequest = toDomainModel(request)
|
||||
when (type) {
|
||||
FloconNetworkCallType.HTTP -> FloconNetworkCallDomainModel.Http(
|
||||
callId = callId,
|
||||
networkRequest = networkRequest,
|
||||
response = response?.let {
|
||||
FloconNetworkCallDomainModel.Http.Response(
|
||||
httpCode = response.http!!.responseHttpCode,
|
||||
networkResponse = toDomainModel(response),
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
FloconNetworkCallType.GRAPHQL -> FloconNetworkCallDomainModel.GraphQl(
|
||||
callId = callId,
|
||||
request = FloconNetworkCallDomainModel.GraphQl.Request(
|
||||
networkRequest = networkRequest,
|
||||
query = request.graphql!!.query,
|
||||
operationType = request.graphql.operationType,
|
||||
),
|
||||
response = response?.let {
|
||||
FloconNetworkCallDomainModel.GraphQl.Response(
|
||||
httpCode = response.graphql!!.responseHttpCode,
|
||||
isSuccess = response.graphql.isSuccess,
|
||||
networkResponse = toDomainModel(response),
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
FloconNetworkCallType.GRPC -> FloconNetworkCallDomainModel.Grpc(
|
||||
callId = callId,
|
||||
networkRequest = networkRequest,
|
||||
response = response?.let {
|
||||
FloconNetworkCallDomainModel.Grpc.Response(
|
||||
networkResponse = toDomainModel(response),
|
||||
responseStatus = response.grpc!!.responseStatus,
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
FloconNetworkCallDomainModel(
|
||||
callId = callId,
|
||||
request = toRequestDomainModel(),
|
||||
response = response?.toDomainModel(),
|
||||
)
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
private fun toDomainModel(response: FloconNetworkResponseEmbedded): FloconNetworkResponseDomainModel =
|
||||
with(response) {
|
||||
FloconNetworkResponseDomainModel(
|
||||
private fun FloconNetworkCallEntity.toRequestDomainModel(): FloconNetworkCallDomainModel.Request =
|
||||
FloconNetworkCallDomainModel.Request(
|
||||
url = request.url,
|
||||
method = request.method,
|
||||
startTime = request.startTime,
|
||||
headers = request.requestHeaders,
|
||||
body = request.requestBody,
|
||||
byteSize = request.requestByteSize,
|
||||
isMocked = request.isMocked,
|
||||
specificInfos = when (type) {
|
||||
FloconNetworkCallType.HTTP -> FloconNetworkCallDomainModel.Request.SpecificInfos.Http
|
||||
FloconNetworkCallType.GRAPHQL -> FloconNetworkCallDomainModel.Request.SpecificInfos.GraphQl(
|
||||
query = request.graphql!!.query,
|
||||
operationType = request.graphql.operationType,
|
||||
)
|
||||
|
||||
FloconNetworkCallType.GRPC -> FloconNetworkCallDomainModel.Request.SpecificInfos.Grpc
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
private fun FloconNetworkResponseEmbedded.toDomainModel(): FloconNetworkCallDomainModel.Response? {
|
||||
return if(responseError != null) {
|
||||
FloconNetworkCallDomainModel.Response.Failure(
|
||||
durationMs = durationMs,
|
||||
issue = responseError
|
||||
)
|
||||
} else {
|
||||
FloconNetworkCallDomainModel.Response.Success(
|
||||
contentType = responseContentType,
|
||||
body = responseBody,
|
||||
headers = responseHeaders,
|
||||
byteSize = responseByteSize,
|
||||
durationMs = durationMs,
|
||||
specificInfos = when {
|
||||
graphql != null -> FloconNetworkCallDomainModel.Response.Success.SpecificInfos.GraphQl(
|
||||
httpCode = graphql.responseHttpCode,
|
||||
isSuccess = graphql.isSuccess,
|
||||
)
|
||||
grpc != null -> FloconNetworkCallDomainModel.Response.Success.SpecificInfos.Grpc(
|
||||
grpcStatus = grpc.responseStatus,
|
||||
)
|
||||
http != null -> FloconNetworkCallDomainModel.Response.Success.SpecificInfos.Http(
|
||||
httpCode = http.responseHttpCode,
|
||||
)
|
||||
else -> return null
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,61 +19,75 @@ fun FloconNetworkCallDomainModel.toEntity(
|
|||
callId = callId,
|
||||
deviceId = deviceId,
|
||||
packageName = packageName,
|
||||
type = when (this) {
|
||||
is FloconNetworkCallDomainModel.Http -> FloconNetworkCallType.HTTP
|
||||
is FloconNetworkCallDomainModel.GraphQl -> FloconNetworkCallType.GRAPHQL
|
||||
is FloconNetworkCallDomainModel.Grpc -> FloconNetworkCallType.GRPC
|
||||
type = when (this.request.specificInfos) {
|
||||
is FloconNetworkCallDomainModel.Request.SpecificInfos.Http -> FloconNetworkCallType.HTTP
|
||||
is FloconNetworkCallDomainModel.Request.SpecificInfos.GraphQl -> FloconNetworkCallType.GRAPHQL
|
||||
is FloconNetworkCallDomainModel.Request.SpecificInfos.Grpc -> FloconNetworkCallType.GRPC
|
||||
},
|
||||
request = FloconNetworkRequestEmbedded(
|
||||
url = networkRequest.url,
|
||||
method = networkRequest.method,
|
||||
startTime = networkRequest.startTime,
|
||||
requestHeaders = networkRequest.headers,
|
||||
requestBody = networkRequest.body,
|
||||
requestByteSize = networkRequest.byteSize,
|
||||
isMocked = networkRequest.isMocked,
|
||||
graphql = when (this) {
|
||||
is FloconNetworkCallDomainModel.GraphQl -> NetworkCallGraphQlRequestEmbedded(
|
||||
query = this.request.query,
|
||||
operationType = this.request.operationType,
|
||||
url = request.url,
|
||||
method = request.method,
|
||||
startTime = request.startTime,
|
||||
requestHeaders = request.headers,
|
||||
requestBody = request.body,
|
||||
requestByteSize = request.byteSize,
|
||||
isMocked = request.isMocked,
|
||||
graphql = when (val s = this.request.specificInfos) {
|
||||
is FloconNetworkCallDomainModel.Request.SpecificInfos.GraphQl -> NetworkCallGraphQlRequestEmbedded(
|
||||
query = s.query,
|
||||
operationType = s.operationType,
|
||||
)
|
||||
|
||||
else -> null
|
||||
}
|
||||
),
|
||||
response = networkResponse?.let { networkResponse ->
|
||||
FloconNetworkResponseEmbedded(
|
||||
durationMs = networkResponse.durationMs,
|
||||
responseContentType = networkResponse.contentType,
|
||||
responseBody = networkResponse.body,
|
||||
responseHeaders = networkResponse.headers,
|
||||
responseByteSize = networkResponse.byteSize,
|
||||
graphql = when (this) {
|
||||
is FloconNetworkCallDomainModel.GraphQl -> NetworkCallGraphQlResponseEmbedded(
|
||||
responseHttpCode = (this.response as FloconNetworkCallDomainModel.GraphQl.Response).httpCode,
|
||||
isSuccess = (this.response as FloconNetworkCallDomainModel.GraphQl.Response).isSuccess,
|
||||
response = response?.let { networkResponse ->
|
||||
when(networkResponse) {
|
||||
is FloconNetworkCallDomainModel.Response.Failure -> {
|
||||
FloconNetworkResponseEmbedded(
|
||||
durationMs = networkResponse.durationMs,
|
||||
responseError = networkResponse.issue,
|
||||
graphql = null,
|
||||
http = null,
|
||||
grpc = null,
|
||||
responseContentType = null,
|
||||
responseBody = null,
|
||||
responseHeaders = emptyMap(),
|
||||
responseByteSize = 0,
|
||||
)
|
||||
|
||||
is FloconNetworkCallDomainModel.Grpc,
|
||||
is FloconNetworkCallDomainModel.Http -> null
|
||||
},
|
||||
http = when (this) {
|
||||
is FloconNetworkCallDomainModel.Http -> NetworkCallHttpResponseEmbedded(
|
||||
responseHttpCode = (this.response as FloconNetworkCallDomainModel.Http.Response).httpCode,
|
||||
)
|
||||
|
||||
is FloconNetworkCallDomainModel.Grpc,
|
||||
is FloconNetworkCallDomainModel.GraphQl -> null
|
||||
},
|
||||
grpc = when (this) {
|
||||
is FloconNetworkCallDomainModel.Grpc -> NetworkCallGrpcResponseEmbedded(
|
||||
responseStatus = (this.response as FloconNetworkCallDomainModel.Grpc.Response).responseStatus,
|
||||
)
|
||||
|
||||
is FloconNetworkCallDomainModel.Http,
|
||||
is FloconNetworkCallDomainModel.GraphQl -> null
|
||||
}
|
||||
)
|
||||
is FloconNetworkCallDomainModel.Response.Success -> {
|
||||
FloconNetworkResponseEmbedded(
|
||||
durationMs = networkResponse.durationMs,
|
||||
responseContentType = networkResponse.contentType,
|
||||
responseBody = networkResponse.body,
|
||||
responseHeaders = networkResponse.headers,
|
||||
responseByteSize = networkResponse.byteSize,
|
||||
responseError = null,
|
||||
graphql = when (val s = networkResponse.specificInfos) {
|
||||
is FloconNetworkCallDomainModel.Response.Success.SpecificInfos.GraphQl -> NetworkCallGraphQlResponseEmbedded(
|
||||
responseHttpCode = s.httpCode,
|
||||
isSuccess = s.isSuccess,
|
||||
)
|
||||
|
||||
else -> null
|
||||
},
|
||||
http = when (val s = networkResponse.specificInfos) {
|
||||
is FloconNetworkCallDomainModel.Response.Success.SpecificInfos.Http -> NetworkCallHttpResponseEmbedded(
|
||||
responseHttpCode = s.httpCode,
|
||||
)
|
||||
|
||||
else -> null
|
||||
},
|
||||
grpc = when (val s = networkResponse.specificInfos) {
|
||||
is FloconNetworkCallDomainModel.Response.Success.SpecificInfos.Grpc -> NetworkCallGrpcResponseEmbedded(
|
||||
responseStatus = s.grpcStatus,
|
||||
)
|
||||
else -> null
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ data class FloconNetworkRequestLiteEmbedded(
|
|||
|
||||
data class FloconNetworkResponseLiteEmbedded(
|
||||
val durationMs: Double,
|
||||
val responseError: String?,
|
||||
val responseContentType: String?,
|
||||
//val responseBody: String?,
|
||||
val responseHeaders: Map<String, String>,
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ data class FloconNetworkResponseEmbedded(
|
|||
val responseBody: String?,
|
||||
val responseHeaders: Map<String, String>,
|
||||
val responseByteSize: Long,
|
||||
val responseError: String?,
|
||||
|
||||
@Embedded(prefix = "graphql_")
|
||||
val graphql: NetworkCallGraphQlResponseEmbedded?,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue