PatchbayPermissionDriverRequest.fromJson constructor

PatchbayPermissionDriverRequest.fromJson(
  1. Map<String, Object?> json
)

Implementation

factory PatchbayPermissionDriverRequest.fromJson(Map<String, Object?> json) {
  final Object? rawSessionRef = json['sessionRef'];
  if (rawSessionRef != null && rawSessionRef is! Map<Object?, Object?>) {
    throw const PatchbayPermissionWireException(
      'permissionDriverRequestInvalid',
    );
  }
  final Object? rawTimeout = json['timeoutMs'];
  if (rawTimeout is! int || rawTimeout <= 0) {
    throw const PatchbayPermissionWireException(
      'permissionDriverRequestInvalid',
    );
  }
  return PatchbayPermissionDriverRequest(
    protocolVersion: _requiredString(
      json['protocolVersion'],
      'permissionDriverRequestInvalid',
    ),
    requestId: _requiredString(
      json['requestId'],
      'permissionDriverRequestInvalid',
    ),
    operation: _requiredEnum(
      json['operation'],
      PatchbayPermissionOperation.values,
      'permissionDriverRequestInvalid',
    ),
    deviceId: _optionalString(
      json['deviceId'],
      'permissionDriverRequestInvalid',
    ),
    applicationId: _optionalString(
      json['applicationId'],
      'permissionDriverRequestInvalid',
    ),
    sessionRef: rawSessionRef == null
        ? null
        : Map<String, Object?>.unmodifiable(
            Map<String, Object?>.from(rawSessionRef as Map),
          ),
    permission: _optionalString(
      json['permission'],
      'permissionDriverRequestInvalid',
    ),
    policy: _optionalString(json['policy'], 'permissionDriverRequestInvalid'),
    state: json['state'] == null
        ? null
        : _requiredEnum(
            json['state'],
            PatchbayPermissionState.values,
            'permissionDriverRequestInvalid',
          ),
    decision: json['decision'] == null
        ? null
        : _requiredEnum(
            json['decision'],
            PatchbayPermissionDecision.values,
            'permissionDriverRequestInvalid',
          ),
    timeoutMs: rawTimeout,
  );
}