decode method
Decodes a JSON-compatible wire value.
Implementation
@override
CreateElicitationRequest decode(Object? value) {
final payload = decodeAcpObject(value);
final tag = decodeAcpString(payload['mode']);
switch (tag) {
case 'form':
final decoder = AcpResilientDecoder(payload);
return CreateElicitationRequestForm(
elicitationFormModeCodec.decode(payload),
message: decoder.required(
'message',
(value) => decodeAcpString(value),
),
meta: decoder.meta(),
);
case 'url':
final decoder = AcpResilientDecoder(payload);
return CreateElicitationRequestUrl(
elicitationUrlModeCodec.decode(payload),
message: decoder.required(
'message',
(value) => decodeAcpString(value),
),
meta: decoder.meta(),
);
default:
final decoder = AcpResilientDecoder(payload);
decoder.required('message', (value) => decodeAcpString(value));
return CreateElicitationRequestCustom(
discriminator: tag,
payload: AcpJsonObject.fromObject(payload),
);
}
}