diff options
| author | unwox <me@unwox.com> | 2024-12-24 16:11:21 +0600 |
|---|---|---|
| committer | unwox <me@unwox.com> | 2024-12-24 16:11:21 +0600 |
| commit | f50c30266ae8f0939f619958a8a98962c6c6cb08 (patch) | |
| tree | 566779591fa3e32714fce53a5fff097a12e63e4a | |
| parent | 48e16bc1264aab6c5397880c3eb92c17e1e837fd (diff) | |
add luna.crypto.sha1 and luna.http.encode-url functions
| -rw-r--r-- | main.go | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -3,12 +3,15 @@ package main import ( "bufio" "database/sql" + "crypto/sha1" + "encoding/hex" "errors" "flag" "fmt" "io" "log" "net/http" + "net/url" "os" "unicode/utf8" "runtime" @@ -167,6 +170,14 @@ func main() { res["body"] = string(respBody) return luaOk(l, res) } + httpModule["encode-url"] = func (l *Lua) int { + var str string + err := l.Scan(&str) + if err != nil { + return luaErr(l, err) + } + return luaOk(l, url.QueryEscape(str)) + } // define luna.db module dbModule := make(map[string]any) @@ -392,12 +403,24 @@ func main() { cut := runes[start-1:start-1+length] return luaOk(l, string(cut)) } + cryptoModule := make(map[string]any) + cryptoModule["sha1"] = func (l *Lua) int { + var str string + err := l.Scan(&str) + if err != nil { + return luaErr(l, err) + } + h := sha1.New() + io.WriteString(h, str) + return luaOk(l, hex.EncodeToString(h.Sum(nil))) + } module := make(map[string]any) module["router"] = routeModule module["http"] = httpModule module["db"] = dbModule module["utf8"] = utf8Module + module["crypto"] = cryptoModule module["evalfn"] = func (l *Lua) int { var evalFn LuaRef err := l.Scan(&evalFn) |
