mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-06 16:32:31 +01:00
73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
package workflow
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
. "github.com/mickael-kerjean/filestash/server/common"
|
|
. "github.com/mickael-kerjean/filestash/server/workflow/model"
|
|
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
func WorkflowAll(ctx *App, res http.ResponseWriter, req *http.Request) {
|
|
workflows, err := AllWorkflows()
|
|
if err != nil {
|
|
SendErrorResult(res, err)
|
|
return
|
|
}
|
|
triggers := Hooks.Get.WorkflowTriggers()
|
|
tm := make([]WorkflowSpecs, len(triggers))
|
|
for i, t := range triggers {
|
|
tm[i] = t.Manifest()
|
|
}
|
|
actions := Hooks.Get.WorkflowActions()
|
|
am := make([]WorkflowSpecs, len(actions))
|
|
for i, a := range actions {
|
|
am[i] = a.Manifest()
|
|
}
|
|
SendSuccessResult(res, map[string]any{
|
|
"workflows": workflows,
|
|
"triggers": tm,
|
|
"actions": am,
|
|
})
|
|
}
|
|
|
|
func WorkflowUpsert(ctx *App, res http.ResponseWriter, req *http.Request) {
|
|
var workflow Workflow
|
|
if err := json.NewDecoder(req.Body).Decode(&workflow); err != nil {
|
|
SendErrorResult(res, ErrInternal)
|
|
return
|
|
}
|
|
if err := UpsertWorkflow(workflow); err != nil {
|
|
SendErrorResult(res, err)
|
|
return
|
|
}
|
|
SendSuccessResult(res, nil)
|
|
}
|
|
|
|
func WorkflowGet(ctx *App, res http.ResponseWriter, req *http.Request) {
|
|
workflowID := mux.Vars(req)["workflowID"]
|
|
if workflowID == "" {
|
|
SendErrorResult(res, ErrNotValid)
|
|
return
|
|
}
|
|
workflow, err := GetWorkflow(workflowID)
|
|
if err != nil {
|
|
SendErrorResult(res, err)
|
|
return
|
|
}
|
|
SendSuccessResult(res, workflow)
|
|
}
|
|
|
|
func WorkflowDelete(ctx *App, res http.ResponseWriter, req *http.Request) {
|
|
id := req.URL.Query().Get("id")
|
|
if id == "" {
|
|
SendErrorResult(res, ErrNotValid)
|
|
return
|
|
} else if err := DeleteWorkflow(id); err != nil {
|
|
SendErrorResult(res, err)
|
|
return
|
|
}
|
|
SendSuccessResult(res, nil)
|
|
}
|