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 Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ JSONInput

Returns a new instance of JSONInput.



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

def initialize(opts={})
end

Instance Method Details

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



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/chef/http/json_input.rb', line 31

def handle_request(method, url, headers={}, data=false)
  if data && should_encode_as_json?(headers)
    headers.delete_if { |key, _value| key.downcase == 'content-type' }
    headers["Content-Type"] = 'application/json'
    data = Chef::JSONCompat.to_json(data)
    # 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



44
45
46
# File 'lib/chef/http/json_input.rb', line 44

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



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

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

#stream_response_handler(response) ⇒ Object



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

def stream_response_handler(response)
  nil
end