View test reports →

Coverage Summary for Class: HttpLogEntityMapperKt (dev.skymansandy.wiretap.data.mappers)

Class Class, % Method, % Branch, % Line, % Instruction, %
HttpLogEntityMapperKt 100% (1/1) 100% (3/3) 100% (2/2) 100% (60/60) 100% (156/156)


 /*
  * Copyright (c) 2026 skymansandy. All rights reserved.
  */
 
 package dev.skymansandy.wiretap.data.mappers
 
 import dev.skymansandy.wiretap.data.db.room.entity.HttpLogEntity
 import dev.skymansandy.wiretap.data.db.room.entity.HttpLogListProjection
 import dev.skymansandy.wiretap.domain.model.HttpLog
 import dev.skymansandy.wiretap.domain.model.ResponseSource
 import dev.skymansandy.wiretap.helper.util.HeadersSerializerUtil
 
 internal fun HttpLogEntity.toDomain(): HttpLog {
     return HttpLog(
         id = id,
         url = url,
         method = method,
         requestHeaders = HeadersSerializerUtil.deserialize(requestHeaders),
         requestBody = requestBody,
         responseCode = responseCode.toInt(),
         responseHeaders = HeadersSerializerUtil.deserialize(responseHeaders),
         responseBody = responseBody,
         responseBodySize = responseBody?.length?.toLong() ?: 0,
         durationMs = durationMs,
         source = ResponseSource.valueOf(source),
         timestamp = timestamp,
         matchedRuleId = matchedRuleId,
         protocol = protocol,
         remoteAddress = remoteAddress,
         tlsProtocol = tlsProtocol,
         cipherSuite = cipherSuite,
         certificateCn = certificateCn,
         issuerCn = issuerCn,
         certificateExpiry = certificateExpiry,
     )
 }
 
 internal fun HttpLogListProjection.toDomain(): HttpLog {
     return HttpLog(
         id = id,
         url = url,
         method = method,
         requestHeaders = HeadersSerializerUtil.deserialize(requestHeaders),
         responseCode = responseCode.toInt(),
         responseHeaders = HeadersSerializerUtil.deserialize(responseHeaders),
         responseBodySize = responseBodySize,
         durationMs = durationMs,
         source = ResponseSource.valueOf(source),
         timestamp = timestamp,
         matchedRuleId = matchedRuleId,
         protocol = protocol,
         remoteAddress = remoteAddress,
         tlsProtocol = tlsProtocol,
         cipherSuite = cipherSuite,
         certificateCn = certificateCn,
         issuerCn = issuerCn,
         certificateExpiry = certificateExpiry,
     )
 }
 
 internal fun HttpLog.toRoomEntity(): HttpLogEntity {
     return HttpLogEntity(
         id = id,
         url = url,
         method = method,
         requestHeaders = HeadersSerializerUtil.serialize(requestHeaders),
         requestBody = requestBody,
         responseCode = responseCode.toLong(),
         responseHeaders = HeadersSerializerUtil.serialize(responseHeaders),
         responseBody = responseBody,
         durationMs = durationMs,
         source = source.name,
         timestamp = timestamp,
         matchedRuleId = matchedRuleId,
         protocol = protocol,
         remoteAddress = remoteAddress,
         tlsProtocol = tlsProtocol,
         cipherSuite = cipherSuite,
         certificateCn = certificateCn,
         issuerCn = issuerCn,
         certificateExpiry = certificateExpiry,
     )
 }