Don't use tempfiles
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,4 +2,3 @@
|
|||||||
public
|
public
|
||||||
resources/_gen
|
resources/_gen
|
||||||
secret.key
|
secret.key
|
||||||
bin/dither/tmp
|
|
||||||
|
|||||||
@@ -6,34 +6,24 @@ MiniMagick.logger.level = Logger::DEBUG
|
|||||||
ROOT = ENV.fetch("ROOT")
|
ROOT = ENV.fetch("ROOT")
|
||||||
KEY = ENV.fetch("KEY")
|
KEY = ENV.fetch("KEY")
|
||||||
DITHER = ENV["DITHER"] != "0"
|
DITHER = ENV["DITHER"] != "0"
|
||||||
|
FORMAT = DITHER ? "png" : "webp"
|
||||||
EXTENSION, CONTENT_TYPE = if DITHER
|
|
||||||
[".png", "image/png"]
|
|
||||||
else
|
|
||||||
[".webp", "image/webp"]
|
|
||||||
end
|
|
||||||
|
|
||||||
FileUtils.mkdir_p "tmp"
|
|
||||||
|
|
||||||
get "/*" do |path|
|
get "/*" do |path|
|
||||||
filename = File.basename(path)
|
content_type "image/#{FORMAT}"
|
||||||
|
|
||||||
geometry = params["geo"] unless params["geo"] == ""
|
geometry = params["geo"] unless params["geo"] == ""
|
||||||
|
|
||||||
@decrypted = Tempfile.new(filename, "tmp")
|
decrypted = %x(
|
||||||
@dithered = Tempfile.new([filename, EXTENSION], "tmp")
|
|
||||||
|
|
||||||
%x(
|
|
||||||
openssl \
|
openssl \
|
||||||
aes-256-cbc \
|
aes-256-cbc \
|
||||||
-d \
|
-d \
|
||||||
-in #{ROOT}/#{path}.enc \
|
-in #{ROOT}/#{path}.enc \
|
||||||
-out #{@decrypted.path} \
|
|
||||||
-pass file:#{KEY} \
|
-pass file:#{KEY} \
|
||||||
-iter 1000000
|
-iter 1000000
|
||||||
)
|
)
|
||||||
|
|
||||||
convert = MiniMagick::Tool::Convert.new
|
convert = MiniMagick::Tool::Convert.new
|
||||||
convert << @decrypted.path
|
convert.stdin
|
||||||
convert.background("white")
|
convert.background("white")
|
||||||
convert.layers("flatten")
|
convert.layers("flatten")
|
||||||
|
|
||||||
@@ -52,9 +42,6 @@ get "/*" do |path|
|
|||||||
convert.monochrome
|
convert.monochrome
|
||||||
end
|
end
|
||||||
|
|
||||||
convert << @dithered.path
|
convert << "#{FORMAT.upcase}:-"
|
||||||
convert.call
|
convert.call(stdin: decrypted)
|
||||||
|
|
||||||
content_type CONTENT_TYPE
|
|
||||||
File.open(@dithered.path)
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user