lib/chef-api/connection.rb in chef-api-0.10.0 vs lib/chef-api/connection.rb in chef-api-0.10.2
- old
+ new
@@ -1,9 +1,9 @@
-require 'net/http'
-require 'net/https'
-require 'openssl'
-require 'uri'
+require "net/http"
+require "net/https"
+require "openssl"
+require "uri"
module ChefAPI
#
# Connection object for the ChefAPI API.
#
@@ -35,23 +35,23 @@
end
include Logify
include ChefAPI::Configurable
- proxy :clients, 'Resource::Client'
- proxy :cookbooks, 'Resource::Cookbook'
- proxy :data_bags, 'Resource::DataBag'
- proxy :data_bag_item, 'Resource::DataBagItem'
- proxy :environments, 'Resource::Environment'
- proxy :groups, 'Resource::Group'
- proxy :nodes, 'Resource::Node'
- proxy :partial_search, 'Resource::PartialSearch'
- proxy :principals, 'Resource::Principal'
- proxy :roles, 'Resource::Role'
- proxy :search, 'Resource::Search'
- proxy :users, 'Resource::User'
- proxy :organizations, 'Resource::Organization'
+ proxy :clients, "Resource::Client"
+ proxy :cookbooks, "Resource::Cookbook"
+ proxy :data_bags, "Resource::DataBag"
+ proxy :data_bag_item, "Resource::DataBagItem"
+ proxy :environments, "Resource::Environment"
+ proxy :groups, "Resource::Group"
+ proxy :nodes, "Resource::Node"
+ proxy :partial_search, "Resource::PartialSearch"
+ proxy :principals, "Resource::Principal"
+ proxy :roles, "Resource::Role"
+ proxy :search, "Resource::Search"
+ proxy :users, "Resource::User"
+ proxy :organizations, "Resource::Organization"
#
# Create a new ChefAPI Connection with the given options. Any options
# given take precedence over the default options.
#
@@ -73,13 +73,13 @@
#
def initialize(options = {})
# Use any options given, but fall back to the defaults set on the module
ChefAPI::Configurable.keys.each do |key|
value = if options[key].nil?
- ChefAPI.instance_variable_get(:"@#{key}")
- else
- options[key]
+ ChefAPI.instance_variable_get(:"@#{key}")
+ else
+ options[key]
end
instance_variable_set(:"@#{key}", value)
end
@@ -200,22 +200,22 @@
def request(verb, path, data = {}, params = {}, request_options = {})
log.info "#{verb.to_s.upcase} #{path}..."
log.debug "Chef flavor: #{flavor.inspect}"
# Build the URI and request object from the given information
- if [:delete, :get].include?(verb)
+ if %i{delete get}.include?(verb)
uri = build_uri(verb, path, data)
else
uri = build_uri(verb, path, params)
end
request = class_for_request(verb).new(uri.request_uri)
# Add request headers
add_request_headers(request)
# Setup PATCH/POST/PUT
- if [:patch, :post, :put].include?(verb)
+ if %i{patch post put}.include?(verb)
if data.respond_to?(:read)
log.info "Detected file/io presence"
request.body_stream = data
elsif data.is_a?(Hash)
# If any of the values in the hash are File-like, assume this is a
@@ -259,11 +259,11 @@
# setting a longer read_timeout for our client if we want to make an
# expensive request.
connection.read_timeout = read_timeout if read_timeout
# Apply SSL, if applicable
- if uri.scheme == 'https'
+ if uri.scheme == "https"
# Turn on SSL
connection.use_ssl = true
# Custom pem files, no problem!
if ssl_pem_file
@@ -293,11 +293,11 @@
log.debug "Raw response:"
log.debug response.body
case response
when Net::HTTPRedirection
- redirect = URI.parse(response['location']).to_s
+ redirect = URI.parse(response["location"]).to_s
log.debug "Performing HTTP redirect to #{redirect}"
request(verb, redirect, data)
when Net::HTTPSuccess
success(response)
else
@@ -326,18 +326,18 @@
# the list of params to build the URI with (for GET and DELETE requests)
#
# @return [URI]
#
def build_uri(verb, path, params = {})
- log.info "Building URI..."
+ log.info "Building URI..."
# Add any query string parameters
if querystring = to_query_string(params)
log.debug "Detected verb deserves a querystring"
log.debug "Building querystring using #{params.inspect}"
log.debug "Compiled querystring is #{querystring.inspect}"
- path = [path, querystring].compact.join('?')
+ path = [path, querystring].compact.join("?")
end
# Parse the URI
uri = URI.parse(path)
@@ -376,11 +376,11 @@
# the query string as a string, or +nil+ if there are no params
#
def to_query_string(hash)
hash.map do |key, value|
"#{URI.escape(key.to_s)}=#{URI.escape(value.to_s)}"
- end.join('&')[/.+/]
+ end.join("&")[/.+/]
end
private
#
@@ -395,11 +395,11 @@
# the parsed response, as an object
#
def success(response)
log.info "Parsing response as success..."
- case response['Content-Type']
+ case response["Content-Type"]
when /json/
log.debug "Detected response as JSON"
log.debug "Parsing response body as JSON"
JSON.parse(response.body)
else
@@ -416,11 +416,11 @@
# the response object from the request
#
def error(response)
log.info "Parsing response as error..."
- case response['Content-Type']
+ case response["Content-Type"]
when /json/
log.debug "Detected error response as JSON"
log.debug "Parsing error response as JSON"
message = JSON.parse(response.body)
else
@@ -457,16 +457,16 @@
#
def add_request_headers(request)
log.info "Adding request headers..."
headers = {
- 'Accept' => 'application/json',
- 'Content-Type' => 'application/json',
- 'Connection' => 'keep-alive',
- 'Keep-Alive' => '30',
- 'User-Agent' => user_agent,
- 'X-Chef-Version' => '11.4.0',
+ "Accept" => "application/json",
+ "Content-Type" => "application/json",
+ "Connection" => "keep-alive",
+ "Keep-Alive" => "30",
+ "User-Agent" => user_agent,
+ "X-Chef-Version" => "11.4.0",
}
headers.each do |key, value|
log.debug "#{key}: #{value}"
request[key] = value
@@ -489,10 +489,10 @@
authentication = Authentication.from_options(
user: client,
key: key,
verb: verb,
path: path,
- body: request.body || request.body_stream,
+ body: request.body || request.body_stream
)
authentication.headers.each do |key, value|
log.debug "#{key}: #{value}"
request[key] = value