In Files

Parent

Files

Class/Module Index [+]

Quicksearch

Chef::REST

Chef::REST

Chef’s custom REST client with built-in JSON support and RSA signed header authentication.

Constants

RESTRequest

Backwards compatibility for things that use Chef::REST::RESTRequest or its constants

Attributes

authenticator[R]
cookies[RW]
redirect_limit[RW]
sign_on_redirect[RW]
url[RW]

Public Class Methods

new(url, client_name=Chef::Config[:node_name], signing_key_filename=Chef::Config[:client_key], options={}) click to toggle source

Create a REST client object. The supplied url is used as the base for all subsequent requests. For example, when initialized with a base url localhost:4000, a call to get_rest with ‘nodes’ will make an HTTP GET request to localhost:4000/nodes

# File lib/chef/rest.rb, line 59
def initialize(url, client_name=Chef::Config[:node_name], signing_key_filename=Chef::Config[:client_key], options={})
  options = options.dup
  options[:client_name] = client_name
  options[:signing_key_filename] = signing_key_filename
  super(url, options)

  @decompressor = Decompressor.new(options)
  @authenticator = Authenticator.new(options)
  @request_id = RemoteRequestID.new(options)

  @middlewares << JSONInput.new(options)
  @middlewares << JSONToModelOutput.new(options)
  @middlewares << CookieManager.new(options)
  @middlewares << @decompressor
  @middlewares << @authenticator
  @middlewares << @request_id

  # ValidateContentLength should come after Decompressor
  # because the order of middlewares is reversed when handling
  # responses.
  @middlewares << ValidateContentLength.new(options)

end

Public Instance Methods

auth_credentials() click to toggle source
# File lib/chef/rest.rb, line 87
def auth_credentials
  authenticator.auth_credentials
end
authentication_headers(method, url, json_body=nil) click to toggle source
# File lib/chef/rest.rb, line 204
def authentication_headers(method, url, json_body=nil)
  authenticator.authentication_headers(method, url, json_body)
end
client_name() click to toggle source
# File lib/chef/rest.rb, line 91
def client_name
  authenticator.client_name
end
decompress_body(body) click to toggle source

DEPRECATED

# File lib/chef/rest.rb, line 200
def decompress_body(body)
  @decompressor.decompress_body(body)
end
fetch(path, headers={}) click to toggle source

Streams a download to a tempfile, then yields the tempfile to a block. After the download, the tempfile will be closed and unlinked. If you rename the tempfile, it will not be deleted. Beware that if the server streams infinite content, this method will stream it until you run out of disk space.

# File lib/chef/rest.rb, line 132
def fetch(path, headers={})
  streaming_request(create_url(path), headers) {|tmp_file| yield tmp_file }
end
follow_redirect() click to toggle source
# File lib/chef/rest.rb, line 180
def follow_redirect
  unless @sign_on_redirect
    @authenticator.sign_request = false
  end
  super
ensure
  @authenticator.sign_request = true
end
get(path, raw=false, headers={}) click to toggle source

Send an HTTP GET request to the path

Using this method to fetch a file is considered deprecated.

Parameters

path

The path to GET

raw

Whether you want the raw body returned, or JSON inflated. Defaults

to JSON inflated.
# File lib/chef/rest.rb, line 111
def get(path, raw=false, headers={})
  if raw
    streaming_request(path, headers)
  else
    request(:GET, path, headers)
  end
end
Also aliased as: get_rest
get_rest(path, raw=false, headers={}) click to toggle source
Alias for: get
http_client(base_url=nil) click to toggle source
# File lib/chef/rest.rb, line 191
def http_client(base_url=nil)
  base_url ||= url
  BasicClient.new(base_url, :ssl_policy => Chef::HTTP::APISSLPolicy)
end
raw_http_request(method, path, headers, data) click to toggle source

Do a HTTP request where no middleware is loaded (e.g. JSON input/output conversion) but the standard Chef Authentication headers are added to the request.

# File lib/chef/rest.rb, line 141
def raw_http_request(method, path, headers, data)
  url = create_url(path)
  method, url, headers, data = @authenticator.handle_request(method, url, headers, data)
  method, url, headers, data = @request_id.handle_request(method, url, headers, data)
  response, rest_request, return_value = send_http_request(method, url, headers, data)
  response.error! unless success_response?(response)
  return_value
rescue Exception => exception
  log_failed_request(response, return_value) unless response.nil?

  if exception.respond_to?(:chef_rest_request=)
    exception.chef_rest_request = rest_request
  end
  raise
end
retriable_http_request(method, url, req_body, headers) click to toggle source

Deprecated: Responsibilities of this method have been split up. The http_client is now responsible for making individual requests, while retrying_http_errors handles error/retry logic.

# File lib/chef/rest.rb, line 161
def retriable_http_request(method, url, req_body, headers)
  rest_request = Chef::HTTP::HTTPRequest.new(method, url, req_body, headers)

  Chef::Log.debug("Sending HTTP Request via #{method} to #{url.host}:#{url.port}#{rest_request.path}")

  retrying_http_errors(url) do
    yield rest_request
  end
end
Also aliased as: retriable_rest_request
retriable_rest_request(method, url, req_body, headers) click to toggle source
sign_requests?() click to toggle source
# File lib/chef/rest.rb, line 99
def sign_requests?
  authenticator.sign_requests?
end
signing_key() click to toggle source
# File lib/chef/rest.rb, line 95
def signing_key
  authenticator.raw_key
end
signing_key_filename() click to toggle source
# File lib/chef/rest.rb, line 83
def signing_key_filename
  authenticator.signing_key_filename
end
streaming_request(url, headers, &block) click to toggle source

Customized streaming behavior; sets the accepted content type to “/” if not otherwise specified for compatibility purposes

# File lib/chef/rest.rb, line 173
def streaming_request(url, headers, &block)
  headers["Accept"] ||= "*/*"
  super
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.