Skip to content

Commit 270d1b9

Browse files
committed
feat: introduce toThingDescription extension method
1 parent 88bbe14 commit 270d1b9

File tree

6 files changed

+13
-40
lines changed

6 files changed

+13
-40
lines changed

example/coaps_readproperty.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Future<void> main(List<String> args) async {
6161
},
6262
};
6363

64-
final thingDescription = ThingDescription.fromJson(thingDescriptionJson);
64+
final thingDescription = thingDescriptionJson.toThingDescription();
6565
final consumedThing = await wot.consume(thingDescription);
6666
final status = await consumedThing.readProperty("status");
6767
final value = await status.value();

example/complex_example.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ Future<void> main() async {
103103
);
104104
final wot = await servient.start();
105105

106-
final thingDescription = ThingDescription.fromJson(thingDescriptionJson);
106+
final thingDescription = thingDescriptionJson.toThingDescription();
107107
final consumedThing = await wot.consume(thingDescription);
108108
final status = await consumedThing.readProperty("status");
109109
final value1 = await status.value();

example/http_basic_authentication.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Future<void> main(List<String> args) async {
6767
);
6868
final wot = await servient.start();
6969

70-
final thingDescription = ThingDescription.fromJson(thingDescriptionJson);
70+
final thingDescription = thingDescriptionJson.toThingDescription();
7171
final consumedThing = await wot.consume(thingDescription);
7272
final status = await consumedThing.readProperty("status");
7373

example/mqtt_example.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Future<void> main(List<String> args) async {
6767

6868
final wot = await servient.start();
6969

70-
final thingDescription = ThingDescription.fromJson(thingDescriptionJson);
70+
final thingDescription = thingDescriptionJson.toThingDescription();
7171
final consumedThing = await wot.consume(thingDescription);
7272
await consumedThing.readAndPrintProperty("status");
7373

lib/src/core/wot.dart

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ class WoT implements scripting_api.WoT {
136136

137137
final thingDescriptionStream = Stream.fromIterable(
138138
rawThingDescriptions.whereType<Map<String, Object?>>(),
139-
).toThingDescriptionStream();
139+
).map((rawThingDescription) => rawThingDescription.toThingDescription());
140140

141141
return ThingDiscoveryProcess(thingDescriptionStream, filter);
142142
}
@@ -162,38 +162,3 @@ extension _DirectoryValidationExtension on ThingDescription {
162162
atTypes.contains(type);
163163
}
164164
}
165-
166-
extension _DirectoryTdDeserializationExtension on Stream<Map<String, Object?>> {
167-
Stream<ThingDescription> toThingDescriptionStream() {
168-
const streamTransformer = StreamTransformer(_transformerMethod);
169-
170-
return transform(streamTransformer);
171-
}
172-
173-
static StreamSubscription<ThingDescription> _transformerMethod(
174-
Stream<Map<String, dynamic>> rawThingDescriptionStream,
175-
bool cancelOnError,
176-
) {
177-
final streamController = StreamController<ThingDescription>();
178-
179-
final streamSubscription = rawThingDescriptionStream.listen(
180-
(rawThingDescription) {
181-
try {
182-
streamController.add(ThingDescription.fromJson(rawThingDescription));
183-
} on Exception catch (exception) {
184-
streamController.addError(exception);
185-
}
186-
},
187-
onDone: streamController.close,
188-
onError: streamController.addError,
189-
cancelOnError: cancelOnError,
190-
);
191-
192-
streamController
193-
..onPause = streamSubscription.pause
194-
..onResume = streamSubscription.resume
195-
..onCancel = streamSubscription.cancel;
196-
197-
return streamController.stream.listen(null);
198-
}
199-
}

lib/src/definitions/thing_description.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,3 +252,11 @@ class ThingDescription {
252252
return id ?? base?.toString() ?? title;
253253
}
254254
}
255+
256+
/// Extension for generating [ThingDescription]s from [Map]s more easily.
257+
extension ToThingDescription on Map<String, dynamic> {
258+
/// Tries to generate a [ThingDescription] from this [Map] object.
259+
ThingDescription toThingDescription() {
260+
return ThingDescription.fromJson(this);
261+
}
262+
}

0 commit comments

Comments
 (0)