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