gluapp

package module
v0.0.0-...-054f285 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 4, 2020 License: MIT Imports: 23 Imported by: 2

README

Gluapp

builds.sr.ht status    Godoc Reference

HTTP framework for GopherLua.

Features

  • Simple
  • No 3rd party requirements except gopher-lua
  • Rely on Go template language
  • Same request/response idioms as Go HTTP lib
  • Comes with a basic (and optional) router
  • First-class JSON support
  • Included HTTP client
  • Support importing dependency from GitHub on the fly with require2

Example

local router = require('router').new()

router:get('/hello/:name', function(params)
  app.response:write('hello ' .. params.name)
end)

router:run()

TODO

  • Write Lua modules documentation
  • A module for web scrapping
  • A basic key-value store module
  • read_file/write_file/read_json helper

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Exec

func Exec(conf *Config, code string, w http.ResponseWriter, r *http.Request) error

Exec run the code as a Lua script

func SetupGlue

func SetupGlue(L *lua.LState, conf *Config, w http.ResponseWriter, r *http.Request) error

SetupGlue setup the "glue"/std lib for use outside of gluapp

Types

type App

type App struct {
	// contains filtered or unexported fields
}

App represents a Lua app

func NewApp

func NewApp(conf *Config) (*App, error)

func (*App) Exec

func (a *App) Exec(w http.ResponseWriter, r *http.Request) (*Response, error)

Exec executes the app in the given context, but it does not write the output to the `http.ResponseWriter`, you need to call `Response.WriteTo(w)` manually.

Most of the time, you should use `App` as a `http.HandlerFunc` (or call `App.ServeHTTP` manually).

func (*App) ServeHTTP

func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP implements the `http.HandlerFunc` interface.

type Config

type Config struct {
	// Path for looking up resources (Lua files, templates, public assets)
	Path string

	// Define the app entrypoint, default to `app.lua` (only valid for apps)
	Entrypoint string

	// HTTP client, if not set, `http.DefaultClient` will be used
	Client *http.Client

	// Hook for adding/setting additional modules/global variables
	SetupState func(L *lua.LState, w http.ResponseWriter, r *http.Request) error

	// Hook executed just after the script execution, just before the request is written
	AfterScriptExecHook func(L *lua.LState) error

	// Hook for custom `log` backend, defautl to `fmt.Println`
	LogHook func(logLine string) error

	// Stack trace will be displayed in debug mode
	Debug bool

	TemplateFuncMap template.FuncMap
}

Config represents an app configuration

type Response

type Response struct {
	Body       []byte
	Header     http.Header
	StatusCode int
	// contains filtered or unexported fields
}

Response represents the HTTP response

func (*Response) WriteTo

func (resp *Response) WriteTo(w http.ResponseWriter)

WriteTo dumps the respons to the actual response.

Directories

Path Synopsis
package util that regroups multiple useful Lua modules.
package util that regroups multiple useful Lua modules.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL