class Koine::Url
Url
builder
Constants
- ArgumentError
Exception for when the argument is invalid
Public Class Methods
new(url)
click to toggle source
# File lib/koine/url.rb, line 11 def initialize(url) @url = validate(url).to_s.freeze freeze end
Public Instance Methods
==(other)
click to toggle source
# File lib/koine/url.rb, line 56 def ==(other) other.class == self.class && other.to_s == to_s end
query_params()
click to toggle source
# File lib/koine/url.rb, line 34 def query_params parsed.query_values || {} end
to_s(unescape: nil)
click to toggle source
# File lib/koine/url.rb, line 42 def to_s(unescape: nil) unless unescape return @url end url = @url.to_s.dup unescape.to_s.each_char do |char| url = url.gsub(CGI.escape(char), char) end url end
uri()
click to toggle source
# File lib/koine/url.rb, line 38 def uri parsed.request_uri end
with_query_param(param_name, value)
click to toggle source
# File lib/koine/url.rb, line 30 def with_query_param(param_name, value) with_query_params(query_params.merge(param_name.to_s => value)) end
with_query_params(params)
click to toggle source
:reek: UncommunicativeVariableName :reek: DuplicateMethodCall
# File lib/koine/url.rb, line 18 def with_query_params(params) if params.empty? return self.class.new(to_s.split('?').first) end url = parsed.tap do |p| p.query_values = params end self.class.new(url.to_s) end
Private Instance Methods
parsed(url = nil)
click to toggle source
# File lib/koine/url.rb, line 62 def parsed(url = nil) url ||= to_s Addressable::URI.parse(url.to_s) end
reject(url)
click to toggle source
# File lib/koine/url.rb, line 80 def reject(url) raise ArgumentError, "Invalid url '#{url}'" end
validate(input_url)
click to toggle source
:reek: TooManyStatements
# File lib/koine/url.rb, line 68 def validate(input_url) parsed(input_url).tap do |url| url.send(:validate) unless url.scheme reject(url) end end rescue StandardError => _exception reject(input_url) end