diff --git a/src/library/entry.cr b/src/library/entry.cr index 301c3ba..28b7122 100644 --- a/src/library/entry.cr +++ b/src/library/entry.cr @@ -40,7 +40,8 @@ class Entry file = ArchiveFile.new @zip_path @pages = file.entries.count do |e| - filename_is_image e.filename + SUPPORTED_IMG_TYPES.includes? \ + MIME.from_filename? e.filename end file.close end @@ -102,7 +103,8 @@ class Entry ArchiveFile.open @zip_path do |file| entries = file.entries .select { |e| - filename_is_image e.filename + SUPPORTED_IMG_TYPES.includes? \ + MIME.from_filename? e.filename } .sort! { |a, b| compare_numerically a.filename, b.filename diff --git a/src/library/types.cr b/src/library/types.cr index a91ca86..a4de007 100644 --- a/src/library/types.cr +++ b/src/library/types.cr @@ -1,3 +1,5 @@ +SUPPORTED_IMG_TYPES = ["image/jpeg", "image/png", "image/webp"] + enum SortMethod Auto Title diff --git a/src/routes/api.cr b/src/routes/api.cr index 80cb278..b1fb3b3 100644 --- a/src/routes/api.cr +++ b/src/routes/api.cr @@ -456,8 +456,9 @@ struct APIRouter entry_id = env.params.query["eid"]? title = Library.default.get_title(title_id).not_nil! - unless filename_is_image filename - raise "The uploaded file must be an image" + unless SUPPORTED_IMG_TYPES.includes? \ + MIME.from_filename? filename + raise "The uploaded image must be either JPEG or PNG" end ext = File.extname filename diff --git a/src/util/util.cr b/src/util/util.cr index 2db7457..c4e168a 100644 --- a/src/util/util.cr +++ b/src/util/util.cr @@ -120,7 +120,3 @@ class String match / s.size end end - -def filename_is_image(fn : String) : Bool - MIME.from_filename?(fn).try(&.starts_with?("image/")) || false -end diff --git a/src/views/title.html.ecr b/src/views/title.html.ecr index dc0dc3d..78edf98 100644 --- a/src/views/title.html.ecr +++ b/src/views/title.html.ecr @@ -101,7 +101,7 @@ Upload a cover image by dropping it here or