diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/puppet/file_serving/configuration.rb | 6 | ||||
| -rw-r--r-- | lib/puppet/indirector/direct_file_server.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/indirector/file_content/rest.rb | 1 | ||||
| -rw-r--r-- | lib/puppet/indirector/file_metadata/rest.rb | 1 | ||||
| -rw-r--r-- | lib/puppet/indirector/request.rb | 9 | ||||
| -rw-r--r-- | lib/puppet/indirector/rest.rb | 6 | ||||
| -rw-r--r-- | lib/puppet/network/http/handler.rb | 3 | ||||
| -rw-r--r-- | lib/puppet/util/uri_helper.rb | 22 |
8 files changed, 14 insertions, 36 deletions
diff --git a/lib/puppet/file_serving/configuration.rb b/lib/puppet/file_serving/configuration.rb index de5995d7e..608924c8b 100644 --- a/lib/puppet/file_serving/configuration.rb +++ b/lib/puppet/file_serving/configuration.rb @@ -9,10 +9,8 @@ require 'puppet/file_serving/mount/file' require 'puppet/file_serving/mount/modules' require 'puppet/file_serving/mount/plugins' require 'puppet/util/cacher' -require 'puppet/util/uri_helper' class Puppet::FileServing::Configuration - include Puppet::Util::URIHelper require 'puppet/file_serving/configuration/parser' class << self @@ -70,9 +68,7 @@ class Puppet::FileServing::Configuration # Reparse the configuration if necessary. readconfig - uri = key2uri(request.key) - - mount_name, path = uri.path.sub(/^\//, '').split(File::Separator, 2) + mount_name, path = request.key.split(File::Separator, 2) raise(ArgumentError, "Cannot find file: Invalid path '%s'" % mount_name) unless mount_name =~ %r{^[-\w]+$} diff --git a/lib/puppet/indirector/direct_file_server.rb b/lib/puppet/indirector/direct_file_server.rb index bcda92366..f69f9e14b 100644 --- a/lib/puppet/indirector/direct_file_server.rb +++ b/lib/puppet/indirector/direct_file_server.rb @@ -3,12 +3,10 @@ # Copyright (c) 2007. All rights reserved. require 'puppet/file_serving/terminus_helper' -require 'puppet/util/uri_helper' require 'puppet/indirector/terminus' class Puppet::Indirector::DirectFileServer < Puppet::Indirector::Terminus - include Puppet::Util::URIHelper include Puppet::FileServing::TerminusHelper def find(request) diff --git a/lib/puppet/indirector/file_content/rest.rb b/lib/puppet/indirector/file_content/rest.rb index 31df7626d..7b3cade8e 100644 --- a/lib/puppet/indirector/file_content/rest.rb +++ b/lib/puppet/indirector/file_content/rest.rb @@ -3,7 +3,6 @@ # Copyright (c) 2007. All rights reserved. require 'puppet/file_serving/content' -require 'puppet/util/uri_helper' require 'puppet/indirector/file_content' require 'puppet/indirector/rest' diff --git a/lib/puppet/indirector/file_metadata/rest.rb b/lib/puppet/indirector/file_metadata/rest.rb index 0f3d9c6fd..8cbf91049 100644 --- a/lib/puppet/indirector/file_metadata/rest.rb +++ b/lib/puppet/indirector/file_metadata/rest.rb @@ -3,7 +3,6 @@ # Copyright (c) 2007. All rights reserved. require 'puppet/file_serving/metadata' -require 'puppet/util/uri_helper' require 'puppet/indirector/file_metadata' require 'puppet/indirector/rest' diff --git a/lib/puppet/indirector/request.rb b/lib/puppet/indirector/request.rb index c6f268ab2..539cd0e62 100644 --- a/lib/puppet/indirector/request.rb +++ b/lib/puppet/indirector/request.rb @@ -1,3 +1,4 @@ +require 'uri' require 'puppet/indirector' # This class encapsulates all of the information you need to make an @@ -14,6 +15,10 @@ class Puppet::Indirector::Request ! ! authenticated end + def escaped_key + URI.escape(key) + end + # LAK:NOTE This is a messy interface to the cache, and it's only # used by the Configurer class. I decided it was better to implement # it now and refactor later, when we have a better design, than @@ -96,7 +101,7 @@ class Puppet::Indirector::Request # Just short-circuit these to full paths if uri.scheme == "file" - @key = uri.path + @key = URI.unescape(uri.path) return end @@ -111,6 +116,6 @@ class Puppet::Indirector::Request end @protocol = uri.scheme - @key = uri.path.sub(/^\//, '') + @key = URI.unescape(uri.path.sub(/^\//, '')) end end diff --git a/lib/puppet/indirector/rest.rb b/lib/puppet/indirector/rest.rb index 2d0799286..ce459b905 100644 --- a/lib/puppet/indirector/rest.rb +++ b/lib/puppet/indirector/rest.rb @@ -62,12 +62,12 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus end def find(request) - deserialize network(request).get("/#{indirection.name}/#{request.key}#{query_string(request)}", headers) + deserialize network(request).get("/#{indirection.name}/#{request.escaped_key}#{query_string(request)}", headers) end def search(request) if request.key - path = "/#{indirection.name}s/#{request.key}#{query_string(request)}" + path = "/#{indirection.name}s/#{request.escaped_key}#{query_string(request)}" else path = "/#{indirection.name}s#{query_string(request)}" end @@ -79,7 +79,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus def destroy(request) raise ArgumentError, "DELETE does not accept options" unless request.options.empty? - deserialize network(request).delete("/#{indirection.name}/#{request.key}", headers) + deserialize network(request).delete("/#{indirection.name}/#{request.escaped_key}", headers) end def save(request) diff --git a/lib/puppet/network/http/handler.rb b/lib/puppet/network/http/handler.rb index 9bc94a037..cce679864 100644 --- a/lib/puppet/network/http/handler.rb +++ b/lib/puppet/network/http/handler.rb @@ -75,6 +75,7 @@ module Puppet::Network::HTTP::Handler # Execute our find. def do_find(request, response) key = request_key(request) || raise(ArgumentError, "Could not locate lookup key in request path [#{path(request)}]") + key = URI.unescape(key) args = params(request) unless result = model.find(key, args) return do_exception(response, "Could not find %s %s" % [model.name, key], 404) @@ -93,6 +94,7 @@ module Puppet::Network::HTTP::Handler def do_search(request, response) args = params(request) if key = request_key(request) + key = URI.unescape(key) result = model.search(key, args) else result = model.search(args) @@ -110,6 +112,7 @@ module Puppet::Network::HTTP::Handler # Execute our destroy. def do_destroy(request, response) key = request_key(request) || raise(ArgumentError, "Could not locate lookup key in request path [#{path(request)}]") + key = URI.unescape(key) args = params(request) result = model.destroy(key, args) diff --git a/lib/puppet/util/uri_helper.rb b/lib/puppet/util/uri_helper.rb deleted file mode 100644 index cb9320387..000000000 --- a/lib/puppet/util/uri_helper.rb +++ /dev/null @@ -1,22 +0,0 @@ -# -# Created by Luke Kanies on 2007-10-16. -# Copyright (c) 2007. All rights reserved. - -require 'uri' -require 'puppet/util' - -# Helper methods for dealing with URIs. -module Puppet::Util::URIHelper - def key2uri(key) - # Return it directly if it's fully qualified. - if key =~ /^#{::File::SEPARATOR}/ - key = "file://" + key - end - - begin - uri = URI.parse(URI.escape(key)) - rescue => detail - raise ArgumentError, "Could not understand URI %s: %s" % [key, detail.to_s] - end - end -end |
