Skip to content

Commit 708c858

Browse files
chore: add serialization of external events
1 parent 903d283 commit 708c858

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/main/kotlin/application/presenter/event/serialization/EventSerialization.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,36 @@
88

99
package application.presenter.event.serialization
1010

11+
import application.presenter.event.model.Event
12+
import application.presenter.event.model.MedicalTechnologyEvent
13+
import application.presenter.event.model.MedicalTechnologyEventKey
14+
import application.presenter.event.model.RoomEvent
15+
import application.presenter.event.model.RoomEventKey
1116
import application.presenter.event.model.RoomEventPayloads
1217
import entity.environment.Humidity
1318
import entity.environment.LightUnit
1419
import entity.environment.Luminosity
1520
import entity.environment.Presence
1621
import entity.environment.Temperature
1722
import entity.environment.TemperatureUnit
23+
import kotlinx.serialization.decodeFromString
24+
import kotlinx.serialization.json.Json
1825

1926
/** Module that wraps the event serialization. */
2027
object EventSerialization {
28+
/**
29+
* Convert an event body to an [Event] object giving its [eventKey].
30+
* @throws IllegalArgumentException if the event cannot be deserialized.
31+
*/
32+
fun String.toEvent(eventKey: String): Event<*> = when (eventKey) {
33+
RoomEventKey.TEMPERATURE_EVENT -> Json.decodeFromString<RoomEvent<RoomEventPayloads.TemperaturePayload>>(this)
34+
RoomEventKey.HUMIDITY_EVENT -> Json.decodeFromString<RoomEvent<RoomEventPayloads.HumidityPayload>>(this)
35+
RoomEventKey.LUMINOSITY_EVENT -> Json.decodeFromString<RoomEvent<RoomEventPayloads.LuminosityPayload>>(this)
36+
RoomEventKey.PRESENCE_EVENT -> Json.decodeFromString<RoomEvent<RoomEventPayloads.PresencePayload>>(this)
37+
MedicalTechnologyEventKey.USAGE_EVENT -> Json.decodeFromString<MedicalTechnologyEvent>(this)
38+
else -> throw IllegalArgumentException("Event not supported")
39+
}
40+
2141
/** Convert a Temperature Payload to [Temperature]. */
2242
fun RoomEventPayloads.TemperaturePayload.toTemperature() =
2343
Temperature(this.temperatureValue, this.temperatureUnit.toTemperatureUnit())

0 commit comments

Comments
 (0)