OID4VCICredentialOffer.fromJson constructor
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,
);
}