30 lines
775 B
Ruby
30 lines
775 B
Ruby
# frozen_string_literal: true
|
|
|
|
class ArchiveImporter
|
|
class EntityImporter
|
|
include ArchiveValidator::EntitiesHelper
|
|
include Diaspora::Logging
|
|
|
|
def initialize(json, user)
|
|
@json = json
|
|
@user = user
|
|
end
|
|
|
|
def import
|
|
self.persisted_object = Diaspora::Federation::Receive.perform(entity, skip_relaying: true)
|
|
rescue DiasporaFederation::Entities::Signable::SignatureVerificationFailed,
|
|
DiasporaFederation::Discovery::InvalidDocument,
|
|
DiasporaFederation::Discovery::DiscoveryError,
|
|
ActiveRecord::RecordInvalid => e
|
|
logger.warn "#{self}: #{e}"
|
|
end
|
|
|
|
attr_reader :json
|
|
attr_reader :user
|
|
attr_accessor :persisted_object
|
|
|
|
def entity
|
|
entity_class.from_json(json)
|
|
end
|
|
end
|
|
end
|