From 3aa4c2a25f8f412720584afc79d6bf84a115daca Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 9 Dec 2025 12:27:22 +1100 Subject: [PATCH] Import more fields from Litefarm --- .../app/services/enterprise_importer.rb | 40 +++++++++++++++++ .../spec/services/dfc_importer_spec.rb | 6 +++ .../fetches_a_list_of_enterprises.yml | 43 +++++++++++++++++++ spec/support/vcr_setup.rb | 9 ++++ 4 files changed, 98 insertions(+) diff --git a/engines/dfc_provider/app/services/enterprise_importer.rb b/engines/dfc_provider/app/services/enterprise_importer.rb index 46fa6f0cf9..2951b85a70 100644 --- a/engines/dfc_provider/app/services/enterprise_importer.rb +++ b/engines/dfc_provider/app/services/enterprise_importer.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +require "private_address_check" +require "private_address_check/tcpsocket_ext" + class EnterpriseImporter def initialize(owner, dfc_enterprise) @owner = owner @@ -25,6 +28,7 @@ class EnterpriseImporter @owner.owned_enterprises.new( address: Spree::Address.new, semantic_link: SemanticLink.new(semantic_id: @dfc_enterprise.semanticId), + visible: "public", ) end @@ -40,5 +44,41 @@ class EnterpriseImporter state: state, country: state.country, ) + enterprise.email_address = @dfc_enterprise.emails.first + enterprise.description = @dfc_enterprise.description + enterprise.phone = @dfc_enterprise.phoneNumbers.first&.phoneNumber + enterprise.website = @dfc_enterprise.websites.first + apply_social_media(enterprise) + apply_logo(enterprise) + end + + def apply_social_media(enterprise) + attributes = {} + @dfc_enterprise.socialMedias.each do |media| + attributes[media.name.downcase] = media.url + end + attributes["twitter"] = attributes.delete("x") if attributes.key?("x") + enterprise_attributes = attributes.slice(SocialMediaBuilder::NAMES) + enterprise.assign_attributes(enterprise_attributes) + end + + def apply_logo(enterprise) + link = @dfc_enterprise.logo + logo = enterprise.logo + + return if link.blank? + return if logo.blob && (logo.blob.custom_metadata&.fetch("origin", nil) == link) + + url = URI.parse(link) + filename = File.basename(url.path) + metadata = { custom: { origin: link } } + + PrivateAddressCheck.only_public_connections do + logo.attach(io: url.open, filename:, metadata:) + end + rescue StandardError + # Any URL parsing or network error shouldn't impact the import + # at all. Maybe we'll add UX for error handling later. + nil end end diff --git a/engines/dfc_provider/spec/services/dfc_importer_spec.rb b/engines/dfc_provider/spec/services/dfc_importer_spec.rb index 370d6d8092..fac6996a42 100644 --- a/engines/dfc_provider/spec/services/dfc_importer_spec.rb +++ b/engines/dfc_provider/spec/services/dfc_importer_spec.rb @@ -28,5 +28,11 @@ RSpec.describe DfcImporter do expect { subject.import_enterprise_profiles("lf-dev", endpoint) }.not_to have_enqueued_mail + + expect(enterprise.name).to eq "DFC Test Farm Beta (All Supplied Fields)" + expect(enterprise.email_address).to eq "dfcshop@example.com" + expect(enterprise.logo.blob.content_type).to eq "image/webp" + expect(enterprise.logo.blob.byte_size).to eq 8974 + expect(enterprise.visible).to eq "public" end end diff --git a/spec/fixtures/vcr_cassettes/DfcImporter/fetches_a_list_of_enterprises.yml b/spec/fixtures/vcr_cassettes/DfcImporter/fetches_a_list_of_enterprises.yml index af48a2d86c..707a47e019 100644 --- a/spec/fixtures/vcr_cassettes/DfcImporter/fetches_a_list_of_enterprises.yml +++ b/spec/fixtures/vcr_cassettes/DfcImporter/fetches_a_list_of_enterprises.yml @@ -518,4 +518,47 @@ http_interactions: } ] recorded_at: Fri, 05 Dec 2025 05:26:02 GMT +- request: + method: get + uri: https://litefarmbeta.nyc3.digitaloceanspaces.com/farm_logo/bc35fc0f-19bc-4892-b487-869294abf37b.webp + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Length: + - '8974' + Accept-Ranges: + - bytes + Last-Modified: + - Thu, 20 Nov 2025 18:11:01 GMT + X-Rgw-Object-Type: + - Normal + Etag: + - '"e86ffef2e04c5276eeb069cdb948741a"' + X-Amz-Request-Id: + - tx000009d4311d74786dba5-006937a2d8-1316e65e7-nyc3c + Content-Type: + - application/octet-stream + Date: + - Tue, 09 Dec 2025 04:17:28 GMT + Vary: + - Origin, Access-Control-Request-Headers, Access-Control-Request-Method + Strict-Transport-Security: + - max-age=15552000; includeSubDomains; preload + body: + encoding: ASCII-8BIT + string: !binary |- + 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 + recorded_at: Tue, 09 Dec 2025 04:17:27 GMT recorded_with: VCR 6.2.0 diff --git a/spec/support/vcr_setup.rb b/spec/support/vcr_setup.rb index df67e7d69d..0b90c75516 100644 --- a/spec/support/vcr_setup.rb +++ b/spec/support/vcr_setup.rb @@ -7,6 +7,15 @@ VCR.configure do |config| config.hook_into :webmock config.configure_rspec_metadata! + # Change recording mode during development: + # + # VCR_RECORD=new_episodes ./bin/rspec spec/example_spec.rb + # VCR_RECORD=all ./bin/rspec spec/example_spec.rb + # + if ENV.fetch("VCR_RECORD", nil) + config.default_cassette_options = { record: ENV.fetch("VCR_RECORD").to_sym } + end + # Chrome calls a lot of services and they trip us up. config.ignore_hosts( "localhost", "127.0.0.1", "0.0.0.0",