From f67e4e6cb9994fd86cafe8b9d8c0541be3b894cb Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Mon, 6 Sep 2021 13:32:10 +0000 Subject: [PATCH] Support all image types (resolves #192) --- src/library/entry.cr | 6 ++---- src/library/types.cr | 2 -- src/routes/api.cr | 5 ++--- src/util/util.cr | 4 ++++ src/views/title.html.ecr | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/library/entry.cr b/src/library/entry.cr index 28b7122..301c3ba 100644 --- a/src/library/entry.cr +++ b/src/library/entry.cr @@ -40,8 +40,7 @@ class Entry file = ArchiveFile.new @zip_path @pages = file.entries.count do |e| - SUPPORTED_IMG_TYPES.includes? \ - MIME.from_filename? e.filename + filename_is_image e.filename end file.close end @@ -103,8 +102,7 @@ class Entry ArchiveFile.open @zip_path do |file| entries = file.entries .select { |e| - SUPPORTED_IMG_TYPES.includes? \ - MIME.from_filename? e.filename + filename_is_image e.filename } .sort! { |a, b| compare_numerically a.filename, b.filename diff --git a/src/library/types.cr b/src/library/types.cr index a4de007..a91ca86 100644 --- a/src/library/types.cr +++ b/src/library/types.cr @@ -1,5 +1,3 @@ -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 b1fb3b3..80cb278 100644 --- a/src/routes/api.cr +++ b/src/routes/api.cr @@ -456,9 +456,8 @@ struct APIRouter entry_id = env.params.query["eid"]? title = Library.default.get_title(title_id).not_nil! - unless SUPPORTED_IMG_TYPES.includes? \ - MIME.from_filename? filename - raise "The uploaded image must be either JPEG or PNG" + unless filename_is_image filename + raise "The uploaded file must be an image" end ext = File.extname filename diff --git a/src/util/util.cr b/src/util/util.cr index c4e168a..2db7457 100644 --- a/src/util/util.cr +++ b/src/util/util.cr @@ -120,3 +120,7 @@ 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 78edf98..dc0dc3d 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
- "> + selecting one