gorillua

doc

make LUA_PATH="./?.lua;/usr/share/gorillua/?.lua"
./gorillua ./example.lua [...]

bindings

base64

local base64 = require("base64")

b = base64.encode("hello world")
s = base64.decode(b)

cron

local cron = require("cron")

-- 1st argument is the interval in seconds while
-- 2nd is a function that will be called
c = cron.run(10, function() print("hello world") end)
c.stop()

http

start serving requests

local http = require("http")

-- the 3rd argument is either nil or a path to a directory containing static files
http.serve("127.0.0.1:5558", {
  { method = "GET", context = "/", callback = func(w, r) w.write("hello world") end }
  { method = "POST", context = "/", callback = func(w, r) w.write("hello post world") end }
}, nil)

define callback functions for http requests

function example(w, r)
  -- r is the request
  useragent = r.get_header("User-Agent")

  body = r.get_body()

  cookie = r.get_cookie("key")

  -- /foo/bla/{id}
  vars = r.parse_vars()
  print(vars.id)

  params = r.parse_form()
  print(params.username)

  -- w is the response writer
  w.add_header("X-Header-Foo", "example")
  w.set_status(200)

  w.set_cookie("key", "value", "/", 86400, true)

  w.write("this is the response body")
end

json

local json = require("json")

foo = json.decode('{"hello":"world"}')
print(foo.hello)
foo.bla = 3
json.encode(foo)

logger

local logger = require("logger")

-- 0: debug, 1: error, 2: info
logger.set_level(0)
logger.debug("this is a debug message")
logger.error("this is a error message")
logger.info("this is a info message")

mariadb

local mariadb = require("mariadb")

db = mariadb.open("user", "password", "127.0.0.1:3306", "database")
result = db.query("SELECT * FROM table WHERE id = ?", 1)
for k, v in pairs(result) do print(v.id) end
db.close()

request

local request = require("request")

-- 3rd argument contains the request body
-- 4th argument is a table of request headers
code, body, header, err = request.send(
  "GET", "http://example.org", nil, nil)

socket

local socket = require("socket")

-- 3rd argument is optional and defines a timeout in seconds
c = socket.open("tcp", "127.0.0.1:8080", nil)
c.close()

uuid

local uuid = require("uuid")

u = uuid.create()