Skip to content

Commit

Permalink
internal refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
jkyberneees committed Jul 24, 2019
1 parent a3830b1 commit 66ef181
Showing 1 changed file with 35 additions and 33 deletions.
68 changes: 35 additions & 33 deletions lib/server/low.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,21 @@ const uWS = require('uWebSockets.js')
const REQUEST_EVENT = 'request'

module.exports = (config = {}) => {
const handlers = {
request: (req, res) => {
res.statusCode = 404
res.statusMessage = 'Not Found'
let handler = (req, res) => {
res.statusCode = 404
res.statusMessage = 'Not Found'

res.end()
}
res.end()
}

const server = uWS.App(config).any('/*', (res, req) => {
const uServer = uWS.App(config).any('/*', (res, req) => {
res.finished = false
res.onAborted(() => {
res.finished = true
})

const reqWrapper = new HttpRequest(req)
const resWrapper = new HttpResponse(res, server)
const resWrapper = new HttpResponse(res, uServer)

const method = reqWrapper.method
if (method !== 'GET' && method !== 'HEAD') {
Expand All @@ -30,7 +28,7 @@ module.exports = (config = {}) => {
buffer || (buffer = chunk)

reqWrapper.body = buffer
res.finished || handlers[REQUEST_EVENT](reqWrapper, resWrapper)
res.finished || handler(reqWrapper, resWrapper)
} else {
if (buffer) {
buffer = Buffer.concat([buffer, chunk])
Expand All @@ -40,49 +38,53 @@ module.exports = (config = {}) => {
}
})
} else {
res.finished || handlers[REQUEST_EVENT](reqWrapper, resWrapper)
res.finished || handler(reqWrapper, resWrapper)
}
})

server.on = (event, cb) => {
handlers[event] = cb
}
uServer._date = new Date().toUTCString()
const timer = setInterval(() => (uServer._date = new Date().toUTCString()), 1000)

server.start = (port, cb) => {
server.listen(port, socket => {
server._socket = socket
const facade = {
on (event, cb) {
if (event !== REQUEST_EVENT) throw new Error(`Given "${event}" event is not supported!`)

cb(socket)
})
handler = cb
},

close () {
clearInterval(timer)
uWS.us_listen_socket_close(uServer._socket)
}
}
facade.listen = facade.start = (port, cb) => {
uServer.listen(port, socket => {
uServer._socket = socket

server._date = new Date().toUTCString()
const timer = setInterval(() => (server._date = new Date().toUTCString()), 1000)
server.close = () => {
clearInterval(timer)
uWS.us_listen_socket_close(server._socket)
cb(socket)
})
}

return server
return facade
}

class HttpRequest {
constructor (req) {
this.req = req
constructor (uRequest) {
this.req = uRequest

this.url = req.getUrl()
this.url = uRequest.getUrl()
this.originalUrl = this.url

this.method = req.getMethod().toUpperCase()
this.method = uRequest.getMethod().toUpperCase()

this.body = null

this.headers = {}
req.forEach((k, v) => {
uRequest.forEach((k, v) => {
this.headers[k] = v
})

this.query = req.getQuery()
this.query = uRequest.getQuery()
}

getRaw () {
Expand All @@ -91,9 +93,9 @@ class HttpRequest {
}

class HttpResponse {
constructor (res, server) {
this.res = res
this.server = server
constructor (uResponse, uServer) {
this.res = uResponse
this.server = uServer

this.statusCode = 200
this.statusMessage = 'OK'
Expand Down

0 comments on commit 66ef181

Please sign in to comment.