|
|
@@ -729,6 +729,47 @@ func (s *Server) getHandler(w http.ResponseWriter, r *http.Request) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func (s *Server) deleteHandler(w http.ResponseWriter, r *http.Request) { |
|
|
|
vars := mux.Vars(r) |
|
|
|
|
|
|
|
token := vars["token"] |
|
|
|
filename := vars["filename"] |
|
|
|
|
|
|
|
var metadata Metadata |
|
|
|
|
|
|
|
reader, _, _, err := s.storage.Get(token, fmt.Sprintf("%s.metadata", filename)) |
|
|
|
if s.storage.IsNotExist(err) { |
|
|
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound) |
|
|
|
return |
|
|
|
} else if err != nil { |
|
|
|
log.Printf("#1 %s", err.Error()) |
|
|
|
http.Error(w, "Could not delete file.", 500) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
defer reader.Close() |
|
|
|
|
|
|
|
if err := json.NewDecoder(reader).Decode(&metadata); err != nil { |
|
|
|
log.Printf("#2 %s", err.Error()) |
|
|
|
http.Error(w, "Could not delete file.", 500) |
|
|
|
return |
|
|
|
} |
|
|
|
if metadata.Downloads >= metadata.MaxDownloads || time.Now().After(metadata.MaxDate) { |
|
|
|
// DELETE FILE AND METADATA |
|
|
|
if err := s.storage.Delete(token, filename); err != nil { |
|
|
|
log.Printf("#3 %s", err.Error()) |
|
|
|
http.Error(w, "Could not delete file.", 500) |
|
|
|
return |
|
|
|
} |
|
|
|
} else { |
|
|
|
http.Error(w, "MaxDownloads or MaxDays not exceeded yet.", 500) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func (s *Server) RedirectHandler(h http.Handler) http.HandlerFunc { |
|
|
|
return func(w http.ResponseWriter, r *http.Request) { |
|
|
|
if !s.forceHTTPs { |
|
|
|