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 13 def initialize(http_client_class) 14 @http_client_class = http_client_class 15 end
Public Instance Methods
close()
click to toggle source
(see Puppet::HTTP::Client#close
) @api private
# File lib/puppet/http/external_client.rb 62 def close 63 # This is a noop as puppetserver doesn't provide a way to close its http client. 64 end
connect(uri, options: {}, &block)
click to toggle source
# File lib/puppet/http/external_client.rb 72 def connect(uri, options: {}, &block) 73 raise NotImplementedError 74 end
create_session()
click to toggle source
The following are intentionally not documented
# File lib/puppet/http/external_client.rb 68 def create_session 69 raise NotImplementedError 70 end
delete(url, headers: {}, params: {}, options: {})
click to toggle source
# File lib/puppet/http/external_client.rb 84 def delete(url, headers: {}, params: {}, options: {}) 85 raise NotImplementedError 86 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 19 def get(url, headers: {}, params: {}, options: {}, &block) 20 url = encode_query(url, params) 21 22 options[:use_ssl] = url.scheme == 'https' 23 24 client = @http_client_class.new(url.host, url.port, options) 25 response = Puppet::HTTP::ResponseNetHTTP.new(url, client.get(url.request_uri, headers, options)) 26 27 if block_given? 28 yield response 29 else 30 response 31 end 32 rescue Puppet::HTTP::HTTPError 33 raise 34 rescue => e 35 raise Puppet::HTTP::HTTPError.new(e.message, e) 36 end
head(url, headers: {}, params: {}, options: {})
click to toggle source
# File lib/puppet/http/external_client.rb 76 def head(url, headers: {}, params: {}, options: {}) 77 raise NotImplementedError 78 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 40 def post(url, body, headers: {}, params: {}, options: {}, &block) 41 raise ArgumentError.new("'post' requires a string 'body' argument") unless body.is_a?(String) 42 url = encode_query(url, params) 43 44 options[:use_ssl] = url.scheme == 'https' 45 46 client = @http_client_class.new(url.host, url.port, options) 47 response = Puppet::HTTP::ResponseNetHTTP.new(url, client.post(url.request_uri, body, headers, options)) 48 49 if block_given? 50 yield response 51 else 52 response 53 end 54 rescue Puppet::HTTP::HTTPError, ArgumentError 55 raise 56 rescue => e 57 raise Puppet::HTTP::HTTPError.new(e.message, e) 58 end
put(url, headers: {}, params: {}, options: {})
click to toggle source
# File lib/puppet/http/external_client.rb 80 def put(url, headers: {}, params: {}, options: {}) 81 raise NotImplementedError 82 end