private Optional < String > processResponse ( long start , int maxRecords , BatchMaker batchMaker ) throws StageException { Optional < String > newSourceOffset = Optional . empty ( ) ; if ( getResponse ( ) == null ) { return newSourceOffset ; } // Response was not in the OK range, so treat as an error int status = getResponse ( ) . getStatus ( ) ; if ( status < 200 || status >= 300 ) { lastRequestCompletedTime = System . currentTimeMillis ( ) ; String reason = getResponse ( ) . getStatusInfo ( ) . getReasonPhrase ( ) ; String respString = getResponse ( ) . readEntity ( String . class ) ; getResponse ( ) . close ( ) ; setResponse ( null ) ; final String errorMsg = reason + " : " + respString ; LOG . warn ( Errors . HTTP_01 . getMessage ( ) , status , errorMsg ) ; errorRecordHandler . onError ( Errors . HTTP_01 , status , errorMsg ) ; return newSourceOffset ; } if ( conf . pagination . mode == PaginationMode . LINK_HEADER ) { next = getResponse ( ) . getLink ( "next" ) ; if ( next == null ) { haveMorePages = false ; } } if ( getResponse ( ) . hasEntity ( ) ) { newSourceOffset = Optional . of ( parseResponse ( start , maxRecords , batchMaker ) ) ; } else if ( conf . httpMethod . getLabel ( ) == "HEAD" ) { // Handle HEAD only requests, which have no body, by creating a blank record for output with headers. newSourceOffset = Optional . of ( parseHeadersOnly ( batchMaker ) ) ; } return newSourceOffset ; }
Verifies that the response was a successful one and has data and continues to parse the response .