decode method

  1. @override
CreateElicitationRequest decode(
  1. Object? value
)
override

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