sc-helloworld/api/server.mjs

51 lines
1.4 KiB
JavaScript

import { readFileSync } from 'fs'
import { Util } from 'service-core'
export function run(http, orgPort, ctx) {
let localUtil = new Util(import.meta.url)
let packagePath = localUtil.getPathFromRoot('../package.json')
let packageInfo = JSON.parse(readFileSync(packagePath))
const server = http.createServer(function (req, res) {
const d1 = new Date().getTime()
let finishedRequest = false
var done = function () {
if (finishedRequest) return
finishedRequest = true
var requestTime = new Date().getTime() - d1
let level = 'info'
if (res.statusCode >= 400) {
level = 'warn'
}
if (res.statusCode >= 500) {
level = 'error'
}
let status = ''
if (res.statusCode >= 400) {
status = res.statusCode + ' '
}
ctx.log[level]({
duration: requestTime,
status: res.statusCode,
}, `<-- ${status}${req.method} ${req.url}`)
}
res.addListener('finish', done);
res.addListener('close', done);
res.writeHead(200);
res.write(JSON.stringify(packageInfo, null, ' '))
res.end()
})
let port = orgPort || 4000
return server.listenAsync(port)
.then(function() {
ctx.log.event.info(`Server is listening on ${port} serving package ${packagePath}`)
ctx.log.info(`Server is listening on ${port} serving package ${packagePath}`)
})
}