CockpitCapabilityDocument.fromJson constructor

CockpitCapabilityDocument.fromJson(
  1. Object? value, {
  2. String path = r'$',
  3. CockpitDecodePolicy decodePolicy = CockpitDecodePolicy.requests,
})

Decodes a CockpitCapabilityDocument from a JSON object.

Implementation

factory CockpitCapabilityDocument.fromJson(
  Object? value, {
  String path = r'$',
  CockpitDecodePolicy decodePolicy = CockpitDecodePolicy.requests,
}) {
  final json = CockpitFoundationValueReader.object(value, path);
  const fields = <String>{
    'schemaVersion',
    'apiVersion',
    'features',
    'operations',
    'resources',
  };
  CockpitFoundationValueReader.keys(
    json,
    fields,
    path,
    required: fields,
    policy: decodePolicy,
  );
  final rawFeatures = CockpitFoundationValueReader.list(
    json['features'],
    '$path.features',
  );
  final rawOperations = CockpitFoundationValueReader.list(
    json['operations'],
    '$path.operations',
  );
  final rawResources = CockpitFoundationValueReader.list(
    json['resources'],
    '$path.resources',
  );
  return CockpitCapabilityDocument(
    schemaVersion: CockpitFoundationValueReader.string(
      json['schemaVersion'],
      '$path.schemaVersion',
    ),
    apiVersion: CockpitApiVersion.fromJson(
      json['apiVersion'],
      path: '$path.apiVersion',
      decodePolicy: decodePolicy,
    ),
    features: <CockpitFeatureDescriptor>[
      for (var index = 0; index < rawFeatures.length; index += 1)
        CockpitFeatureDescriptor.fromJson(
          rawFeatures[index],
          path: '$path.features[$index]',
          decodePolicy: decodePolicy,
        ),
    ],
    operations: <CockpitOperationDescriptor>[
      for (var index = 0; index < rawOperations.length; index += 1)
        CockpitOperationDescriptor.fromJson(
          rawOperations[index],
          path: '$path.operations[$index]',
          decodePolicy: decodePolicy,
        ),
    ],
    resources: <CockpitResourceDescriptor>[
      for (var index = 0; index < rawResources.length; index += 1)
        CockpitResourceDescriptor.fromJson(
          rawResources[index],
          path: '$path.resources[$index]',
          decodePolicy: decodePolicy,
        ),
    ],
  );
}