Skip to content

Commit a74bc33

Browse files
authored
Merge pull request #54 from HexmosTech/build
Early return if manifest empty for multi auth support
2 parents 796abaa + f36b2f7 commit a74bc33

File tree

9 files changed

+70
-31
lines changed

9 files changed

+70
-31
lines changed

cmdexec/cmdexec.wasm.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
// Once execution finishes, previous CWD is restored,
2424
// and the command output is returned as a string
2525
func ExecCommand(cmdSlice []string, stdinBody string, apiDir string) (httpie.ExResponse, int64, error) {
26+
fmt.Println("WASM: Executing command")
2627
proxyURL := os.Getenv("PROXY_URL")
2728
proxyUserName := os.Getenv("PROXY_USERNAME")
2829
proxyUserPassword := os.Getenv("PROXY_PASSWORD")
@@ -35,5 +36,6 @@ func ExecCommand(cmdSlice []string, stdinBody string, apiDir string) (httpie.ExR
3536
fmt.Println("Got error while executing", err)
3637
return httpie.ExResponse{}, 0, errors.New("Error from API executor: " + err.Error())
3738
}
39+
fmt.Println("WASM: Command executed successfully")
3840
return resp, responseTime, nil
3941
}

cmdexec/js.wasm.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
package cmdexec
44

55
import (
6+
"fmt"
67
"syscall/js"
78

89
"github.com/rs/zerolog/log"
910
)
1011

1112
// RunVMCode takes in a JS snippet as a string, executes the code in a JS VM using Web Worker
1213
func RunVMCode(jsCode string, vm interface{}) {
14+
fmt.Println("WASM: Running VM code")
1315
worker := vm.(js.Value)
1416
resultChan := make(chan js.Value)
1517
worker.Call("postMessage", map[string]interface{}{
@@ -26,10 +28,12 @@ func RunVMCode(jsCode string, vm interface{}) {
2628
if err != "null" {
2729
log.Fatal().Str("Error executing JS processor block", err).Msg("")
2830
}
31+
fmt.Println("WASM: VM code executed successfully")
2932
}
3033

3134
// GenerateChainCode takes in an HTTP response body and comes up with some JS code to define the "magic variable" result.
3235
func GenerateChainCode(httpRespBody string) string {
36+
fmt.Println("WASM: Generating chain code")
3337
code := `try {
3438
result = JSON.parse(String.raw` + "`" + httpRespBody + "`" + `)
3539
console.log("Stored as JSON")
@@ -38,6 +42,6 @@ func GenerateChainCode(httpRespBody string) string {
3842
console.log(e)
3943
console.log("Stored as string")
4044
}`
41-
log.Debug().Str("Chain code generated", code).Msg("")
45+
fmt.Println("WASM: Chain code generated", code)
4246
return code
4347
}

cmdgen/cmdgen.wasm.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,37 @@ func ConstructCommand(parsedInput *gabs.Container, o *lama2cmd.Opts) ([]string,
1515
httpv, url, jsonObj, headers, multipartBool, formBool := ConstructCommandHelper(parsedInput)
1616
res, stdinBody := assembleCmdString(httpv, url, jsonObj, headers, multipartBool, formBool, nil)
1717

18-
manisfestData := js.Global().Get("liveapiManifest").String()
18+
log.Printf("WASM: Initial command: %v", res)
19+
20+
manifestObj := js.Global().Get("liveapiManifest")
21+
if manifestObj.IsUndefined() {
22+
log.Printf("WASM: liveapiManifest is undefined, returning early")
23+
return res, stdinBody
24+
}
25+
manifestData := manifestObj.String()
26+
log.Printf("WASM: Found manifest data: %s", manifestData)
1927

2028
// Parse JSON
21-
parsedJson, err := gabs.ParseJSON([]byte(manisfestData))
29+
parsedJson, err := gabs.ParseJSON([]byte(manifestData))
2230
if err != nil {
23-
log.Fatal("Error parsing JSON:", err)
31+
log.Printf("WASM: Error parsing JSON: %v", err)
32+
return res, stdinBody
2433
}
2534

2635
// Get project count
2736
projects, ok := parsedJson.Path("projects").Data().([]interface{})
2837
if !ok {
29-
log.Fatal("Failed to parse projects")
38+
log.Printf("WASM: Failed to parse projects from manifest")
39+
return res, stdinBody
3040
}
31-
41+
log.Printf("WASM: Found %d projects in manifest", len(projects))
3242

3343
projectRoot := getProjectRoot()
3444
if projectRoot == "" {
45+
log.Printf("WASM: Project root is empty")
3546
return res, stdinBody
3647
}
37-
48+
log.Printf("WASM: Current project root: %s", projectRoot)
3849

3950
var selectedAuthHeader string
4051

codegen/codegen.wasm.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ var flag = 0
2222

2323
//go:noinline
2424
func GenerateTargetCode(targetLangLib string, parsedAPI *gabs.Container) string {
25+
fmt.Println("WASM: Generating target code")
2526
convertedSnippetFinal := generateConvertedSippet(targetLangLib, parsedAPI)
26-
fmt.Println("This is the converted snippet:", convertedSnippetFinal)
27+
fmt.Println("WASM: This is the converted snippet:", convertedSnippetFinal)
2728
return convertedSnippetFinal
2829
}
2930

@@ -35,33 +36,34 @@ func asyncTask(resultChan0 chan<- string) {
3536

3637
//go:noinline
3738
func generateConvertedSippet(targetLangLib string, parsedAPI *gabs.Container) string {
39+
fmt.Println("WASM: Generating converted snippet")
3840
parsedAPIblocks := parsedAPI.S("value").Data().(*gabs.Container).Children()
3941
convertedSnippetList := make([]string, 0)
4042
blockLength := len(parsedAPIblocks)
41-
fmt.Println("Parsed API", parsedAPIblocks)
43+
fmt.Println("WASM: Parsed API", parsedAPIblocks)
4244
for i, block := range parsedAPIblocks {
4345
blockType := block.S("type").Data().(string)
44-
fmt.Println("Block type:", blockType)
46+
fmt.Println("WASM: Block type:", blockType)
4547
if blockType == "processor" {
46-
fmt.Println("Block type is processor")
48+
fmt.Println("WASM: Block type is processor")
4749
snippet := block.S("value").Data().(*gabs.Container).Data().(string)
4850
log.Debug().Str("Processor block incoming block", block.String()).Msg("")
4951
convertedSnippetList = append(convertedSnippetList, snippet)
5052
} else if blockType == "Lama2File" {
51-
fmt.Println("Block type is L2File")
53+
fmt.Println("WASM: Block type is L2File")
5254
harRequest, flag := GetRequestHARString(block, targetLangLib)
53-
fmt.Println("HAR request:", harRequest)
55+
fmt.Println("WASM: HAR request:", harRequest)
5456
snippetArgs := SnippetArgs{}
5557
lang, lib := SplitLangLib(targetLangLib)
56-
fmt.Println("Target lang:", lang)
58+
fmt.Println("WASM: Target lang:", lang)
5759
snippetArgs.Language = lang
5860
snippetArgs.Library = lib
5961
snippetArgs.HARRequest = harRequest
6062
snippetArgs.SnippetCore = snippetcore
61-
fmt.Println("Snippet args:", snippetArgs)
63+
fmt.Println("WASM: Snippet args:", snippetArgs)
6264
httpsnippetCode := PrepareHTTPSnippetGenerator(snippetArgs)
6365
convertedSnippet := js.Global().Call("eval", httpsnippetCode)
64-
fmt.Println("convertedSnippet data:", convertedSnippet.String())
66+
fmt.Println("WASM: convertedSnippet data:", convertedSnippet.String())
6567
// convertedSnippet, err := evaluateJSCode(httpsnippetCode)
6668
// if err != nil {
6769
// log.Fatal().
@@ -79,6 +81,7 @@ func generateConvertedSippet(targetLangLib string, parsedAPI *gabs.Container) st
7981
}
8082

8183
convertedSnippetFinal := strings.Join(convertedSnippetList, "\n")
84+
fmt.Println("WASM: Converted snippet final:", convertedSnippetFinal)
8285
return convertedSnippetFinal
8386
}
8487

@@ -112,6 +115,7 @@ func generateConvertedSippet(targetLangLib string, parsedAPI *gabs.Container) st
112115

113116
//go:noinline
114117
func PrepareHTTPSnippetGenerator(snippetArgs SnippetArgs) string {
118+
fmt.Println("WASM: Snippet args:", snippetArgs)
115119
var templOutput bytes.Buffer
116120
templStr := `{{.SnippetCore}}
117121
@@ -121,5 +125,6 @@ func PrepareHTTPSnippetGenerator(snippetArgs SnippetArgs) string {
121125
`
122126
tmpl, _ := template.New("httpsnippet").Parse(templStr)
123127
tmpl.Execute(&templOutput, snippetArgs)
128+
fmt.Println("WASM: Templ output:", templOutput.String())
124129
return templOutput.String()
125130
}

controller/controller.wasm.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,58 +24,62 @@ import (
2424
var worker js.Value
2525

2626
func HandleParsedFile(parsedAPI *gabs.Container) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize, error) {
27-
fmt.Println("HandleParsedFile:")
28-
fmt.Println("HandleParsedFile:", parsedAPI)
27+
fmt.Println("WASM: HandleParsedFile:")
28+
fmt.Println("WASM: HandleParsedFile:", parsedAPI)
2929
return HandleParsedFileHelper(parsedAPI)
3030
}
3131

3232
func ProcessWasmInput(data string) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize, error) {
33+
fmt.Println("WASM: ProcessWasmInput")
3334
apiContent := data
3435
p := parser.NewLama2Parser()
35-
fmt.Printf("apicontent %+v\n", apiContent)
36+
fmt.Printf("WASM: apicontent %+v\n", apiContent)
3637
parsedAPI, e := p.Parse(apiContent)
3738
if e != nil {
3839
fmt.Println("Error while parsing API:", e)
3940
}
4041

4142
// Print the parsedAPI value
42-
fmt.Printf("Parsed API: %+v\n", parsedAPI)
43+
fmt.Printf("WASM: Parsed API: %+v\n", parsedAPI)
4344
return HandleParsedFile(parsedAPI)
4445
}
4546

4647
func ProcessConverterInput(data string, ConvertLang string) (string, error) {
48+
fmt.Println("WASM: ProcessConverterInput")
4749
apiContent := data
4850
p := parser.NewLama2Parser()
4951
parsedAPI, e := p.Parse(apiContent)
50-
fmt.Println("Parsed API:", parsedAPI)
52+
fmt.Println("WASM: Parsed API:", parsedAPI)
5153
if e != nil {
52-
fmt.Println("Error while parsing API:", e)
54+
fmt.Println("WASM: Error while parsing API:", e)
5355
}
5456
snippet := codegen.GenerateTargetCode(ConvertLang, parsedAPI)
55-
fmt.Println("Generated Snippet:", snippet)
57+
fmt.Println("WASM: Generated Snippet:", snippet)
5658
return snippet, nil
5759
}
5860

5961
func ExecuteRequestorBlockHelper(resp httpie.ExResponse, headersString string, e1 error, vm interface{}) httpie.ExResponse {
62+
fmt.Println("WASM: ExecuteRequestorBlockHelper")
6063
targetHeader := "text/html"
6164
isTextHTMLPresent := strings.Contains(headersString, targetHeader)
6265
if isTextHTMLPresent {
63-
fmt.Printf("'%s' is present in the headers.\n", targetHeader)
66+
fmt.Printf("WASM: '%s' is present in the headers.\n", targetHeader)
6467
return resp
6568
} else {
66-
fmt.Printf("'%s' is not present in the headers.\n", targetHeader)
69+
fmt.Printf("WASM: '%s' is not present in the headers.\n", targetHeader)
6770
if e1 == nil {
6871
chainCode := cmdexec.GenerateChainCode(resp.Body)
6972
preprocess.RunCodeInWorker(chainCode)
7073
} else {
71-
fmt.Println("Error from ExecCommand", e1)
74+
fmt.Println("WASM: Error from ExecCommand", e1)
7275
os.Exit(1)
7376
}
7477
}
7578
return resp
7679
}
7780

7881
func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir string) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize, error) {
82+
fmt.Println("WASM: processBlocks")
7983
worker = preprocess.InitWebWorker() // Initialize the web worker
8084
var resp httpie.ExResponse
8185
for i, block := range parsedAPIblocks {
@@ -89,12 +93,15 @@ func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir stri
8993
resp, _, _ = processLama2FileBlock(block, worker, o, dir)
9094
}
9195
}
96+
fmt.Println("WASM: processBlocks returning")
9297
return resp, o, nil, nil, nil, nil
9398
}
9499

95100
func ExecuteProcessorBlock(block *gabs.Container) {
101+
fmt.Println("WASM: ExecuteProcessorBlock")
96102
b := block.S("value").Data().(*gabs.Container)
97103
log.Debug().Str("Processor block incoming block", block.String()).Msg("")
98104
script := b.Data().(string)
99105
preprocess.RunCodeInWorker(script)
106+
fmt.Println("WASM: ExecuteProcessorBlock returning")
100107
}

l2.wasm.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ func init() {
2020
}
2121

2222
func main() {
23+
fmt.Println("WASM: Starting main")
2324
// Set the global JavaScript property "goWebRequestFunc" to the result of wasmLamaPromise
2425
js.Global().Set("goWebRequestFunc", wasmLamaPromise())
2526
js.Global().Set("goCmdConvertFunc", wasmCodeConverter())
@@ -29,6 +30,7 @@ func main() {
2930
}
3031

3132
func wasmLamaPromise() js.Func {
33+
fmt.Println("WASM: Creating wasmLamaPromise")
3234
return js.FuncOf(func(this js.Value, args []js.Value) interface{} {
3335
liveapiManifest := args[2].String()
3436
js.Global().Set("liveapiManifest", liveapiManifest)
@@ -52,6 +54,7 @@ func wasmLamaPromise() js.Func {
5254
}
5355

5456
func wasmCodeConverter() js.Func {
57+
fmt.Println("WASM: Creating wasmCodeConverter")
5558
return js.FuncOf(func(this js.Value, args []js.Value) interface{} {
5659
inputdata := args[0].String()
5760
convertLang := args[1].String()

preprocess/expandvar.wasm.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
// Expand replaces ${var} or $var in the string based on the mapping function.
1919
// For example, os.ExpandEnv(s) is equivalent to os.Expand(s, os.Getenv).
2020
func Expand(s string, vm interface{}, mapping map[string]string) string {
21+
fmt.Println("WASM: Expanding variables")
2122
var buf []byte
2223
// ${} is all ASCII, so bytes are fine for this operation.
2324
i := 0
@@ -51,10 +52,12 @@ func Expand(s string, vm interface{}, mapping map[string]string) string {
5152
res = string(buf) + s[i:]
5253
}
5354
res2 := utils.RemoveUnquotedValueMarker(res)
55+
fmt.Println("WASM: Expanded variables", res2)
5456
return res2
5557
}
5658

5759
func getJsValue(name string, mapping map[string]string, buf []byte) []byte {
60+
fmt.Println("WASM: Getting JavaScript value")
5861
log.Debug().Str("WW Getting from worker", name).Msg("")
5962
jsVal := GetFromWorker(name)
6063
fmt.Println("WW: getjsvalue", name, jsVal)
@@ -70,5 +73,6 @@ func getJsValue(name string, mapping map[string]string, buf []byte) []byte {
7073
log.Warn().Str("Couldn't find the variable `"+name+"`, in both Javascript processor block and environment variables. Replacing with empty string", "").Msg("")
7174
}
7275
}
76+
fmt.Println("WASM: Returning buffer", buf)
7377
return buf
7478
}

preprocess/webworker.wasm.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
var worker js.Value
1313

1414
func InitWebWorker() js.Value {
15+
fmt.Println("WASM: Initializing web worker")
1516
if worker.IsUndefined() {
1617
script := `
1718
var result;
@@ -62,20 +63,24 @@ func InitWebWorker() js.Value {
6263
return nil
6364
}))
6465
}
66+
fmt.Println("WASM: Web worker initialized")
6567
return worker
6668
}
6769

6870
func RunCodeInWorker(chainCode string) {
71+
fmt.Println("WASM: Running code in web worker")
6972
// Ensure the worker is initialized
7073
InitWebWorker()
7174
// Send the message to the worker
7275
worker.Call("postMessage", map[string]interface{}{
7376
"type": "execute",
7477
"payload": chainCode,
7578
})
79+
fmt.Println("WASM: Code sent to web worker")
7680
}
7781

7882
func GetFromWorker(variableName string) string {
83+
fmt.Println("WASM: Getting from web worker")
7984
worker := InitWebWorker()
8085
responseChannel := make(chan js.Value, 20)
8186

@@ -103,6 +108,6 @@ func GetFromWorker(variableName string) string {
103108
fmt.Println("WW: Webworker call complete:", variableName)
104109
var result js.Value
105110
result = <-responseChannel
106-
fmt.Println("WW: getfromworker webworker.go", variableName, result.Get("value").String())
111+
fmt.Println("WASM: getfromworker webworker.go", variableName, result.Get("value").String())
107112
return result.Get("value").String()
108113
}

wasmbuild.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#!/bin/bash
2-
export AWS_ACCESS_KEY_ID=""
3-
export AWS_SECRET_ACCESS_KEY=""
42
GOOS=js GOARCH=wasm go build -a -gcflags=all="-l -B -wb=false" -ldflags="-w -s" -o static/main.wasm
5-
# cp static/main.wasm /home/i3nux-mint/repos/liveapi/src/views
6-
aws s3 cp static/main.wasm s3://temp-2d/temp/main.wasm --region ap-south-1
3+
cp static/main.wasm /home/lovestaco/hex/liveapi/src/mainmy.wasm
74

85

6+

0 commit comments

Comments
 (0)