class Puppet::HTTP::ExternalClient
Adapts an external http_client_class to the HTTP client API. The former is typically registered by puppetserver and only implements a subset of the Puppet::Network::HTTP::Connection methods. As a result, only the `get` and `post` methods are supported. Calling `delete`, etc will raise a NotImplementedError.
@api private
Public Class Methods
new(http_client_class)
click to toggle source
Create an external http client.
@param [Class] http_client_class The class to create to handle the request
# File lib/puppet/http/external_client.rb 14 def initialize(http_client_class) 15 @http_client_class = http_client_class 16 end
Public Instance Methods
close()
click to toggle source
(see Puppet::HTTP::Client#close) @api private
# File lib/puppet/http/external_client.rb 63 def close 64 # This is a noop as puppetserver doesn't provide a way to close its http client. 65 end
connect(uri, options: {}, &block)
click to toggle source
# File lib/puppet/http/external_client.rb 73 def connect(uri, options: {}, &block) 74 raise NotImplementedError 75 end
create_session()
click to toggle source
The following are intentionally not documented
# File lib/puppet/http/external_client.rb 69 def create_session 70 raise NotImplementedError 71 end
delete(url, headers: {}, params: {}, options: {})
click to toggle source
# File lib/puppet/http/external_client.rb 85 def delete(url, headers: {}, params: {}, options: {}) 86 raise NotImplementedError 87 end
get(url, headers: {}, params: {}, options: {}) { |response| ... }
click to toggle source
(see Puppet::HTTP::Client#get) @api private
# File lib/puppet/http/external_client.rb 20 def get(url, headers: {}, params: {}, options: {}, &block) 21 url = encode_query(url, params) 22 23 options[:use_ssl] = url.scheme == 'https' 24 25 client = @http_client_class.new(url.host, url.port, options) 26 response = Puppet::HTTP::ResponseNetHTTP.new(url, client.get(url.request_uri, headers, options)) 27 28 if block_given? 29 yield response 30 else 31 response 32 end 33 rescue Puppet::HTTP::HTTPError 34 raise 35 rescue => e 36 raise Puppet::HTTP::HTTPError.new(e.message, e) 37 end
head(url, headers: {}, params: {}, options: {})
click to toggle source
# File lib/puppet/http/external_client.rb 77 def head(url, headers: {}, params: {}, options: {}) 78 raise NotImplementedError 79 end
post(url, body, headers: {}, params: {}, options: {}) { |response| ... }
click to toggle source
(see Puppet::HTTP::Client#post) @api private
# File lib/puppet/http/external_client.rb 41 def post(url, body, headers: {}, params: {}, options: {}, &block) 42 raise ArgumentError.new("'post' requires a string 'body' argument") unless body.is_a?(String) 43 url = encode_query(url, params) 44 45 options[:use_ssl] = url.scheme == 'https' 46 47 client = @http_client_class.new(url.host, url.port, options) 48 response = Puppet::HTTP::ResponseNetHTTP.new(url, client.post(url.request_uri, body, headers, options)) 49 50 if block_given? 51 yield response 52 else 53 response 54 end 55 rescue Puppet::HTTP::HTTPError, ArgumentError 56 raise 57 rescue => e 58 raise Puppet::HTTP::HTTPError.new(e.message, e) 59 end
put(url, headers: {}, params: {}, options: {})
click to toggle source
# File lib/puppet/http/external_client.rb 81 def put(url, headers: {}, params: {}, options: {}) 82 raise NotImplementedError 83 end