Private/Get-JevChoiceAnswer.ps1
|
<#
.SYNOPSIS Reads the selected label from a named Jev Choice answer. .DESCRIPTION Supports dictionary and object response shapes. Missing answers and missing or empty choice values remain errors. .PARAMETER Response The raw Jev response containing answers. .PARAMETER Name The name of the Choice question whose selected label is required. #> function Get-JevChoiceAnswer { param( [Parameter(Mandatory)] [object] $Response, [Parameter(Mandatory)] [string] $Name ) $responseFields = ConvertTo-JevDictionary -Value $Response if (-not $responseFields.ContainsKey('answers') -or $null -eq $responseFields['answers']) { throw "Jev did not return answers for question '$Name'." } $answers = ConvertTo-JevDictionary -Value $responseFields['answers'] if (-not $answers.ContainsKey($Name) -or $null -eq $answers[$Name]) { throw "Jev did not return a Choice answer for question '$Name'." } $answer = ConvertTo-JevDictionary -Value $answers[$Name] if (-not $answer.ContainsKey('choice') -or [string]::IsNullOrWhiteSpace([string] $answer['choice'])) { throw "Jev did not return a Choice answer for question '$Name'." } [string] $answer['choice'] } |