aboutsummaryrefslogtreecommitdiffhomepage
path: root/worker/swift/handlers.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-09-05 20:34:02 +0900
committernsfisis <nsfisis@gmail.com>2025-09-05 20:52:59 +0900
commitdd1c68425120fca008a3b10991c865ea586c7002 (patch)
tree13784e4e2923d7a51a63ba148c89907ef73cce6f /worker/swift/handlers.go
parentc7941d027be068f6e563a17e882232580fe15334 (diff)
downloadphperkaigi-2026-albatross-dd1c68425120fca008a3b10991c865ea586c7002.tar.gz
phperkaigi-2026-albatross-dd1c68425120fca008a3b10991c865ea586c7002.tar.zst
phperkaigi-2026-albatross-dd1c68425120fca008a3b10991c865ea586c7002.zip
feat(worker): add swift worker
Diffstat (limited to 'worker/swift/handlers.go')
-rw-r--r--worker/swift/handlers.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/worker/swift/handlers.go b/worker/swift/handlers.go
new file mode 100644
index 0000000..ac9701f
--- /dev/null
+++ b/worker/swift/handlers.go
@@ -0,0 +1,68 @@
+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.CodeHash,
+ 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.CodeHash,
+ 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.CodeHash,
+ req.Stdin,
+ req.maxDuration(),
+ )
+
+ return c.JSON(http.StatusOK, res)
+}