44 lines
1.3 KiB
Ruby
44 lines
1.3 KiB
Ruby
class UploadService
|
|
module ControllerHelper
|
|
def self.prepare(url: nil, file: nil, ref: nil)
|
|
upload = Upload.new
|
|
|
|
if Utils.is_downloadable?(url) && file.nil?
|
|
download = Downloads::File.new(url)
|
|
normalized_url = download.rewrite_url()
|
|
post = if normalized_url.nil?
|
|
Post.where("SourcePattern(lower(posts.source)) = ?", url).first
|
|
else
|
|
Post.where("SourcePattern(lower(posts.source)) IN (?)", [url, normalized_url]).first
|
|
end
|
|
|
|
if post.nil?
|
|
# this gets called from UploadsController#new so we need
|
|
# to preprocess async
|
|
Preprocessor.new(source: url, referer_url: ref).delay(priority: -1, queue: "default").delayed_start(CurrentUser.id)
|
|
end
|
|
|
|
begin
|
|
source = Sources::Site.new(url, :referer_url => ref)
|
|
remote_size = download.size
|
|
rescue Exception
|
|
end
|
|
|
|
return [upload, post, source, normalized_url, remote_size]
|
|
elsif file
|
|
# this gets called via XHR so we can process sync
|
|
Preprocessor.new(file: file).delayed_start(CurrentUser.id)
|
|
end
|
|
|
|
return [upload]
|
|
end
|
|
|
|
def self.batch(url, ref = nil)
|
|
if url
|
|
source = Sources::Site.new(url, :referer_url => ref)
|
|
source.get
|
|
return source
|
|
end
|
|
end
|
|
end
|
|
end |