<!--- Parse GET /tasks/{task_id} JSON (expects pollParsed struct). Sets vertexNormalizedJobStatus, flags, extracted_data. --->
<cfparam name="pollParsed" default="#{}#" />
<cfset vertexNormalizedJobStatus = "" />
<cfset vertexPollJobComplete = false />
<cfset vertexPollJobFailed = false />
<cfset vertexPollJobInProgress = false />
<cfset vertexExtractedData = {} />
<cfset vertexPollErrorMsg = "" />
<cfset vertexPollStage = "" />
<cfset vertexPollPercent = "" />

<cfif isStruct(pollParsed)>
    <cfset apiStatus = structKeyExists(pollParsed, "status") ? uCase(trim(pollParsed.status & "")) : "" />
    <cfset apiStatusLower = lCase(apiStatus) />
    <cfset apiReady = structKeyExists(pollParsed, "ready") AND (pollParsed.ready EQ true OR pollParsed.ready EQ "true" OR pollParsed.ready EQ 1) />
    <cfset apiSuccessful = structKeyExists(pollParsed, "successful") AND (pollParsed.successful EQ true OR pollParsed.successful EQ "true" OR pollParsed.successful EQ 1) />
    <cfif structKeyExists(pollParsed, "stage")>
        <cfset vertexPollStage = trim(pollParsed.stage & "") />
    </cfif>
    <cfif structKeyExists(pollParsed, "percent")>
        <cfset vertexPollPercent = trim(pollParsed.percent & "") />
    </cfif>
    <cfif structKeyExists(pollParsed, "error") AND NOT isNull(pollParsed.error) AND len(trim(pollParsed.error & ""))>
        <cfset vertexPollErrorMsg = trim(pollParsed.error & "") />
    </cfif>

    <!--- Task complete: status SUCCESS + ready, or successful + stage complete --->
    <cfif apiStatus EQ "SUCCESS" OR apiSuccessful OR (apiReady AND lCase(vertexPollStage) EQ "complete")>
        <cfif apiReady OR apiSuccessful OR apiStatus EQ "SUCCESS">
            <cfset vertexNormalizedJobStatus = "completed" />
            <cfset vertexPollJobComplete = true />
        <cfelse>
            <cfset vertexNormalizedJobStatus = "processing" />
            <cfset vertexPollJobInProgress = true />
        </cfif>
    <cfelseif listFindNoCase("FAILED,ERROR,CANCELLED", apiStatus)>
        <cfset vertexNormalizedJobStatus = "failed" />
        <cfset vertexPollJobFailed = true />
    <cfelseif listFindNoCase("QUEUED,SUBMITTED,RUNNING,PROCESSING,PENDING,PROGRESS", apiStatus)>
        <cfset vertexNormalizedJobStatus = apiStatusLower />
        <cfset vertexPollJobInProgress = true />
    <cfelseif len(apiStatusLower)>
        <cfset vertexNormalizedJobStatus = apiStatusLower />
        <cfif NOT apiReady AND NOT apiSuccessful>
            <cfset vertexPollJobInProgress = true />
        </cfif>
    </cfif>

    <!--- extracted_data lives under result.extracted_data --->
    <cfif structKeyExists(pollParsed, "result") AND isStruct(pollParsed.result)>
        <cfif structKeyExists(pollParsed.result, "extracted_data") AND isStruct(pollParsed.result.extracted_data)>
            <cfset vertexExtractedData = pollParsed.result.extracted_data />
        </cfif>
    </cfif>
</cfif>
