OID4VCICredentialOffer.fromJson constructor

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

Creates a OID4VCICredentialOffer instance from json data

Parameters:

  • json - Json data

Throws:

  • TdkException if it is unable to parse data.
    • failed_to_load_credential_offer: when it cannot find a credential identifier or a pre-authorization code

Implementation

factory OID4VCICredentialOffer.fromJson(Map<String, dynamic> json) {
  final credentialIdentifier =
      (json[_CredentialOfferKey.configurationIds.value] as List<dynamic>?)
              ?.firstOrNull
          as String?;

  final grant =
      (json[_CredentialOfferKey.grants.value]
              as Map<String, dynamic>?)?[_CredentialOfferKey
              .preAuthorizationCodeUrn
              .value]
          as Map<String, dynamic>?;
  final preAuthCode =
      grant?[_CredentialOfferKey.preAuthorizationCode.value] as String?;
  final transactionCode =
      grant?[_CredentialOfferKey.transactionCode.value]
          as Map<String, dynamic>?;
  final isTxCodeRequired =
      transactionCode != null &&
      Map<String, dynamic>.from(transactionCode).isNotEmpty;

  if (credentialIdentifier == null) {
    Error.throwWithStackTrace(
      TdkException(
        message:
            'Failed to parse credential offer, missing required credential identifier',
        code: TdkExceptionType.failedToLoadCredentialOffer.code,
      ),
      StackTrace.current,
    );
  }

  if (preAuthCode == null) {
    Error.throwWithStackTrace(
      TdkException(
        message:
            'Failed to parse credential offer, missing required pre authorization code',
        code: TdkExceptionType.failedToLoadCredentialOffer.code,
      ),
      StackTrace.current,
    );
  }

  return OID4VCICredentialOffer(
    preAuthCode: preAuthCode,
    credentialIdentifier: credentialIdentifier,
    isTxCodeRequired: isTxCodeRequired,
  );
}