Skip to content

Instantly share code, notes, and snippets.

@chiquitinxx
Last active August 29, 2015 14:01
Show Gist options
  • Save chiquitinxx/84328500201a8605ad39 to your computer and use it in GitHub Desktop.
Save chiquitinxx/84328500201a8605ad39 to your computer and use it in GitHub Desktop.
Run express server
import org.grooscript.asts.GsNative
//ExpressServer class
class ExpressServer {
//Initial functions, so this groovy script will run
def expressApp = [get: { path, closure -> "Get in '${path}'."},
listen: { port -> println 'Listening in port ' + port}]
ExpressServer() {
println 'Setup server'
setupServer()
}
@GsNative
private setupServer() {/*
var express = require('express');
this.expressApp = express();
*/}
def get(path, closure) {
expressApp.get(path, { req, resp ->
closure.delegate = [req: req, resp: resp, render: { resp.send(it)}]
closure()
})
}
def start(port) {
println 'Start '+port
expressApp.listen(port);
}
}
//Server function
def server = { closure ->
ExpressServer expressServer = new ExpressServer()
closure.delegate = expressServer
closure()
[start: expressServer.&start]
}
//Server DSL
server {
get('/') {
render 'Hello World!'
}
get('/spanish') {
render 'Hola Mundo!'
}
get('/salute/:name') {
render "Hello ${req.params.name}!"
}
}.start(3000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment