app/models/concerns/foreman_openscap/data_stream_content.rb



module ForemanOpenscap
  module DataStreamContent
    extend ActiveSupport::Concern

    included do
      validates_with ForemanOpenscap::DataStreamValidator

      after_save :create_profiles, :if => lambda { |ds_content| ds_content.scap_file_previously_changed? }
      before_destroy EnsureNotUsedBy.new(:policies)
    end

    def proxy_url
      @proxy_url ||= SmartProxy.with_features('Openscap').find(&:ping)&.url
    end

    def create_profiles
      fetch_profiles.each do |key, title|
        create_or_update_profile key, title
      end
    end

    def create_or_update_profile(profile_id, title)
      profile = ScapContentProfile.find_by(:profile_id => profile_id, "#{self.class.to_s.demodulize.underscore}_id".to_sym => id)
      return ScapContentProfile.create(:profile_id => profile_id, :title => title, "#{self.class.to_s.demodulize.underscore}_id".to_sym => id) unless profile
      profile.update(:title => title) unless profile.title == title
      profile
    end
  end
end