build method
Builds decoded path segments from typed encoded parameters.
Implementation
List<String> build(Map<String, List<String>> parameters) {
final names = parameters.keys.toSet();
if (names.length != parameterNames.length ||
!names.containsAll(parameterNames)) {
throw ParameterFormatException(
'Encoded path parameters $names do not match $parameterNames.',
);
}
final segments = <String>[];
for (final part in _parts) {
switch (part) {
case _StaticPart(:final value):
segments.add(value);
case _ParameterPart(:final name):
final values = parameters[name]!;
if (values.length != 1) {
throw ParameterFormatException(
'Path parameter "$name" must encode one segment.',
);
}
segments.add(values.single);
case _RestPart(:final name):
final values = parameters[name]!;
if (values.isEmpty) {
throw ParameterFormatException(
'Rest parameter "$name" cannot be empty.',
);
}
segments.addAll(values);
}
}
return segments;
}