func DeleteTag(w http.ResponseWriter, r *http.Request, cfg config.Configuration, ctx model.Context) { var err error params := mux.Vars(r) t := model.Tag{} err = t.SetTag(params["tag"]) if err != nil { ctx.Log.Println(err) http.Error(w, "Invalid tag", 400) return } t.SetTagDir(cfg.Filedir) // Tag does not exist if t.TagDirExists() == false { http.Error(w, "Tag Not Found", 404) return } t.List(cfg.Baseurl) if err != nil { ctx.Log.Println(err) http.Error(w, "Internal Server Error", 500) return } if cfg.TriggerDeleteTag != "" { ctx.Log.Println("Executing trigger: Delete tag") triggerDeleteTagHandler(cfg.TriggerDeleteTag, t.Tag) } // Tag exists, so let's remove it. err = t.Remove() if err != nil { ctx.Log.Println(err) http.Error(w, "Internal Server Error", 500) return } // Verify that the tag directory is removed before sending the response. if t.TagDirExists() == true { // Failsafe. This should not happen. ctx.Log.Println("Failed to delete the tag. The tag dir still exists.") http.Error(w, "Internal Server Error", 500) return } // Purging any old content if cfg.CacheInvalidation { for _, f := range t.Files { if err := f.Purge(); err != nil { ctx.Log.Println(err) } } } ctx.Log.Println("Tag deleted successfully.") http.Error(w, "Tag Deleted Successfully", 200) return }