blob: 6899d10670068eea47874fd943a7fa6a05c9312a [file] [log] [blame]
// import libraries
const protobuf = require("protobufjs")
const getStdin = require('get-stdin')
// import messages
const root = protobuf.Root.fromJSON(require("./bundle.json"))
const Request = root.lookupType("gnostic.plugin.v1.Request")
const Response = root.lookupType("gnostic.plugin.v1.Response")
const Document = root.lookupType("openapi.v2.Document")
getStdin.buffer().then(buffer => {
const request = Request.decode(buffer)
messages = []
for (var j in request.models) {
const m = request.models[j]
if (m.type_url == "openapi.v2.Document") {
const openapi2 = Document.decode(m.value)
const paths = openapi2.paths.path
for (var i in paths) {
const path = paths[i]
//console.error('path %s\n\n', path.name)
const getOperation = path.value.get
if (getOperation && getOperation.operationId == "") {
messages.push({level:3, code:"NOOPERATIONID", text:"No operation id.", keys:["paths", path.name, "get"]})
}
const postOperation = path.value.post
if (postOperation && postOperation.operationId == "") {
messages.push({level:3, code:"NOOPERATIONID", text:"No operation id.", keys:["paths", path.name, "post"]})
}
//console.error('get %s\n\n', JSON.stringify(getOperation))
}
}
}
const payload = {
messages: messages
}
// Verify the payload if necessary (i.e. when possibly incomplete or invalid)
const errMsg = Response.verify(payload)
if (errMsg)
throw Error(errMsg)
const message = Response.create(payload)
process.stdout.write(Response.encode(message).finish())
}).catch(err => console.error(err))