local json = require "json" local giblang = require "giblang" local function brackets(e) return { content_type = "application/json", body = json.encode({ 1, 2, 3, { x = 10 } }) } end local function banana(e) return { content_type = "text/html, charset=utf-8", body = "

Bananas are delicious!

" } end local function gib(e,n) return { content_type = "text/html, charset=utf-8", body = "

" .. giblang.speak(n) .. "

" } end local function teapot(e) return { code = 418, status = "I'm a teapot", content_type = "text/html, charset=utf-8", body = "

I'm a teapot!

" } end local function error_404(e, p) return { code = 404, status = "Not Found", content_type = "text/html, charset=utf-8", body = "

404 - Page not found: " .. p .. "

" } end function HANDLE_ROUTE(e, path) local response = { content_type = "text/html, charset=utf-8", body = "" } if path == "/" then response.body = "Hello, you are at the root!" elseif path == "/about" then response.body = "This is the about page!" elseif path == "/banana" then response = banana(e) elseif path == "/json" then response = brackets(e) elseif path == "/giblang" then math.randomseed(os.time()) local number_of_words = math.random(2, 10) response = gib(e, number_of_words) elseif path == "/teapot" then response = teapot(e) else response = error_404(e, path) end if not response.code then response.status = "OK" response.code = 200 end sb_send_status(e, response.code, response.status) sb_send_header(e, "Content-Type", response.content_type) return response.body end function HANDLE_POST_ROUTE(e, path) -- FIXME: I'm not currently passing the body of the POST request, not sure how to access it from C local response = { content_type = "text/plain", body = "" } if path == "/echo" then response = { body = "server response: " .. path } else response = error_404(e, path) end if not response.code then response.status = "OK" response.code = 200 end sb_send_status(e, response.code, response.status) sb_send_header(e, "Content-Type", response.content_type) return response.body end