aboutsummaryrefslogtreecommitdiffhomepage
path: root/worker/handlers.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-08-03 22:18:38 +0900
committernsfisis <nsfisis@gmail.com>2024-08-03 22:18:38 +0900
commitc5f340afc2ecdbff9f0d2e0707f310fa88f5af12 (patch)
treebdef0421d29b9ee737e869677166d4b3ebdadb0f /worker/handlers.go
parentdb06c9332776b41b3fef537f9e6d76d38f0463b3 (diff)
parent7a4171d021a709e0af1e0e13830514c67ec97702 (diff)
downloadphperkaigi-2025-albatross-c5f340afc2ecdbff9f0d2e0707f310fa88f5af12.tar.gz
phperkaigi-2025-albatross-c5f340afc2ecdbff9f0d2e0707f310fa88f5af12.tar.zst
phperkaigi-2025-albatross-c5f340afc2ecdbff9f0d2e0707f310fa88f5af12.zip
Merge branch 'feat/worker'
Diffstat (limited to 'worker/handlers.go')
-rw-r--r--worker/handlers.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/worker/handlers.go b/worker/handlers.go
new file mode 100644
index 0000000..e7ceef6
--- /dev/null
+++ b/worker/handlers.go
@@ -0,0 +1,67 @@
+package main
+
+import (
+ "fmt"
+ "net/http"
+
+ "github.com/labstack/echo/v4"
+)
+
+func newBadRequestError(err error) *echo.HTTPError {
+ return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid request: %s", err.Error()))
+}
+
+func handleSwiftCompile(c echo.Context) error {
+ var req swiftCompileRequestData
+ if err := c.Bind(&req); err != nil {
+ return newBadRequestError(err)
+ }
+ if err := req.validate(); err != nil {
+ return newBadRequestError(err)
+ }
+
+ res := execSwiftCompile(
+ c.Request().Context(),
+ req.Code,
+ req.maxDuration(),
+ )
+
+ return c.JSON(http.StatusOK, res)
+}
+
+func handleWasmCompile(c echo.Context) error {
+ var req wasmCompileRequestData
+ if err := c.Bind(&req); err != nil {
+ return newBadRequestError(err)
+ }
+ if err := req.validate(); err != nil {
+ return newBadRequestError(err)
+ }
+
+ res := execWasmCompile(
+ c.Request().Context(),
+ req.Code,
+ req.maxDuration(),
+ )
+
+ return c.JSON(http.StatusOK, res)
+}
+
+func handleTestRun(c echo.Context) error {
+ var req testRunRequestData
+ if err := c.Bind(&req); err != nil {
+ return newBadRequestError(err)
+ }
+ if err := req.validate(); err != nil {
+ return newBadRequestError(err)
+ }
+
+ res := execTestRun(
+ c.Request().Context(),
+ req.Code,
+ req.Stdin,
+ req.maxDuration(),
+ )
+
+ return c.JSON(http.StatusOK, res)
+}