class Puppet::Indirector::FileMetadata::Rest

Public Instance Methods

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