Class: Inspec::Resources::Http

Inherits:
Object
  • Object
show all
Defined in:
lib/inspec/resources/http.rb

Defined Under Namespace

Classes: Headers, Worker

Instance Method Summary collapse

Constructor Details

#initialize(url, opts = {}) ⇒ Http

Returns a new instance of Http.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/inspec/resources/http.rb', line 29

def initialize(url, opts = {})
  @url = url
  @opts = opts

  # Prior to InSpec 2.0 the HTTP test had to be instructed to run on the
  # remote target machine. This warning will be removed after a few months
  # to give users an opportunity to remove the unused option from their
  # profiles.
  if opts.key?(:enable_remote_worker) && !inspec.local_transport?
    warn "Ignoring `enable_remote_worker` option, the `http` resource ",
         "remote worker is enabled by default for remote targets and ",
         "cannot be disabled"
  end

  # Run locally if InSpec is ran locally and remotely if ran remotely
  if inspec.local_transport?
    @worker = Worker::Local.new(http_method, url, opts)
  else
    @worker = Worker::Remote.new(inspec, http_method, url, opts)
  end
end

Instance Method Details

#bodyObject



59
60
61
# File 'lib/inspec/resources/http.rb', line 59

def body
  @worker.body&.force_encoding(Encoding::UTF_8)
end

#headersObject



55
56
57
# File 'lib/inspec/resources/http.rb', line 55

def headers
  @headers ||= Inspec::Resources::Http::Headers.create(@worker.response_headers)
end

#http_methodObject



63
64
65
# File 'lib/inspec/resources/http.rb', line 63

def http_method
  @opts.fetch(:method, "GET")
end

#statusObject



51
52
53
# File 'lib/inspec/resources/http.rb', line 51

def status
  @worker.status
end

#to_sObject



67
68
69
70
71
72
73
# File 'lib/inspec/resources/http.rb', line 67

def to_s
  if @opts && @url
    "HTTP #{http_method} on #{@url}"
  else
    "HTTP Resource"
  end
end