Add new before triggers

This commit is contained in:
Maxime Daniel 2017-09-07 15:31:28 +02:00
parent fffba2ad7b
commit d09691d1ec
2 changed files with 30 additions and 2 deletions

View File

@ -121,9 +121,13 @@ func (m *FileManager) Setup() error {
"after_save": {}, "after_save": {},
"before_publish": {}, "before_publish": {},
"after_publish": {}, "after_publish": {},
"before_copy": {},
"after_copy": {}, "after_copy": {},
"before_rename": {},
"after_rename": {}, "after_rename": {},
"before_upload": {},
"after_upload": {}, "after_upload": {},
"before_delete": {},
"after_delete": {}, "after_delete": {},
} }
err = m.Store.Config.Save("commands", m.Commands) err = m.Store.Config.Save("commands", m.Commands)

View File

@ -139,13 +139,18 @@ func resourceDeleteHandler(c *fm.Context, w http.ResponseWriter, r *http.Request
return http.StatusForbidden, nil return http.StatusForbidden, nil
} }
// Fire the before trigger.
if err := c.Runner("before_delete", r.URL.Path, "", c.User); err != nil {
return http.StatusInternalServerError, err
}
// Remove the file or folder. // Remove the file or folder.
err := c.User.FileSystem.RemoveAll(r.URL.Path) err := c.User.FileSystem.RemoveAll(r.URL.Path)
if err != nil { if err != nil {
return ErrorToHTTP(err, true), err return ErrorToHTTP(err, true), err
} }
// Fire the trigger // Fire the after trigger.
if err := c.Runner("after_delete", r.URL.Path, "", c.User); err != nil { if err := c.Runner("after_delete", r.URL.Path, "", c.User); err != nil {
return http.StatusInternalServerError, err return http.StatusInternalServerError, err
} }
@ -190,6 +195,11 @@ func resourcePostPutHandler(c *fm.Context, w http.ResponseWriter, r *http.Reques
} }
} }
// Fire the before trigger.
if err := c.Runner("before_upload", r.URL.Path, "", c.User); err != nil {
return http.StatusInternalServerError, err
}
// Create/Open the file. // Create/Open the file.
f, err := c.User.FileSystem.OpenFile(r.URL.Path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0776) f, err := c.User.FileSystem.OpenFile(r.URL.Path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0776)
if err != nil { if err != nil {
@ -222,7 +232,7 @@ func resourcePostPutHandler(c *fm.Context, w http.ResponseWriter, r *http.Reques
etag := fmt.Sprintf(`"%x%x"`, fi.ModTime().UnixNano(), fi.Size()) etag := fmt.Sprintf(`"%x%x"`, fi.ModTime().UnixNano(), fi.Size())
w.Header().Set("ETag", etag) w.Header().Set("ETag", etag)
// Fire the trigger // Fire the after trigger.
if err := c.Runner("after_upload", r.URL.Path, "", c.User); err != nil { if err := c.Runner("after_upload", r.URL.Path, "", c.User); err != nil {
return http.StatusInternalServerError, err return http.StatusInternalServerError, err
} }
@ -302,14 +312,28 @@ func resourcePatchHandler(c *fm.Context, w http.ResponseWriter, r *http.Request)
} }
if action == "copy" { if action == "copy" {
// Fire the after trigger.
if err := c.Runner("before_copy", src, dst, c.User); err != nil {
return http.StatusInternalServerError, err
}
// Copy the file.
err = c.User.FileSystem.Copy(src, dst) err = c.User.FileSystem.Copy(src, dst)
// Fire the after trigger.
if err := c.Runner("after_copy", src, dst, c.User); err != nil { if err := c.Runner("after_copy", src, dst, c.User); err != nil {
return http.StatusInternalServerError, err return http.StatusInternalServerError, err
} }
} else { } else {
// Fire the after trigger.
if err := c.Runner("before_rename", src, dst, c.User); err != nil {
return http.StatusInternalServerError, err
}
// Rename the file.
err = c.User.FileSystem.Rename(src, dst) err = c.User.FileSystem.Rename(src, dst)
// Fire the after trigger.
if err := c.Runner("after_rename", src, dst, c.User); err != nil { if err := c.Runner("after_rename", src, dst, c.User); err != nil {
return http.StatusInternalServerError, err return http.StatusInternalServerError, err
} }