Credential.fromJson constructor

Credential.fromJson(
  1. Map<String, dynamic> json
)

Deserialize json into Credential type.

Throws FormatException if json is not a valid Credential.

Implementation

factory Credential.fromJson(Map<String, dynamic> json) {
  if (json['url'] is! String) {
    throw const FormatException('Url is not provided for the credential');
  }

  final hostedUrl = validateAndNormalizeHostedUrl(json['url'] as String);

  const knownKeys = {'url', 'token', 'env'};
  final unknownFields = Map<String, dynamic>.fromEntries(
      json.entries.where((kv) => !knownKeys.contains(kv.key)));

  /// Returns [String] value from [json] at [key] index or `null` if [json]
  /// doesn't contains [key].
  ///
  /// Throws [FormatException] if value type is not [String].
  String? lstring(String key) {
    if (json.containsKey(key)) {
      if (json[key] is! String) {
        throw FormatException('Provided $key value should be string');
      }
      return json[key] as String;
    }
    return null;
  }

  return Credential._internal(
    url: hostedUrl,
    unknownFields: unknownFields,
    token: lstring('token'),
    env: lstring('env'),
  );
}