require 'rest-client' require 'json' class CvemonCveImporter attr_accessor :url def initialize @url = 'https://raw.githubusercontent.com/ARPSyndicate/cvemon/main/data.json' end def get_cve_data r = RestClient::Request.execute( :method => :get, :url => url, :headers => {"Content-type": "application/json"} ) if r.code == 200 JSON.parse(r.body) else puts "HTTP Code #{r.code}" end end def import feed = get_cve_data cve_ids = feed.keys puts "Now importing CvemonCves." cves = cve_ids.map do |cve_id| { :cve_id => cve_id, :urls => feed[cve_id] } end CvemonCve.upsert_all(cves, unique_by: :cve_id) end end