Method: Compliance::API.upload

Defined in:
lib/bundles/inspec-compliance/api.rb

.upload(config, owner, profile_name, archive_path) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/bundles/inspec-compliance/api.rb', line 125

def self.upload(config, owner, profile_name, archive_path)
  # Chef Compliance
  if is_compliance_server?(config)
    url = "#{config['server']}/owners/#{owner}/compliance/#{profile_name}/tar"
  # Chef Automate pre 0.8.0
  elsif is_automate_server_pre_080?(config)
    url = "#{config['server']}/#{owner}"
  elsif is_automate2_server?(config)
    url = "#{config['server']}/compliance/profiles?owner=#{owner}"
  # Chef Automate
  else
    url = "#{config['server']}/profiles/#{owner}"
  end

  headers = get_headers(config)
  if is_automate2_server?(config)
    res = Compliance::HTTP.post_multipart_file(url, headers, archive_path, config['insecure'])
  else
    res = Compliance::HTTP.post_file(url, headers, archive_path, config['insecure'])
  end

  [res.is_a?(Net::HTTPSuccess), res.body]
end