aboutsummaryrefslogtreecommitdiffhomepage
path: root/media
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2021-12-21 09:39:05 +0100
committerBjørn Erik Pedersen <[email protected]>2021-12-22 11:35:53 +0100
commitcdc73526a80de2120df7aa44f7dc820df6de789d (patch)
tree2463ba37d6da3421726c48ff2bb4b1a5df067f2c /media
parent425c7d90f0422f41703a757e97a1370d3b08fc37 (diff)
downloadhugo-cdc73526a80de2120df7aa44f7dc820df6de789d.tar.gz
hugo-cdc73526a80de2120df7aa44f7dc820df6de789d.zip
media: Add PDF MIME type
Diffstat (limited to 'media')
-rw-r--r--media/mediaType.go5
-rw-r--r--media/mediaType_test.go13
-rw-r--r--media/testdata/resource.pdf198
3 files changed, 208 insertions, 8 deletions
diff --git a/media/mediaType.go b/media/mediaType.go
index 0bdeb6db7..18af666d5 100644
--- a/media/mediaType.go
+++ b/media/mediaType.go
@@ -169,7 +169,6 @@ func (m Type) IsText() bool {
switch m.SubType {
case "javascript", "json", "rss", "xml", "svg", TOMLType.SubType, YAMLType.SubType:
return true
-
}
return false
}
@@ -239,6 +238,9 @@ var (
TrueTypeFontType = newMediaType("font", "ttf", []string{"ttf"})
OpenTypeFontType = newMediaType("font", "otf", []string{"otf"})
+ // Common document types
+ PDFType = newMediaType("application", "pdf", []string{"pdf"})
+
// Common video types
AVIType = newMediaType("video", "x-msvideo", []string{"avi"})
MPEGType = newMediaType("video", "mpeg", []string{"mpg", "mpeg"})
@@ -282,6 +284,7 @@ var DefaultTypes = Types{
GPPType,
OpenTypeFontType,
TrueTypeFontType,
+ PDFType,
}
func init() {
diff --git a/media/mediaType_test.go b/media/mediaType_test.go
index f3a06e8ed..8c739813d 100644
--- a/media/mediaType_test.go
+++ b/media/mediaType_test.go
@@ -51,6 +51,7 @@ func TestDefaultTypes(t *testing.T) {
{XMLType, "application", "xml", "xml", "application/xml", "application/xml"},
{TOMLType, "application", "toml", "toml", "application/toml", "application/toml"},
{YAMLType, "application", "yaml", "yaml", "application/yaml", "application/yaml"},
+ {PDFType, "application", "pdf", "pdf", "application/pdf", "application/pdf"},
{TrueTypeFontType, "font", "ttf", "ttf", "font/ttf", "font/ttf"},
{OpenTypeFontType, "font", "otf", "otf", "font/otf", "font/otf"},
} {
@@ -62,7 +63,7 @@ func TestDefaultTypes(t *testing.T) {
}
- c.Assert(len(DefaultTypes), qt.Equals, 30)
+ c.Assert(len(DefaultTypes), qt.Equals, 31)
}
func TestGetByType(t *testing.T) {
@@ -118,7 +119,8 @@ func TestGetFirstBySuffix(t *testing.T) {
c.Assert(found, qt.Equals, true)
c.Assert(f, qt.Equals, SuffixInfo{
Suffix: suffix,
- FullSuffix: "." + suffix})
+ FullSuffix: "." + suffix,
+ })
c.Assert(t, qt.Equals, expectedType)
}
@@ -126,7 +128,6 @@ func TestGetFirstBySuffix(t *testing.T) {
check("json", JSONType)
check("geojson", geoJSON)
check("gjson", geoJSON)
-
}
func TestFromTypeString(t *testing.T) {
@@ -150,7 +151,6 @@ func TestFromTypeString(t *testing.T) {
c.Assert(err, qt.IsNil)
c.Assert(f, qt.Equals, Type{MainType: "text", SubType: "xml", mimeSuffix: ""})
-
}
func TestFromStringAndExt(t *testing.T) {
@@ -178,7 +178,6 @@ func TestFromExtensionMultipleSuffixes(t *testing.T) {
c.Assert(found, qt.Equals, true)
c.Assert(ftp.String(), qt.Equals, "image/svg+xml")
c.Assert(found, qt.Equals, true)
-
}
func TestFromContent(t *testing.T) {
@@ -189,7 +188,8 @@ func TestFromContent(t *testing.T) {
mtypes := DefaultTypes
for _, filename := range files {
- c.Run(filepath.Base(filename), func(c *qt.C) {
+ name := filepath.Base(filename)
+ c.Run(name, func(c *qt.C) {
content, err := ioutil.ReadFile(filename)
c.Assert(err, qt.IsNil)
ext := strings.TrimPrefix(paths.Ext(filename), ".")
@@ -252,7 +252,6 @@ func TestDecodeTypes(t *testing.T) {
_, found = tt.GetByType("application/hugo+hg")
c.Assert(found, qt.Equals, true)
-
},
},
{
diff --git a/media/testdata/resource.pdf b/media/testdata/resource.pdf
new file mode 100644
index 000000000..c0e31a076
--- /dev/null
+++ b/media/testdata/resource.pdf
@@ -0,0 +1,198 @@
+%PDF-1.3
+%����
+
+1 0 obj
+<<
+/Type /Catalog
+/Outlines 2 0 R
+/Pages 3 0 R
+>>
+endobj
+
+2 0 obj
+<<
+/Type /Outlines
+/Count 0
+>>
+endobj
+
+3 0 obj
+<<
+/Type /Pages
+/Count 2
+/Kids [ 4 0 R 6 0 R ]
+>>
+endobj
+
+4 0 obj
+<<
+/Type /Page
+/Parent 3 0 R
+/Resources <<
+/Font <<
+/F1 9 0 R
+>>
+/ProcSet 8 0 R
+>>
+/MediaBox [0 0 612.0000 792.0000]
+/Contents 5 0 R
+>>
+endobj
+
+5 0 obj
+<< /Length 1074 >>
+stream
+2 J
+BT
+0 0 0 rg
+/F1 0027 Tf
+57.3750 722.2800 Td
+( A Simple PDF File ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 688.6080 Td
+( This is a small demonstration .pdf file - ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 664.7040 Td
+( just for use in the Virtual Mechanics tutorials. More text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 652.7520 Td
+( text. And more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 628.8480 Td
+( And more text. And more text. And more text. And more text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 616.8960 Td
+( text. And more text. Boring, zzzzz. And more text. And more text. And ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 604.9440 Td
+( more text. And more text. And more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 592.9920 Td
+( And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 569.0880 Td
+( And more text. And more text. And more text. And more text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 557.1360 Td
+( text. And more text. And more text. Even more. Continued on page 2 ...) Tj
+ET
+endstream
+endobj
+
+6 0 obj
+<<
+/Type /Page
+/Parent 3 0 R
+/Resources <<
+/Font <<
+/F1 9 0 R
+>>
+/ProcSet 8 0 R
+>>
+/MediaBox [0 0 612.0000 792.0000]
+/Contents 7 0 R
+>>
+endobj
+
+7 0 obj
+<< /Length 676 >>
+stream
+2 J
+BT
+0 0 0 rg
+/F1 0027 Tf
+57.3750 722.2800 Td
+( Simple PDF File 2 ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 688.6080 Td
+( ...continued from page 1. Yet more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 676.6560 Td
+( And more text. And more text. And more text. And more text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 664.7040 Td
+( text. Oh, how boring typing this stuff. But not as boring as watching ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 652.7520 Td
+( paint dry. And more text. And more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 640.8000 Td
+( Boring. More, a little more text. The end, and just as well. ) Tj
+ET
+endstream
+endobj
+
+8 0 obj
+[/PDF /Text]
+endobj
+
+9 0 obj
+<<
+/Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding
+>>
+endobj
+
+10 0 obj
+<<
+/Creator (Rave \(http://www.nevrona.com/rave\))
+/Producer (Nevrona Designs)
+/CreationDate (D:20060301072826)
+>>
+endobj
+
+xref
+0 11
+0000000000 65535 f
+0000000019 00000 n
+0000000093 00000 n
+0000000147 00000 n
+0000000222 00000 n
+0000000390 00000 n
+0000001522 00000 n
+0000001690 00000 n
+0000002423 00000 n
+0000002456 00000 n
+0000002574 00000 n
+
+trailer
+<<
+/Size 11
+/Root 1 0 R
+/Info 10 0 R
+>>
+
+startxref
+2714
+%%EOF