Skip to content

Commit

Permalink
add fields to session message
Browse files Browse the repository at this point in the history
  • Loading branch information
fractalwrench committed Mar 13, 2024
1 parent a24c482 commit 861e23b
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package io.embrace.android.embracesdk.payload
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import io.embrace.android.embracesdk.comms.api.ApiClient
import io.embrace.android.embracesdk.internal.payload.EnvelopeMetadata
import io.embrace.android.embracesdk.internal.payload.EnvelopeResource
import io.embrace.android.embracesdk.internal.payload.SessionPayload
import io.embrace.android.embracesdk.internal.spans.EmbraceSpanData

/**
Expand Down Expand Up @@ -52,5 +55,32 @@ internal data class SessionMessage @JvmOverloads internal constructor(
val spans: List<EmbraceSpanData>? = null,

@Json(name = "v")
val version: Int = ApiClient.MESSAGE_VERSION
val version: Int = ApiClient.MESSAGE_VERSION,

/*
* Values below this point are copied temporarily from [Envelope]. Eventually we will migrate
* everything to use [Envelope] and [SessionPayload] and remove this class,
* but we'll keep it for now for backwards compat.
*/

@Json(name = "resource")
val resource: EnvelopeResource? = null,

@Json(name = "metadata")
val metadata: EnvelopeMetadata? = null,

@Json(name = "version")
val newVersion: String? = null,

@Json(name = "type")
val type: String? = null,

@Json(name = "data")
val data: SessionPayload? = null
)

/**
* Returns true if this message is a v2 payload. If so, it should be sent to a different
* endpoint & handled differently.
*/
internal fun SessionMessage.isV2Payload() = data != null
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ import io.embrace.android.embracesdk.assertJsonMatchesGoldenFile
import io.embrace.android.embracesdk.deserializeEmptyJsonString
import io.embrace.android.embracesdk.deserializeJsonFromResource
import io.embrace.android.embracesdk.fakes.fakeSession
import io.embrace.android.embracesdk.internal.payload.SessionPayload
import io.embrace.android.embracesdk.internal.spans.EmbraceSpanData
import io.opentelemetry.api.trace.StatusCode
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertTrue
import org.junit.Test

internal class SessionMessageTest {
Expand Down Expand Up @@ -66,4 +69,11 @@ internal class SessionMessageTest {
fun testEmptyObject() {
deserializeEmptyJsonString<SessionMessage>()
}

@Test
fun `is v2 payload`() {
assertFalse(info.isV2Payload())
val obj = SessionMessage(session = session, data = SessionPayload())
assertTrue(obj.isV2Payload())
}
}

0 comments on commit 861e23b

Please sign in to comment.