Class: Chef::HTTP::JSONInput

Inherits:
Object
  • Object
show all
Defined in:
lib/chef/http/json_input.rb

Overview

Middleware that takes json input and turns it into raw text

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ JSONInput


30
31
32
# File 'lib/chef/http/json_input.rb', line 30

def initialize(opts = {})
  @opts = opts
end

Instance Attribute Details

#optsObject

Returns the value of attribute opts


28
29
30
# File 'lib/chef/http/json_input.rb', line 28

def opts
  @opts
end

Instance Method Details

#handle_request(method, url, headers = {}, data = false) ⇒ Object


34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/chef/http/json_input.rb', line 34

def handle_request(method, url, headers = {}, data = false)
  if data && should_encode_as_json?(headers)
    headers.delete_if { |key, _value| key.casecmp("content-type") == 0 }
    headers["Content-Type"] = "application/json"
    json_opts = {}
    json_opts[:validate_utf8] = opts[:validate_utf8] if opts.has_key?(:validate_utf8)
    data = Chef::JSONCompat.to_json(data, json_opts)
    # Force encoding to binary to fix SSL related EOFErrors
    # cf. http://tickets.opscode.com/browse/CHEF-2363
    # http://redmine.ruby-lang.org/issues/5233
    data.force_encoding(Encoding::BINARY) if data.respond_to?(:force_encoding)
  end
  [method, url, headers, data]
end

#handle_response(http_response, rest_request, return_value) ⇒ Object


49
50
51
# File 'lib/chef/http/json_input.rb', line 49

def handle_response(http_response, rest_request, return_value)
  [http_response, rest_request, return_value]
end

#handle_stream_complete(http_response, rest_request, return_value) ⇒ Object


57
58
59
# File 'lib/chef/http/json_input.rb', line 57

def handle_stream_complete(http_response, rest_request, return_value)
  [http_response, rest_request, return_value]
end

#stream_response_handler(response) ⇒ Object


53
54
55
# File 'lib/chef/http/json_input.rb', line 53

def stream_response_handler(response)
  nil
end