Enumeration CurlFeature

Flags to be used with "Curl".Curl.enable | Curl#enable and "Curl".Curl.disable | Curl#disable

Enumeration Members

Empty: 0

Initial state

NoDataParsing: 1

Data received is passed as a Buffer to the end event.

NoDataStorage: 4

Data received is not stored inside this handle, implies NoDataParsing.

NoHeaderParsing: 2

Header received is not parsed, it's passed as a Buffer to the end event.

NoHeaderStorage: 8

Header received is not stored inside this handle, implies NoHeaderParsing.

NoStorage: 12

Same than NoDataStorage | NoHeaderStorage, implies Raw.

Raw: 3

Same than NoDataParsing | NoHeaderParsing

StreamResponse: 16

This will change the behavior of the internal WRITEFUNCTION to push data into a stream instead of buffering all the data into multiple Buffer chunks.

As soon as the stream is available, it will be passed as the first argument for the stream event.

Example usage:

 const curl = new Curl()
curl.setOpt('URL', 'https://some-domain/upload')

curl.setStreamProgressCallback(() => {
// this will use the default progress callback from libcurl
return CurlProgressFunc.Continue
})

curl.on('end', (statusCode, data) => {
console.log('\n'.repeat(5))
console.log(
`curl - end - status: ${statusCode} - data length: ${data.length}`,
)
curl.close()
})
curl.on('error', (error, errorCode) => {
console.log('\n'.repeat(5))
console.error('curl - error: ', error, errorCode)
curl.close()
})
curl.on('stream', async (stream, _statusCode, _headers) => {
const writableStream = fs.createWriteStream('./test.out')
stream.pipe(writableStream)
})
curl.perform()

Using this implies NoDataStorage.

To control the highWaterMark option of the response stream, see "Curl".Curl.setStreamResponseHighWaterMark | Curl#setStreamResponseHighWaterMark

Make sure your libcurl version is greater than or equal 7.69.1. Versions older than that one are not reliable for streams usage.