class Puppet::Indirector::FileContent::Rest
Public Instance Methods
find(request)
click to toggle source
# File lib/puppet/indirector/file_content/rest.rb 9 def find(request) 10 content = StringIO.new 11 content.binmode 12 13 url = URI.parse(Puppet::Util.uri_encode(request.uri)) 14 session = Puppet.lookup(:http_session) 15 api = session.route_to(:fileserver, url: url) 16 17 api.get_file_content( 18 path: Puppet::Util.uri_unescape(url.path), 19 environment: request.environment.to_s, 20 ) do |data| 21 content << data 22 end 23 24 Puppet::FileServing::Content.from_binary(content.string) 25 rescue Puppet::HTTP::ResponseError => e 26 if e.response.code == 404 27 return nil unless request.options[:fail_on_404] 28 29 _, body = parse_response(e.response) 30 msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body } 31 raise Puppet::Error, msg 32 else 33 raise convert_to_http_error(e.response) 34 end 35 end