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,
);
}