FIX: best effort at returning correct mime types in manifest.json

This commit is contained in:
Jeff Wong 2018-05-17 12:10:35 -07:00
parent 53f8f6095d
commit 41ffafb65e
2 changed files with 22 additions and 1 deletions

View File

@ -30,7 +30,7 @@ class MetadataController < ApplicationController
{
src: logo,
sizes: "512x512",
type: "image/png"
type: guess_mime(logo)
}
]
}
@ -49,4 +49,11 @@ class MetadataController < ApplicationController
manifest
end
def guess_mime(filename)
extension = filename.split(".").last
valid_image_mimes = { png: "image/png", jpg: "image/jpeg", jpeg: "image/jpeg", gif: "image/gif", ico: "image/x-icon" }
valid_image_mimes[extension.to_sym] || "image/png"
end
end

View File

@ -15,6 +15,20 @@ RSpec.describe MetadataController do
expect(manifest["name"]).to eq(title)
expect(manifest["icons"].first["src"]).to eq("http://big.square/png")
end
it 'can guess mime types' do
SiteSetting.large_icon_url = "http://big.square/ico.ico"
get :manifest
manifest = JSON.parse(response.body)
expect(manifest["icons"].first["type"]).to eq("image/x-icon")
end
it 'defaults to png' do
SiteSetting.large_icon_url = "http://big.square/noidea.bogus"
get :manifest
manifest = JSON.parse(response.body)
expect(manifest["icons"].first["type"]).to eq("image/png")
end
end
describe 'opensearch.xml' do