diff --git a/src/controllers/paste_controller.cr b/src/controllers/paste_controller.cr index b63eaa8..731aa78 100644 --- a/src/controllers/paste_controller.cr +++ b/src/controllers/paste_controller.cr @@ -136,14 +136,16 @@ module Paste69 if form.has_key?("file") filename, body = form["file"] + end - if form.has_key?("ext") - _, ext = form["ext"] - ext = String.new(ext).lstrip(".") - filename = filename ? File.basename(filename, File.extname(filename)) : "file" - filename = "#{filename}.#{ext}" - end + if form.has_key?("ext") + _, ext = form["ext"] + ext = String.new(ext).lstrip(".") + filename = filename ? File.basename(filename, File.extname(filename)) : "file" + filename = "#{filename}.#{ext}" + end + if body @utils.store_file( body, content_type, @@ -157,6 +159,8 @@ module Paste69 _, body = form["url"] @utils.store_url( String.new(body), + filename, + expires ? String.new(expires).to_i64 : nil, remote_addr, user_agent, !!secret, diff --git a/src/services/utils_service.cr b/src/services/utils_service.cr index b8755be..5aaf6ca 100644 --- a/src/services/utils_service.cr +++ b/src/services/utils_service.cr @@ -81,7 +81,7 @@ module Paste69 res end - def store_url(url : String, addr : String? = nil, ua : String? = nil, secret : Bool = false) + def store_url(url : String, filename : String? = nil, requested_expiration : Int64? = nil, addr : String? = nil, ua : String? = nil, secret : Bool = false) if is_fhost_url?(url) raise ATH::Exceptions::BadRequest.new("Invalid URL") end @@ -102,7 +102,8 @@ module Paste69 if res.headers.has_key?("Content-Length") l = res.headers["Content-Length"].to_i64 if l <= @config.get("max_content_length").as_i64 - return store_file(res.body.to_slice, res.headers["Content-Type"], nil, nil, addr, ua, secret) + filename ||= File.basename(url) + return store_file(res.body.to_slice, res.headers["Content-Type"], filename, nil, addr, ua, secret) else raise Exceptions::ContentTooLarge.new("Content-Length was too large") end