Browse Source

Remove unneeded attributes when stripping XMP

DarthSim 2 years ago
parent
commit
0e62ebc614
2 changed files with 12 additions and 2 deletions
  1. 1 1
      CHANGELOG.md
  2. 11 1
      processing/finalize.go

+ 1 - 1
CHANGELOG.md

@@ -3,8 +3,8 @@
 ## [Unreleased]
 ## [Unreleased]
 ### Add
 ### Add
 - Add `IMGPROXY_OPEN_TELEMETRY_GRPC_INSECURE` config.
 - Add `IMGPROXY_OPEN_TELEMETRY_GRPC_INSECURE` config.
+- Better XMP data stripping.
 - (pro) Add XMP data to the `/info` response.
 - (pro) Add XMP data to the `/info` response.
-- (pro) Better XMP data stripping.
 
 
 ## [3.10.0] - 2022-11-04
 ## [3.10.0] - 2022-11-04
 ### Add
 ### Add

+ 11 - 1
processing/finalize.go

@@ -62,11 +62,21 @@ func stripXMP(img *vips.Image) []byte {
 		if n.Name() == "dc" {
 		if n.Name() == "dc" {
 			filteredNodes := n.Nodes[:0]
 			filteredNodes := n.Nodes[:0]
 			for _, nn := range n.Nodes {
 			for _, nn := range n.Nodes {
-				if nn.Name() == "rights" || nn.Name() == "contributor" || nn.Name() == "creator" || nn.Name() == "publisher" {
+				name := nn.Name()
+				if name == "rights" || name == "contributor" || name == "creator" || name == "publisher" {
 					filteredNodes = append(filteredNodes, nn)
 					filteredNodes = append(filteredNodes, nn)
 				}
 				}
 			}
 			}
 			n.Nodes = filteredNodes
 			n.Nodes = filteredNodes
+
+			filteredAttrs := n.Attr[:0]
+			for _, a := range n.Attr {
+				name := a.Name.Local
+				if name == "dc:rights" || name == "dc:contributor" || name == "dc:creator" || name == "dc:publisher" {
+					filteredAttrs = append(filteredAttrs, a)
+				}
+			}
+			n.Attr = filteredAttrs
 		}
 		}
 	}
 	}