class Puppet::Indirector::FileMetadata::Rest

Public Instance Methods

find(request) click to toggle source
   # File lib/puppet/indirector/file_metadata/rest.rb
 8 def find(request)
 9   url = URI.parse(Puppet::Util.uri_encode(request.uri))
10   session = Puppet.lookup(:http_session)
11   api = session.route_to(:fileserver, url: url)
12 
13   _, file_metadata = api.get_file_metadata(
14     path: Puppet::Util.uri_unescape(url.path),
15     environment: request.environment.to_s,
16     links: request.options[:links],
17     checksum_type: request.options[:checksum_type],
18     source_permissions: request.options[:source_permissions]
19   )
20   file_metadata
21 rescue Puppet::HTTP::ResponseError => e
22   if e.response.code == 404
23     return nil unless request.options[:fail_on_404]
24 
25     _, body = parse_response(e.response)
26     msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
27     raise Puppet::Error, msg
28   else
29     raise convert_to_http_error(e.response)
30   end
31 end