class ComposeURL
Attributes
params[RW]
Public Class Methods
new(base_url, params={})
click to toggle source
# File lib/compose_url.rb, line 8 def initialize(base_url, params={}) @url = init_url(base_url) @params = init_params(base_url).merge(params) url end
Public Instance Methods
add_param(k, v)
click to toggle source
# File lib/compose_url.rb, line 14 def add_param(k, v) @params[k] = v end
remove_param(k)
click to toggle source
# File lib/compose_url.rb, line 18 def remove_param(k) @params.delete(k) end
to_s()
click to toggle source
# File lib/compose_url.rb, line 26 def to_s url end
url()
click to toggle source
# File lib/compose_url.rb, line 22 def url validate_url(build_url) end
Private Instance Methods
build_url()
click to toggle source
# File lib/compose_url.rb, line 56 def build_url @params.length == 0 ? "#{@url}" : "#{@url}?#{params_string}" end
escape(s)
click to toggle source
# File lib/compose_url.rb, line 52 def escape(s) CGI.escape(s) end
init_params(base_url)
click to toggle source
# File lib/compose_url.rb, line 36 def init_params(base_url) query_string = base_url.gsub(init_url(base_url), '') query_string != '' ? CGI.parse(URI.parse(query_string).query) : {} end
init_url(base_url)
click to toggle source
# File lib/compose_url.rb, line 32 def init_url(base_url) base_url[/[^?]+/] end
params_string()
click to toggle source
# File lib/compose_url.rb, line 46 def params_string uri = Addressable::URI.new uri.query_values = @params uri.query end
validate_url(url)
click to toggle source
# File lib/compose_url.rb, line 41 def validate_url(url) raise ComposeURLError.new('Resulting URL is invalid') unless url =~ /\A#{URI::regexp}\z/ url end