Skip to content

Commit

Permalink
Merge pull request #203 from eclipse-thingweb/coap-observe-subprotocol
Browse files Browse the repository at this point in the history
feat(binding_coap)!: remove support for cov:observe subprotocol
  • Loading branch information
JKRhb authored Dec 6, 2024
2 parents aadc0cb + 44059a1 commit b571667
Show file tree
Hide file tree
Showing 7 changed files with 7 additions and 79 deletions.
1 change: 0 additions & 1 deletion example/complex_example.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ const thingDescriptionJson = {
{
"href": "coap://californium.eclipseprojects.io/obs",
"op": ["observeproperty", "unobserveproperty"],
"subprotocol": "cov:observe",
}
],
},
Expand Down
14 changes: 3 additions & 11 deletions lib/src/binding_coap/coap_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -421,22 +421,14 @@ final class CoapClient extends ProtocolClient
accept: form.accept,
);

final subprotocol = form.coapSubprotocol ?? operationType.subprotocol;

final coapClient = coap.CoapClient(
form.resolvedHref,
config: _InternalCoapConfig(_coapConfig ?? const CoapConfig()),
);

if (subprotocol == CoapSubprotocol.observe) {
final observeClientRelation = await coapClient.observe(request);
observeClientRelation.listen(handleResponse);
return CoapSubscription(coapClient, observeClientRelation, complete);
}

final response = await coapClient.send(request);
handleResponse(response);
return CoapSubscription(coapClient, null, complete);
final observeClientRelation = await coapClient.observe(request);
observeClientRelation.listen(handleResponse);
return CoapSubscription(coapClient, observeClientRelation, complete);
}

@override
Expand Down
13 changes: 0 additions & 13 deletions lib/src/binding_coap/coap_client_factory.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import "../../core.dart";

import "coap_client.dart";
import "coap_config.dart";
import "coap_definitions.dart";

/// A [ProtocolClientFactory] that produces CoAP clients.
final class CoapClientFactory implements ProtocolClientFactory {
Expand Down Expand Up @@ -49,18 +48,6 @@ final class CoapClientFactory implements ProtocolClientFactory {

@override
bool supportsOperation(OperationType operationType, String? subprotocol) {
const observeOperations = [
OperationType.observeproperty,
OperationType.unobserveproperty,
OperationType.subscribeevent,
OperationType.unsubscribeevent,
];

if (observeOperations.contains(operationType)) {
return CoapSubprotocol.tryParse(subprotocol ?? "") ==
CoapSubprotocol.observe;
}

return subprotocol == null;
}
}
17 changes: 0 additions & 17 deletions lib/src/binding_coap/coap_definitions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,3 @@ enum CoapRequestMethod {
static CoapRequestMethod? fromString(String stringValue) =>
_registry[stringValue];
}

/// Enumeration of available CoAP subprotocols.
enum CoapSubprotocol {
/// Subprotocol for observing CoAP resources.
observe,
;

/// Tries to match the given [subprotocol] string to one of the known
/// [CoapSubprotocol.values].
static CoapSubprotocol? tryParse(String subprotocol) {
if (subprotocol == "cov:observe") {
return CoapSubprotocol.observe;
}

return null;
}
}
29 changes: 2 additions & 27 deletions lib/src/binding_coap/coap_extensions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,6 @@ extension CoapFormExtension on AugmentedForm {
bool get usesAutoScheme =>
securityDefinitions.whereType<AutoSecurityScheme>().isNotEmpty;

/// Get the [CoapSubprotocol] for this [AugmentedForm], if one is set.
CoapSubprotocol? get coapSubprotocol {
if (subprotocol == coapPrefixMapping.expandCurieString("observe")) {
return CoapSubprotocol.observe;
}

return null;
}

/// The Content-Format for CoAP request and response payloads.
CoapMediaType get contentFormat {
final formDefinition = _obtainVocabularyTerm<int>("contentFormat");
Expand Down Expand Up @@ -136,8 +127,8 @@ extension CoapExpectedResponseExtension on ExpectedResponse {
}
}

/// Extension for determining the corresponding [CoapRequestMethod] and
/// [CoapSubprotocol] for an [OperationType].
/// Extension for determining the corresponding [CoapRequestMethod] for an
/// [OperationType].
extension OperationTypeExtension on OperationType {
/// Determines the [CoapRequestMethod] for this [OperationType].
CoapRequestMethod get requestMethod {
Expand All @@ -160,22 +151,6 @@ extension OperationTypeExtension on OperationType {
return CoapRequestMethod.get;
}
}

/// Determines the [CoapSubprotocol] (if any) for this [OperationType].
///
/// The only supported subprotocol at the moment is `observe`.
CoapSubprotocol? get subprotocol {
if ([
OperationType.subscribeevent,
OperationType.unsubscribeevent,
OperationType.observeproperty,
OperationType.unobserveproperty,
].contains(this)) {
return CoapSubprotocol.observe;
}

return null;
}
}

/// Extension for easily extracting the [content] from a [CoapResponse].
Expand Down
4 changes: 2 additions & 2 deletions test/binding_coap/coap_client_factory_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ void main() {

final testVector = [
(
expectedResult: true,
expectedResult: false,
operationTypes: observeOperations,
subprotocol: "cov:observe",
),
(
expectedResult: false,
expectedResult: true,
operationTypes: observeOperations,
subprotocol: null,
),
Expand Down
8 changes: 0 additions & 8 deletions test/binding_coap/coap_definitions_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,4 @@ void main() {
);
});
});

test("parse CoAP subprotocols", () async {
final observeSubprotocol = CoapSubprotocol.tryParse("cov:observe");
expect(observeSubprotocol == CoapSubprotocol.observe, isTrue);

final unknownSubprotocol = CoapSubprotocol.tryParse("foobar");
expect(unknownSubprotocol, isNull);
});
}

0 comments on commit b571667

Please sign in to comment.