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