summaryrefslogtreecommitdiffstats
path: root/lib/puppet/indirector
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-02-19 16:09:58 -0600
committerLuke Kanies <luke@madstop.com>2009-02-19 17:51:22 -0600
commit262937ff6e505bbf86d15500279ff23398f9e1c8 (patch)
tree66084a1e14ed86f19982b800f60d332c139c8a36 /lib/puppet/indirector
parentb800bde30bd5a08f5e222725588062e2bca37a79 (diff)
Correctly handling URI escaping throughout the REST process
This means, at the least, that we can now serve files via REST when they have spaces and other weird characters in their names. This involves a small change to many files. Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'lib/puppet/indirector')
-rw-r--r--lib/puppet/indirector/direct_file_server.rb2
-rw-r--r--lib/puppet/indirector/file_content/rest.rb1
-rw-r--r--lib/puppet/indirector/file_metadata/rest.rb1
-rw-r--r--lib/puppet/indirector/request.rb9
-rw-r--r--lib/puppet/indirector/rest.rb6
5 files changed, 10 insertions, 9 deletions
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)