5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'app/jobs/create_object_from_url_job.rb', line 5
def perform(url:, collection_id: nil, owner: nil)
return if Link.find_by(url: url)
deserializer = Link.deserializer_for(url: url)
common_options = {
name: "Importing from #{url.split("://").last} ...",
links_attributes: [{url: url}],
owner: owner,
permission_preset: :private
}.compact
object = case deserializer&.capabilities&.dig(:class)&.name
when "Model"
Model.create(common_options.merge({
library: Library.default,
path: SecureRandom.uuid,
collections: collection_id ? [Collection.find(collection_id)] : nil
}.compact))
when "Creator"
Creator.create(common_options)
when "Collection"
Collection.create(common_options)
end
object.links.first.update_metadata_from_link_later(organize: true, apply_permissions_after_sync: SiteSettings.default_viewer_role) if object
end
|