Sha256: a8690a765c50e730e5d8e77657bb1788a5eba6a688e93db2ee574991fc6e1239

Contents?: true

Size: 1.03 KB

Versions: 12

Compression:

Stored size: 1.03 KB

Contents

module ForemanOpenscap
  module Oval
    class SyncOvalContents
      def sync(oval_content)
        begin
          content_blob = fetch_content_blob(oval_content.url)
        rescue StandardError => e
          oval_content.errors.add(:base, "#{fail_msg oval_content}, cause: #{e.message}")
          return oval_content
        end

        unless content_blob
          oval_content.errors.add(:base, fail_msg(oval_content))
          return oval_content
        end
        oval_content.scap_file = content_blob
        oval_content
      end

      def sync_all
        to_sync = ForemanOpenscap::OvalContent.where.not(:url => nil)
        to_sync.map { |content| content.tap { |item| sync(item).save } }
      end

      private

      def fail_msg(content)
        "Failed to fetch content file from #{content.url}"
      end

      def fetch_content_blob(url)
        response = fetch url
        return unless response.code == 200
        response.body
      end

      def fetch(url)
        RestClient.get(url)
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
foreman_openscap-6.0.0 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-5.2.3 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-5.2.2 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-5.1.1 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-5.2.1 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-5.2.0 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-5.1.0 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-5.0.0 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-4.3.3 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-4.3.2 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-4.3.1 app/services/foreman_openscap/oval/sync_oval_contents.rb
foreman_openscap-4.3.0 app/services/foreman_openscap/oval/sync_oval_contents.rb