Class: Puppet::Network::HTTP::Connection
- Includes:
- Authentication
- Defined in:
- lib/puppet/network/http/connection.rb
Overview
This class provides simple methods for issuing various types of HTTP requests. It’s interface is intended to mirror Ruby’s Net::HTTP object, but it provides a few important bits of additional functionality. Notably:
-
Any HTTPS requests made using this class will use Puppet’s SSL certificate configuration for their authentication, and
-
Provides some useful error handling for any SSL errors that occur during a request.
Constant Summary collapse
- OPTION_DEFAULTS =
{ :use_ssl => true, :verify => nil, :redirect_limit => 10, }
- @@openssl_initialized =
false
Instance Method Summary collapse
-
#address ⇒ Object
end of Net::HTTP#request_* proxies.
- #delete(path, headers = {'Depth' => 'Infinity'}, options = {}) ⇒ Object
- #get(path, headers = {}, options = {}) ⇒ Object
- #head(path, headers = {}, options = {}) ⇒ Object
-
#initialize(host, port, options = {}) ⇒ Connection
constructor
private
Creates a new HTTP client connection to
host:port. - #port ⇒ Object
- #post(path, data, headers = nil, options = {}) ⇒ Object
- #put(path, data, headers = nil, options = {}) ⇒ Object
- #request(method, *args) ⇒ Object
-
#request_get(*args, &block) ⇒ Object
TODO: These are proxies for the Net::HTTP#request_* methods, which are almost the same as the “get”, “post”, etc.
- #request_head(*args, &block) ⇒ Object
- #request_post(*args, &block) ⇒ Object
- #use_ssl? ⇒ Boolean
Methods included from Authentication
Constructor Details
#initialize(host, port, options = {}) ⇒ Connection
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The correct way to obtain a connection is to use one of the factory methods on Puppet::Network::HttpPool
Creates a new HTTP client connection to host:port.
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/puppet/network/http/connection.rb', line 52 def initialize(host, port, = {}) @host = host @port = port = .keys - OPTION_DEFAULTS.keys raise Puppet::Error, "Unrecognized option(s): #{.map(&:inspect).sort.join(', ')}" unless .empty? = OPTION_DEFAULTS.merge() @use_ssl = [:use_ssl] @verify = [:verify] @redirect_limit = [:redirect_limit] end |
Instance Method Details
#address ⇒ Object
end of Net::HTTP#request_* proxies
140 141 142 |
# File 'lib/puppet/network/http/connection.rb', line 140 def address connection.address end |
#delete(path, headers = {'Depth' => 'Infinity'}, options = {}) ⇒ Object
101 102 103 |
# File 'lib/puppet/network/http/connection.rb', line 101 def delete(path, headers = {'Depth' => 'Infinity'}, = {}) request_with_redirects(Net::HTTP::Delete.new(path, headers), ) end |
#get(path, headers = {}, options = {}) ⇒ Object
74 75 76 |
# File 'lib/puppet/network/http/connection.rb', line 74 def get(path, headers = {}, = {}) request_with_redirects(Net::HTTP::Get.new(path, headers), ) end |
#head(path, headers = {}, options = {}) ⇒ Object
93 94 95 |
# File 'lib/puppet/network/http/connection.rb', line 93 def head(path, headers = {}, = {}) request_with_redirects(Net::HTTP::Head.new(path, headers), ) end |
#port ⇒ Object
144 145 146 |
# File 'lib/puppet/network/http/connection.rb', line 144 def port connection.port end |
#post(path, data, headers = nil, options = {}) ⇒ Object
83 84 85 86 87 |
# File 'lib/puppet/network/http/connection.rb', line 83 def post(path, data, headers = nil, = {}) request = Net::HTTP::Post.new(path, headers) request.body = data request_with_redirects(request, ) end |
#put(path, data, headers = nil, options = {}) ⇒ Object
110 111 112 113 114 |
# File 'lib/puppet/network/http/connection.rb', line 110 def put(path, data, headers = nil, = {}) request = Net::HTTP::Put.new(path, headers) request.body = data request_with_redirects(request, ) end |
#request(method, *args) ⇒ Object
116 117 118 |
# File 'lib/puppet/network/http/connection.rb', line 116 def request(method, *args) self.send(method, *args) end |
#request_get(*args, &block) ⇒ Object
TODO: These are proxies for the Net::HTTP#request_* methods, which are almost the same as the “get”, “post”, etc. methods that we’ve ported above, but they are able to accept a code block and will yield to it. For now we’re not funneling these proxy implementations through our #request method above, so they will not inherit the same error handling. In the future we may want to refactor these so that they are funneled through that method and do inherit the error handling.
127 128 129 |
# File 'lib/puppet/network/http/connection.rb', line 127 def request_get(*args, &block) connection.request_get(*args, &block) end |
#request_head(*args, &block) ⇒ Object
131 132 133 |
# File 'lib/puppet/network/http/connection.rb', line 131 def request_head(*args, &block) connection.request_head(*args, &block) end |
#request_post(*args, &block) ⇒ Object
135 136 137 |
# File 'lib/puppet/network/http/connection.rb', line 135 def request_post(*args, &block) connection.request_post(*args, &block) end |
#use_ssl? ⇒ Boolean
148 149 150 |
# File 'lib/puppet/network/http/connection.rb', line 148 def use_ssl? connection.use_ssl? end |