diff options
| author | Luke Kanies <luke@madstop.com> | 2009-02-25 17:36:03 -0800 |
|---|---|---|
| committer | James Turnbull <james@lovedthanlost.net> | 2009-03-20 18:27:07 +1100 |
| commit | a064ed1a6035c44f123e092b2429895fb45bdbd2 (patch) | |
| tree | 0e1a6ce96ef73de7579ff1754c2ffccb9561bb2d /lib | |
| parent | ff9c3ca4059a63523b07d89f1b967f6bf1c4bba4 (diff) | |
| download | puppet-a064ed1a6035c44f123e092b2429895fb45bdbd2.tar.gz puppet-a064ed1a6035c44f123e092b2429895fb45bdbd2.tar.xz puppet-a064ed1a6035c44f123e092b2429895fb45bdbd2.zip | |
Moving the query_string method to Request
It required a request instance and didn't use
the REST class it was in, so it makes more sense in
the Request class.
Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/puppet/indirector/request.rb | 19 | ||||
| -rw-r--r-- | lib/puppet/indirector/rest.rb | 25 |
2 files changed, 22 insertions, 22 deletions
diff --git a/lib/puppet/indirector/request.rb b/lib/puppet/indirector/request.rb index 539cd0e62..7fe029597 100644 --- a/lib/puppet/indirector/request.rb +++ b/lib/puppet/indirector/request.rb @@ -83,6 +83,25 @@ class Puppet::Indirector::Request method == :search end + # Create the query string, if options are present. + def query_string + return "" unless options and ! options.empty? + "?" + options.collect do |key, value| + case value + when nil; next + when true, false; value = value.to_s + when Fixnum, Bignum, Float; value = value # nothing + when String; value = URI.escape(value) + when Symbol; value = URI.escape(value.to_s) + when Array; value = URI.escape(YAML.dump(value)) + else + raise ArgumentError, "HTTP REST queries cannot handle values of type '%s'" % value.class + end + + "%s=%s" % [key, value] + end.join("&") + end + def to_s return uri if uri return "/%s/%s" % [indirection_name, key] diff --git a/lib/puppet/indirector/rest.rb b/lib/puppet/indirector/rest.rb index 23ed56dee..e5efb3aa3 100644 --- a/lib/puppet/indirector/rest.rb +++ b/lib/puppet/indirector/rest.rb @@ -62,14 +62,14 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus end def find(request) - deserialize network(request).get("/#{indirection.name}/#{request.escaped_key}#{query_string(request)}", headers) + deserialize network(request).get("/#{indirection.name}/#{request.escaped_key}#{request.query_string}", headers) end def search(request) if request.key - path = "/#{indirection.name}s/#{request.escaped_key}#{query_string(request)}" + path = "/#{indirection.name}s/#{request.escaped_key}#{request.query_string}" else - path = "/#{indirection.name}s#{query_string(request)}" + path = "/#{indirection.name}s#{request.query_string}" end unless result = deserialize(network(request).get(path, headers), true) return [] @@ -86,23 +86,4 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus raise ArgumentError, "PUT does not accept options" unless request.options.empty? deserialize network(request).put("/#{indirection.name}/", request.instance.render, headers) end - - # Create the query string, if options are present. - def query_string(request) - return "" unless request.options and ! request.options.empty? - "?" + request.options.collect do |key, value| - case value - when nil; next - when true, false; value = value.to_s - when Fixnum, Bignum, Float; value = value # nothing - when String; value = URI.escape(value) - when Symbol; value = URI.escape(value.to_s) - when Array; value = URI.escape(YAML.dump(value)) - else - raise ArgumentError, "HTTP REST queries cannot handle values of type '%s'" % value.class - end - - "%s=%s" % [key, value] - end.join("&") - end end |
