fixed switch case, optimized lxc/execute, optimized json response
This commit is contained in:
parent
9e7e53d45d
commit
d42aa6edb1
64
api/main.go
64
api/main.go
|
@ -53,7 +53,7 @@ func main() {
|
||||||
fmt.Println("starting api on port", port)
|
fmt.Println("starting api on port", port)
|
||||||
http.HandleFunc("/execute", Execute)
|
http.HandleFunc("/execute", Execute)
|
||||||
http.HandleFunc("/versions", Versions)
|
http.HandleFunc("/versions", Versions)
|
||||||
http.ListenAndServe(":" + port, nil)
|
http.ListenAndServe(":"+port, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Execute(res http.ResponseWriter, req *http.Request) {
|
func Execute(res http.ResponseWriter, req *http.Request) {
|
||||||
|
@ -87,7 +87,6 @@ func Execute(res http.ResponseWriter, req *http.Request) {
|
||||||
// now calls function and returns
|
// now calls function and returns
|
||||||
for _, lang := range whitelist {
|
for _, lang := range whitelist {
|
||||||
if lang == inbound.Language {
|
if lang == inbound.Language {
|
||||||
|
|
||||||
launch(inbound, res)
|
launch(inbound, res)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -121,15 +120,7 @@ func launch(request Inbound, res http.ResponseWriter) {
|
||||||
ioutil.WriteFile(srcfile, []byte(request.Source), 0644)
|
ioutil.WriteFile(srcfile, []byte(request.Source), 0644)
|
||||||
|
|
||||||
// set up the arguments to send to the execute command
|
// set up the arguments to send to the execute command
|
||||||
var args []string
|
cmd := exec.Command("../lxc/execute", request.Language, srcfile, strings.Join(request.Args, "\n"))
|
||||||
|
|
||||||
args = append(args, request.Language)
|
|
||||||
args = append(args, srcfile)
|
|
||||||
|
|
||||||
args = append(args, strings.Join(request.Args, "\n"))
|
|
||||||
|
|
||||||
// set up the execution
|
|
||||||
cmd := exec.Command("../lxc/execute", args...)
|
|
||||||
|
|
||||||
// capture out/err
|
// capture out/err
|
||||||
var stdout, stderr bytes.Buffer
|
var stdout, stderr bytes.Buffer
|
||||||
|
@ -142,45 +133,36 @@ func launch(request Inbound, res http.ResponseWriter) {
|
||||||
execlang := request.Language
|
execlang := request.Language
|
||||||
|
|
||||||
switch execlang {
|
switch execlang {
|
||||||
case "c++":
|
case "c++":
|
||||||
execlang = "cpp"
|
execlang = "cpp"
|
||||||
break
|
case "cs", "c#":
|
||||||
case "cs":
|
execlang = "csharp"
|
||||||
case "c#":
|
case "asm":
|
||||||
execlang = "csharp"
|
execlang = "nasm"
|
||||||
break
|
case "js", "javascript":
|
||||||
case "asm":
|
execlang = "node"
|
||||||
execlang = "nasm"
|
case "python":
|
||||||
break
|
execlang = "python3"
|
||||||
case "javascript":
|
case "ts":
|
||||||
case "js":
|
execlang = "typescript"
|
||||||
execlang = "node"
|
|
||||||
break
|
|
||||||
case "python":
|
|
||||||
execlang = "python3"
|
|
||||||
break
|
|
||||||
case "ts":
|
|
||||||
execlang = "typescript"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
var version string
|
|
||||||
|
|
||||||
for _, lang := range languages {
|
|
||||||
if lang.Name == execlang {
|
|
||||||
version = lang.Version
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// prepare response
|
// prepare response
|
||||||
outbound := Outbound{
|
outbound := Outbound{
|
||||||
Ran: err == nil,
|
Ran: err == nil,
|
||||||
Language: request.Language,
|
Language: request.Language,
|
||||||
Version: version,
|
Version: "",
|
||||||
Output: strings.TrimSpace(stdout.String()),
|
Output: strings.TrimSpace(stdout.String()),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// retrieve the language version
|
||||||
|
for _, lang := range languages {
|
||||||
|
if lang.Name == execlang {
|
||||||
|
outbound.Version = lang.Version
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
response, _ := json.Marshal(outbound)
|
response, _ := json.Marshal(outbound)
|
||||||
|
|
||||||
res.Write(response)
|
res.Write(response)
|
||||||
|
|
Loading…
Reference in New Issue