class Envirobly::Api

def request(url, type:, headers: {})

def request(url, type:, headers: {})
  uri = URI(url)
  http = Net::HTTP.new uri.host, uri.port
  http.use_ssl = true
  http.open_timeout = 10
  http.read_timeout = 10
  headers = default_headers.merge headers
  request = type.new(uri, headers)
  request.content_type = CONTENT_TYPE
  yield request if block_given?
  http.request(request).tap do |response|
    def response.object
      @json_parsed_body ||= JSON.parse(body)
    rescue
      @json_parsed_body = { error_message: body }
    end
    def response.success?
      (200..299).include?(code.to_i)
    end
    if @exit_on_error && !response.success? && response.object["error_message"].present?
      puts response.object["error_message"] # TODO: Replace with shell.say_error
      exit 1
    end
  end
end