From 321de014840c431ecbb272592606940f9a0a903b Mon Sep 17 00:00:00 2001 From: Jan Romann Date: Mon, 3 Jun 2024 21:59:21 +0200 Subject: [PATCH] fixup! feat!: implement proper serialization logic --- lib/src/core/definitions/form.dart | 4 ++ .../interaction_affordance.dart | 4 ++ .../core/definitions/thing_description.dart | 48 +++++++++++++++++++ lib/src/core/definitions/version_info.dart | 5 ++ 4 files changed, 61 insertions(+) diff --git a/lib/src/core/definitions/form.dart b/lib/src/core/definitions/form.dart index 8df6818a..6b14b60a 100644 --- a/lib/src/core/definitions/form.dart +++ b/lib/src/core/definitions/form.dart @@ -128,4 +128,8 @@ class Form { /// Additional fields collected during the parsing of a JSON object. final Map additionalFields = {}; + + Map toJson() { + throw UnimplementedError(); + } } diff --git a/lib/src/core/definitions/interaction_affordances/interaction_affordance.dart b/lib/src/core/definitions/interaction_affordances/interaction_affordance.dart index 2556cfdc..e6467c1c 100644 --- a/lib/src/core/definitions/interaction_affordances/interaction_affordance.dart +++ b/lib/src/core/definitions/interaction_affordances/interaction_affordance.dart @@ -55,4 +55,8 @@ sealed class InteractionAffordance { /// Additional fields that could not be deserialized as class members. final Map? additionalFields; + + Map toJson() { + throw UnimplementedError(); + } } diff --git a/lib/src/core/definitions/thing_description.dart b/lib/src/core/definitions/thing_description.dart index de4244c1..fe7ac1a5 100644 --- a/lib/src/core/definitions/thing_description.dart +++ b/lib/src/core/definitions/thing_description.dart @@ -168,6 +168,54 @@ class ThingDescription { result["description"] = description; } + final version = this.version; + if (version != null) { + result["version"] = version.toJson(); + } + + if (created != null) { + result["created"] = created.toString(); + } + + if (modified != null) { + result["modified"] = modified.toString(); + } + + if (support != null) { + result["support"] = support.toString(); + } + + if (base != null) { + result["base"] = base.toString(); + } + + if (id != null) { + result["id"] = id; + } + + final forms = this.forms; + if (forms != null) { + result["forms"] = forms.map((form) => form.toJson()); + } + + final properties = this.properties; + if (properties != null) { + result["properties"] = + properties.map((key, property) => MapEntry(key, property.toJson())); + } + + final actions = this.actions; + if (actions != null) { + result["actions"] = + actions.map((key, action) => MapEntry(key, action.toJson())); + } + + final events = this.events; + if (events != null) { + result["events"] = + events.map((key, event) => MapEntry(key, event.toJson())); + } + return result; } diff --git a/lib/src/core/definitions/version_info.dart b/lib/src/core/definitions/version_info.dart index c2a485e7..c6e0c477 100644 --- a/lib/src/core/definitions/version_info.dart +++ b/lib/src/core/definitions/version_info.dart @@ -48,4 +48,9 @@ class VersionInfo { /// Additional fields collected during the parsing of a JSON object. final Map? additionalFields; + + /// Converts this [VersionInfo] to a [Map] resembling a JSON object. + Map toJson() { + throw UnimplementedError(); + } }