serializeOptions static method

String serializeOptions(
  1. CoapEndpointResource resource,
  2. Iterable<Option<String>>? query, {
  3. required bool recursive,
})

Serialize options

Implementation

static String serializeOptions(
  final CoapEndpointResource resource,
  final Iterable<Option<String>>? query, {
  required final bool recursive,
}) {
  final linkFormat = StringBuffer();

  // Skip hidden and empty root in recursive mode,
  // always skip non-matching resources.
  if ((!resource.hidden && resource.name.isNotEmpty || !recursive) &&
      _matchesOption(resource, query)) {
    linkFormat.write('<${resource.path}>');

    // Reverse the attribute list to re-create the original
    final attrs = resource.attributes.toList().reversed.toList();
    for (final attr in attrs) {
      linkFormat.write(separator);
      attr.serialize(linkFormat);
    }
  }

  if (recursive) {
    for (final sub in resource.getSubResources()) {
      final next = serializeOptions(sub, query, recursive: true);

      if (next.isNotEmpty) {
        if (linkFormat.length > 3) {
          linkFormat.write(delimiter);
        }
        linkFormat.write(next);
      }
    }
  }

  return linkFormat.toString();
}