CockpitOperationInvocation constructor
CockpitOperationInvocation({})
Creates a CockpitOperationInvocation.
Implementation
CockpitOperationInvocation({
required this.kind,
Map<String, Object?> input = const <String, Object?>{},
this.rootId,
this.workspaceId,
this.idempotencyKey,
this.deadline,
Iterable<String> requiredFeatures = const <String>[],
}) : input = CockpitFoundationValueReader.jsonObject(input, r'$.input'),
requiredFeatures = List<String>.unmodifiable(requiredFeatures) {
CockpitFoundationValueReader.kind(kind, r'$.kind');
if (rootId != null) {
CockpitFoundationValueReader.id(rootId, r'$.rootId');
}
if (workspaceId != null) {
CockpitFoundationValueReader.id(workspaceId, r'$.workspaceId');
}
if (deadline != null) {
CockpitFoundationValueReader.utcDateTime(deadline!, r'$.deadline');
if (!deadline!.isAfter(
DateTime.fromMillisecondsSinceEpoch(0, isUtc: true),
)) {
throw const FormatException('Operation deadline is invalid.');
}
}
final features = <String>{};
for (final feature in this.requiredFeatures) {
CockpitFoundationValueReader.id(feature, r'$.requiredFeatures[]');
if (!features.add(feature)) {
throw FormatException('Duplicate required feature $feature.');
}
}
}