pegasus.lua
pegasus.lua copied to clipboard
:rocket: Pegasus.lua is an http server to work with web applications written in Lua language.
An http server to work with web applications written in Lua language check the site.
Installation
To install Pegasus.lua, run:
$ luarocks install pegasus
How does it work?
Follow an example:
local pegasus = require 'pegasus'
local server = pegasus:new({
port='9090',
location='example/root'
})
server:start(function (request, response)
print "It's running..."
end)
Features
- Compatible with Linux, Mac and Windows systems
- Easy API
- Support Lua >= 5.1
- Native support for HTTP Streaming, aka chunked responses. Check how it works.
- Native plugin to compress responses using the "gzip" method
API
Parameters
-
host:string
Host address where the application will run. By default it useslocalhost
-
port:string
The port where the application will run. By default it's9090
-
location:string
Path used by Pegasus to search for the files. By default it's the root -
plugins:table
List with plugins -
timeout:number
It's a timeout for estabilishing a connection with the server
Request
Properties
-
path:string
A string with the request path -
headers:table
A table with all the headers data -
method:function
The output is the request method as a string ('GET', 'POST', etc) -
querystring:string
It returns a dictionary with all the GET parameters -
ip:string
It returns the client's ip -
port:number
It returns the port where Pegasus is running
Response
Methods
-
addHeader(string:key, string:value)
Adds a new header -
addHeaders(table:headers)
It adds news headers -
statusCode(number:statusCode, string:statusMessage)
It adds a Status Code -
contentType(string:value)
Adds a value to Content-Type field -
write(string:body)
It creates the body with the value passed as parameter -
writeFile(string:file)
It creates the body with the content of the file passed as parameter -
post():table
It returns a dictionary with all the POST parameters
local pegasus = require 'pegasus'
local server = pegasus:new({ port='9090' })
server:start(function (req, rep)
rep:addHeader('Date', 'Mon, 15 Jun 2015 14:24:53 GMT'):write('hello pegasus world!')
end)
Native Plugin
- pegasus.compress
local Pegasus = require 'pegasus'
local Compress = require 'pegasus.compress'
local server = Pegasus:new({
plugins = { Compress:new() }
})
server:start()
Contributing
Install Dependencies
$ make install_dependencies
Running tests
$ make unit_test