35 lines
697 B
Go
35 lines
697 B
Go
package server
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"monkey"
|
|
"net/http"
|
|
|
|
"go.mills.io/router"
|
|
)
|
|
|
|
func (s *Server) runHandler() router.Handle {
|
|
return func(w http.ResponseWriter, r *http.Request, p router.Params) {
|
|
opts := &monkey.Options{
|
|
Stdout: w,
|
|
Stderr: w,
|
|
Exit: func(status int) {
|
|
io.WriteString(w, fmt.Sprintf("<p><i>Program exited with %d.</i></p>", status))
|
|
},
|
|
}
|
|
|
|
err := monkey.ExecString(r.FormValue("code"), opts)
|
|
if err != nil {
|
|
http.Error(w, err.Error(), 400)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func (s *Server) formatHandler() router.Handle {
|
|
return func(w http.ResponseWriter, r *http.Request, p router.Params) {
|
|
http.Error(w, "Not Implemented", http.StatusNotImplemented)
|
|
}
|
|
}
|