in ports/coreHTTP/azure_iot_core_http.c [112:169]
AzureIoTHTTPResult_t AzureIoTHTTP_Request( AzureIoTHTTPHandle_t xHTTPHandle,
int32_t lRangeStart,
int32_t lRangeEnd,
char * pucDataBuffer,
uint32_t ulDataBufferLength,
char ** ppucOutData,
uint32_t * pulOutDataLength )
{
HTTPStatus_t xHttpLibraryStatus = HTTPSuccess;
xHTTPHandle->xResponse.pBuffer = ( uint8_t * ) pucDataBuffer;
xHTTPHandle->xResponse.bufferLen = ulDataBufferLength;
if( !( ( lRangeStart == 0 ) && ( lRangeEnd == azureiothttpHttpRangeRequestEndOfFile ) ) )
{
/* Add range headers if not the whole image. */
xHttpLibraryStatus = HTTPClient_AddRangeHeader( &xHTTPHandle->xRequestHeaders, lRangeStart, lRangeEnd );
if( xHttpLibraryStatus != HTTPSuccess )
{
return prvTranslateToAzureIoTHTTPResult( xHttpLibraryStatus );
}
}
xHttpLibraryStatus = HTTPClient_Send( ( TransportInterface_t * ) xHTTPHandle->pxHTTPTransport, &xHTTPHandle->xRequestHeaders, NULL, 0, &xHTTPHandle->xResponse, 0 );
if( xHttpLibraryStatus != HTTPSuccess )
{
SdkLog( ( "[HTTP] ERROR: %d\r\n", xHttpLibraryStatus ) );
return prvTranslateToAzureIoTHTTPResult( xHttpLibraryStatus );
}
if( xHttpLibraryStatus == HTTPSuccess )
{
if( xHTTPHandle->xResponse.statusCode == 200 )
{
/* Handle a response Status-Code of 200 OK. */
SdkLog( ( "[HTTP] Success 200\r\n" ) );
}
else if( xHTTPHandle->xResponse.statusCode == 206 )
{
/* Handle a response Status-Code of 200 OK. */
SdkLog( ( "[HTTP] [Status 206] Received range %i to %i\r\n", ( int ) lRangeStart, ( int ) lRangeStart + xHTTPHandle->xResponse.bodyLen ) );
*ppucOutData = ( char * ) xHTTPHandle->xResponse.pBody;
*pulOutDataLength = ( uint32_t ) xHTTPHandle->xResponse.bodyLen;
}
else
{
/* Handle an error */
SdkLog( ( "[HTTP] Failed %d\r\n.", xHTTPHandle->xResponse.statusCode ) );
xHttpLibraryStatus = 1;
}
}
return prvTranslateToAzureIoTHTTPResult( xHttpLibraryStatus );
}