Skip to content
/ Astra Public
forked from ArkForgeLabs/Astra

🔥 Blazingly Fast 🔥 web server runtime for Lua

License

Notifications You must be signed in to change notification settings

rustcamp/Astra

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

196 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Banner

Release Linux Release Windows Publish the crate Static Badge Static Badge

Astra is a web server runtime for Lua (5.1-5.4), Luau and LuaJIT written in Rust. The goal is to get as much performance as possible while writing the web server logic in Lua instead for faster iteration, fault-tolerance and no-build requirements. This project is internally used here at ArkForge and many others.

Installation

You can either get the binaries at github releases or using cargo if you have it installed:

cargo install lua-astra

To install with differet Lua VM, e.g. Lua 5.4:

cargo install lua-astra --no-default-features --features lua54

Example

-- Create a new server
local server = Astra.http.server:new()

-- Register a route
server:get("/", function()
    return "hello from default Astra instance!"
end)

-- Configure the server
server.port = 3000

-- Run the server
server:run()

You can also use the local variables within routes

local counter = 0
server:get("/count", function()
    counter = counter + 1
    -- and also can return JSON
    return { counter = counter }
end)

Requests and Responses and their configuration are provided when needed

server:get("/", function(request, response)
    -- set header code
    response:set_status_code(300)
    -- set headers
    response:set_header("header-key", "header-value")

    -- consume the request body
    print(request:body():text())

    return "Responding with Code 300 cuz why not"
end)

There are also utilities provided such as a PostgreSQL/SQLite, http client requests, lua extra utils, and async tasks.

-- spawn an async task that does not block the running thread
spawn_task(function ()
    -- HTTP Request to check your IP address
    local response = Astra.http.request("https://myip.wtf/json"):execute()
    pretty_print(response:status_code())
    pretty_print(response:remote_address())
    pretty_print(response:body():json())
end)

Note

This project may have breaking changes in minor versions until v1.0. Afterwhich semver will be followed. Contributions are always welcome!

About

🔥 Blazingly Fast 🔥 web server runtime for Lua

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 54.3%
  • Lua 45.7%