run.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. runner_types "github.com/langgenius/dify-sandbox/internal/core/runner/types"
  5. "github.com/langgenius/dify-sandbox/internal/service"
  6. "github.com/langgenius/dify-sandbox/internal/types"
  7. )
  8. func RunSandboxController(c *gin.Context) {
  9. BindRequest(c, func(req struct {
  10. Language string `json:"language" form:"language" binding:"required"`
  11. Code string `json:"code" form:"code" binding:"required"`
  12. Preload string `json:"preload" form:"preload"`
  13. EnableNetwork bool `json:"enable_network" form:"enable_network"`
  14. Dependencies []runner_types.Dependency `json:"dependencies" form:"dependencies"`
  15. }) {
  16. switch req.Language {
  17. case "python3":
  18. c.JSON(200, service.RunPython3Code(req.Code, req.Preload, &runner_types.RunnerOptions{
  19. EnableNetwork: req.EnableNetwork,
  20. Dependencies: req.Dependencies,
  21. }))
  22. case "nodejs":
  23. c.JSON(200, service.RunNodeJsCode(req.Code, req.Preload, &runner_types.RunnerOptions{
  24. EnableNetwork: req.EnableNetwork,
  25. }))
  26. default:
  27. c.JSON(400, types.ErrorResponse(-400, "unsupported language"))
  28. }
  29. })
  30. }
  31. func GetDependencies(c *gin.Context) {
  32. BindRequest(c, func(req struct {
  33. Language string `json:"language" form:"language" binding:"required"`
  34. }) {
  35. switch req.Language {
  36. case "python3":
  37. c.JSON(200, service.ListPython3Dependencies())
  38. default:
  39. c.JSON(400, types.ErrorResponse(-400, "unsupported language"))
  40. }
  41. })
  42. }
  43. func UpdateDependencies(c *gin.Context) {
  44. BindRequest(c, func(req struct {
  45. Language string `json:"language" form:"language" binding:"required"`
  46. }) {
  47. switch req.Language {
  48. case "python3":
  49. c.JSON(200, service.UpdateDependencies())
  50. default:
  51. c.JSON(400, types.ErrorResponse(-400, "unsupported language"))
  52. }
  53. })
  54. }