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