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  }