PatchbayPermissionDriverResponse.fromJson constructor
Implementation
factory PatchbayPermissionDriverResponse.fromJson(Map<String, Object?> json) {
final String admission = _requiredString(
json['admission'],
'permissionDriverResponseInvalid',
);
if (admission != 'accepted' && admission != 'rejected') {
throw const PatchbayPermissionWireException(
'permissionDriverResponseInvalid',
);
}
final Object? rawRejection = json['rejection'];
if (admission == 'rejected' && rawRejection is! Map<Object?, Object?>) {
throw const PatchbayPermissionWireException(
'permissionDriverResponseInvalid',
);
}
final Map<Object?, Object?>? rejection =
rawRejection is Map<Object?, Object?> ? rawRejection : null;
final Object? rawDetails =
rejection?['details'] ?? const <String, Object?>{};
if (rawDetails is! Map<Object?, Object?>) {
throw const PatchbayPermissionWireException(
'permissionDriverResponseInvalid',
);
}
final Object? rawEvidence = json['evidence'] ?? const <Object?>[];
if (rawEvidence is! List<Object?> ||
rawEvidence.any((Object? item) => item is! Map<Object?, Object?>)) {
throw const PatchbayPermissionWireException(
'permissionDriverResponseInvalid',
);
}
final Map<Object?, Object?>? rawCapabilities = _optionalMap(
json['capabilities'],
);
final Map<Object?, Object?>? rawBefore = _optionalMap(json['before']);
final Map<Object?, Object?>? rawAfter = _optionalMap(json['after']);
final Map<Object?, Object?>? rawInterruption = _optionalMap(
json['interruption'],
);
return PatchbayPermissionDriverResponse(
protocolVersion: _requiredString(
json['protocolVersion'],
'permissionDriverResponseInvalid',
),
requestId: _requiredString(
json['requestId'],
'permissionDriverResponseInvalid',
),
admission: admission,
code: rejection == null
? null
: _requiredString(
rejection['code'],
'permissionDriverResponseInvalid',
),
details: Map<String, Object?>.unmodifiable(
Map<String, Object?>.from(rawDetails),
),
capabilities: rawCapabilities == null
? null
: PatchbayPermissionCapabilities.fromJson(
Map<String, Object?>.from(rawCapabilities),
),
before: rawBefore == null
? null
: PatchbayPermissionStatus.fromJson(
Map<String, Object?>.from(rawBefore),
),
after: rawAfter == null
? null
: PatchbayPermissionStatus.fromJson(
Map<String, Object?>.from(rawAfter),
),
evidence: <PatchbayPermissionEvidence>[
for (final Object? item in rawEvidence)
PatchbayPermissionEvidence.fromJson(
Map<String, Object?>.from(item! as Map),
),
],
interruption: rawInterruption == null
? null
: PatchbayPermissionInterruption.fromJson(
Map<String, Object?>.from(rawInterruption),
),
notice: _optionalString(
json['notice'],
'permissionDriverResponseInvalid',
),
);
}