Skip to content

Commit 3ca87d9

Browse files
committed
feat: create helper function to convert struct to map[string]interface{}
1 parent cdf0f3d commit 3ca87d9

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

server/templates/lua.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package templates
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"time"
76

@@ -52,14 +51,11 @@ func (*luaEngine) Execute(request types.Request, script string) (*types.MockResp
5251
return nil, fmt.Errorf("failed to sandbox Lua environment: %w", err)
5352
}
5453

55-
b, err := json.Marshal(request)
54+
m, err := StructToMSI(request)
5655
if err != nil {
57-
return nil, fmt.Errorf("failed to marshal request: %w", err)
58-
}
59-
m := map[string]interface{}{}
60-
if err := json.Unmarshal(b, &m); err != nil {
61-
return nil, fmt.Errorf("failed to unmarshal request as Lua value: %w", err)
56+
return nil, fmt.Errorf("failed to convert request as map[string]any: %w", err)
6257
}
58+
6359
luaState.SetGlobal("request", luar.New(luaState, m))
6460
if err := luaState.DoString(script); err != nil {
6561
log.WithError(err).Error("Failed to execute Lua script")

server/templates/utils.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package templates
2+
3+
import "encoding/json"
4+
5+
func StructToMSI(s interface{}) (map[string]interface{}, error) {
6+
bytes, err := json.Marshal(s)
7+
if err != nil {
8+
return nil, err
9+
}
10+
msi := map[string]interface{}{}
11+
err = json.Unmarshal(bytes, &msi)
12+
if err != nil {
13+
return nil, err
14+
}
15+
return msi, nil
16+
}

0 commit comments

Comments
 (0)