kafkajs
Version:
A modern Apache Kafka client for node.js
44 lines (35 loc) • 1.04 kB
JavaScript
const Decoder = require('../../../decoder')
const { failure, createErrorFromCode } = require('../../../error')
/**
* CreateAcls Response (Version: 0) => throttle_time_ms [creation_responses]
* throttle_time_ms => INT32
* creation_responses => error_code error_message
* error_code => INT16
* error_message => NULLABLE_STRING
*/
const decodeCreationResponse = decoder => ({
errorCode: decoder.readInt16(),
errorMessage: decoder.readString(),
})
const decode = async rawData => {
const decoder = new Decoder(rawData)
const throttleTime = decoder.readInt32()
const creationResponses = decoder.readArray(decodeCreationResponse)
return {
throttleTime,
creationResponses,
}
}
const parse = async data => {
const creationResponsesWithError = data.creationResponses.filter(({ errorCode }) =>
failure(errorCode)
)
if (creationResponsesWithError.length > 0) {
throw createErrorFromCode(creationResponsesWithError[0].errorCode)
}
return data
}
module.exports = {
decode,
parse,
}