run.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. }) {
  15. switch req.Language {
  16. case "python3":
  17. c.JSON(200, service.RunPython3Code(req.Code, req.Preload, &runner_types.RunnerOptions{
  18. EnableNetwork: req.EnableNetwork,
  19. }))
  20. case "nodejs":
  21. c.JSON(200, service.RunNodeJsCode(req.Code, req.Preload, &runner_types.RunnerOptions{
  22. EnableNetwork: req.EnableNetwork,
  23. }))
  24. default:
  25. c.JSON(400, types.ErrorResponse(-400, "unsupported language"))
  26. }
  27. })
  28. }
  29. func GetDependencies(c *gin.Context) {
  30. BindRequest(c, func(req struct {
  31. Language string `json:"language" form:"language" binding:"required"`
  32. }) {
  33. switch req.Language {
  34. case "python3":
  35. c.JSON(200, service.ListPython3Dependencies())
  36. default:
  37. c.JSON(400, types.ErrorResponse(-400, "unsupported language"))
  38. }
  39. })
  40. }
  41. func UpdateDependencies(c *gin.Context) {
  42. BindRequest(c, func(req struct {
  43. Language string `json:"language" form:"language" binding:"required"`
  44. }) {
  45. switch req.Language {
  46. case "python3":
  47. c.JSON(200, service.UpdateDependencies())
  48. default:
  49. c.JSON(400, types.ErrorResponse(-400, "unsupported language"))
  50. }
  51. })
  52. }
  53. func RefreshDependencies(c *gin.Context) {
  54. BindRequest(c, func(req struct {
  55. Language string `json:"language" form:"language" binding:"required"`
  56. }) {
  57. switch req.Language {
  58. case "python3":
  59. c.JSON(200, service.RefreshPython3Dependencies())
  60. default:
  61. c.JSON(400, types.ErrorResponse(-400, "unsupported language"))
  62. }
  63. })
  64. }