kafkajs
Version:
A modern Apache Kafka client for node.js
59 lines (50 loc) • 1.43 kB
JavaScript
const Decoder = require('../../../decoder')
const { failure, createErrorFromCode } = require('../../../error')
/**
* DescribeAcls Response (Version: 0) => throttle_time_ms error_code error_message [resources]
* throttle_time_ms => INT32
* error_code => INT16
* error_message => NULLABLE_STRING
* resources => resource_type resource_name [acls]
* resource_type => INT8
* resource_name => STRING
* acls => principal host operation permission_type
* principal => STRING
* host => STRING
* operation => INT8
* permission_type => INT8
*/
const decodeAcls = decoder => ({
principal: decoder.readString(),
host: decoder.readString(),
operation: decoder.readInt8(),
permissionType: decoder.readInt8(),
})
const decodeResources = decoder => ({
resourceType: decoder.readInt8(),
resourceName: decoder.readString(),
acls: decoder.readArray(decodeAcls),
})
const decode = async rawData => {
const decoder = new Decoder(rawData)
const throttleTime = decoder.readInt32()
const errorCode = decoder.readInt16()
const errorMessage = decoder.readString()
const resources = decoder.readArray(decodeResources)
return {
throttleTime,
errorCode,
errorMessage,
resources,
}
}
const parse = async data => {
if (failure(data.errorCode)) {
throw createErrorFromCode(data.errorCode)
}
return data
}
module.exports = {
decode,
parse,
}