Class: RESTinPeace::TemplateSanitizer
- Inherits:
-
Object
- Object
- RESTinPeace::TemplateSanitizer
show all
- Defined in:
- lib/rest_in_peace/template_sanitizer.rb
Defined Under Namespace
Classes: IncompleteParams
Instance Method Summary
collapse
Constructor Details
#initialize(url_template, params, klass) ⇒ TemplateSanitizer
Returns a new instance of TemplateSanitizer.
9
10
11
12
13
14
|
# File 'lib/rest_in_peace/template_sanitizer.rb', line 9
def initialize(url_template, params, klass)
@url_template = url_template
@params = params.dup
@klass = klass
@url = nil
end
|
Instance Method Details
#leftover_params ⇒ Object
36
37
38
|
# File 'lib/rest_in_peace/template_sanitizer.rb', line 36
def leftover_params
@params.delete_if { |param| tokens.include?(param.to_s) }
end
|
#tokens ⇒ Object
32
33
34
|
# File 'lib/rest_in_peace/template_sanitizer.rb', line 32
def tokens
@url_template.scan(%r{:([a-z_]+)}).flatten
end
|
#url ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/rest_in_peace/template_sanitizer.rb', line 16
def url
return @url if @url
@url = @url_template.dup
tokens.each do |token|
param = @params[token.to_sym]
param ||= @klass.send(token) if @klass.respond_to?(token)
raise IncompleteParams, "No parameter for token :#{token} found" unless param
if @params.include?(token.to_sym)
@url.sub!(%r{:#{token}}, CGI.escape(param.to_s))
else
@url.sub!(%r{:#{token}}, Addressable::URI.parse(param.to_s).normalize.to_s)
end
end
@url
end
|