github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/actions/lua/encoding/base64/base64.go (about) 1 package base64 2 3 import ( 4 "encoding/base64" 5 6 "github.com/Shopify/go-lua" 7 ) 8 9 func Open(l *lua.State) { 10 base64Open := func(l *lua.State) int { 11 lua.NewLibrary(l, base64Library) 12 return 1 13 } 14 lua.Require(l, "encoding/base64", base64Open, false) 15 l.Pop(1) 16 } 17 18 var base64Library = []lua.RegistryFunction{ 19 {Name: "encode", Function: encode}, 20 {Name: "decode", Function: decode}, 21 {Name: "url_encode", Function: urlEncode}, 22 {Name: "url_decode", Function: urlDecode}, 23 } 24 25 func encode(l *lua.State) int { 26 data := lua.CheckString(l, 1) 27 l.PushString(base64.StdEncoding.EncodeToString([]byte(data))) 28 return 1 29 } 30 31 func decode(l *lua.State) int { 32 data := lua.CheckString(l, 1) 33 decoded, err := base64.StdEncoding.DecodeString(data) 34 if err != nil { 35 lua.Errorf(l, "%s", err.Error()) 36 panic("unreachable") 37 } 38 l.PushString(string(decoded)) 39 return 1 40 } 41 42 func urlEncode(l *lua.State) int { 43 data := lua.CheckString(l, 1) 44 l.PushString(base64.RawURLEncoding.EncodeToString([]byte(data))) 45 return 1 46 } 47 48 func urlDecode(l *lua.State) int { 49 data := lua.CheckString(l, 1) 50 decoded, err := base64.RawURLEncoding.DecodeString(data) 51 if err != nil { 52 lua.Errorf(l, "%s", err.Error()) 53 panic("unreachable") 54 } 55 l.PushString(string(decoded)) 56 return 1 57 }