func handleBatchRemove(req *http.Request, storage blobserver.Storage) (interface{}, error) { res := new(protocol.RemoveResponse) n := 0 toRemove := make([]blob.Ref, 0) for { n++ if n > maxRemovesPerRequest { return nil, newRateLimitError(maxRemovesPerRequest) } key := fmt.Sprintf("blob%v", n) value := req.FormValue(key) ref, ok := blob.Parse(value) if !ok { break } toRemove = append(toRemove, ref) } err := storage.RemoveBlobs(toRemove) if err != nil { log.Errorf("Server error during remove: %v", err) return nil, newHTTPError("Server error", http.StatusInternalServerError) } res.Removed = toRemove return res, nil }
func handleRemove(req *http.Request, storage blobserver.Storage) (interface{}, error) { res := new(protocol.RemoveResponse) vars := mux.Vars(req) ref, ok := blob.Parse(vars["blobRef"]) if !ok { return nil, newHTTPError("Invalid blob ref", http.StatusBadRequest) } toRemove := []blob.Ref{ref} err := storage.RemoveBlobs(toRemove) if err != nil { log.Errorf("Server error during remove: %v", err) return nil, newHTTPError("Server error", http.StatusInternalServerError) } res.Removed = toRemove return res, nil }