diff --git a/app/models/communication/website/imported/medium.rb b/app/models/communication/website/imported/medium.rb index 4a1347d8c5654a00d7effc573ff85f9bd3f7478b..8dbd6853a3e245e4d8a89b6edef893ee894bc4e8 100644 --- a/app/models/communication/website/imported/medium.rb +++ b/app/models/communication/website/imported/medium.rb @@ -8,6 +8,7 @@ # filename :string # identifier :string # mime_type :string +# variant_urls :text default([]), is an Array # created_at :datetime # updated_at :datetime # university_id :uuid not null @@ -36,7 +37,7 @@ class Communication::Website::Imported::Medium < ApplicationRecord has_one_attached_deletable :file - after_commit :download_file_from_file_url, on: [:create, :update], if: :saved_change_to_file_url + scope :for_variant_url, -> (variant_url) { where('? = ANY(variant_urls)', variant_url) } def data=(value) super value @@ -46,11 +47,12 @@ class Communication::Website::Imported::Medium < ApplicationRecord self.mime_type = value['mime_type'] self.created_at = value['date_gmt'] self.updated_at = value['modified_gmt'] + self.variant_urls = (value['media_details']['sizes'] || {}).values.map { |variant| + Addressable::URI.parse(variant['source_url']).display_uri.to_s + } end - protected - - def download_file_from_file_url + def load_remote_file! uri = URI(file_url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true @@ -60,5 +62,4 @@ class Communication::Website::Imported::Medium < ApplicationRecord response = http.request(request) file.attach(io: StringIO.new(response.body), filename: filename, content_type: mime_type) end - handle_asynchronously :download_file_from_file_url, queue: 'default' end diff --git a/db/migrate/20211026094556_add_variant_urls_to_communication_website_imported_media.rb b/db/migrate/20211026094556_add_variant_urls_to_communication_website_imported_media.rb new file mode 100644 index 0000000000000000000000000000000000000000..5e13899d60357156d11869ba09997f27348ae9e8 --- /dev/null +++ b/db/migrate/20211026094556_add_variant_urls_to_communication_website_imported_media.rb @@ -0,0 +1,5 @@ +class AddVariantUrlsToCommunicationWebsiteImportedMedia < ActiveRecord::Migration[6.1] + def change + add_column :communication_website_imported_media, :variant_urls, :text, array: true, default: [] + end +end diff --git a/db/schema.rb b/db/schema.rb index 6262c6ca38739b634b0192b330fde352168ba632..303bcfee2efd01c90219c4c8975c3c60550b4eb9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_10_26_035253) do +ActiveRecord::Schema.define(version: 2021_10_26_094556) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -88,6 +88,7 @@ ActiveRecord::Schema.define(version: 2021_10_26_035253) do t.uuid "website_id", null: false t.string "filename" t.string "mime_type" + t.text "variant_urls", default: [], array: true t.index ["university_id"], name: "index_communication_website_imported_media_on_university_id" t.index ["website_id"], name: "index_communication_website_imported_media_on_website_id" end