# frozen_string_literal: true

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