class TTWatcher::Sites::InternetConnection::Url
TODO REFACTOR
Attributes
encoding[R]
url[R]
Public Class Methods
new(url, **params)
click to toggle source
Creates new Url
instance.
@param [String] url
An url in any form.
@param [Hash] params @option params [Symbol] :force_scheme @option params [Hash] :query_params @option params [String] :encoding
@return [InternetConnection::Url]
# File sources/ttwatcher/sites/connection/url.rb, line 22 def initialize(url, **params) self.class.include Scheme @url = url @query = params[:query_params] || {} @encoding = params[:encoding] || 'utf-8' set_scheme params[:force_scheme] encode_url end
Private Instance Methods
encode_url()
click to toggle source
Normalization. String to rfc-standard uri
# File sources/ttwatcher/sites/connection/url.rb, line 58 def encode_url uri = Addressable::URI.parse url uri.query_values = query_normalization @url.replace uri.normalize.to_s.force_encoding(@encoding) end
query_normalization()
click to toggle source
return query
with correct encoding
# File sources/ttwatcher/sites/connection/url.rb, line 41 def query_normalization uri = Addressable::URI.parse url tmp_q = (uri.query_values || {}).merge(@query) return tmp_q if tmp_q.empty? && tmp_q.values.all? { |v| v.encode == @encoding } tmp_q.each_key do |k| tmp_q[k] = tmp_q[k].encode(encoding, invalid: :replace, undef: :replace) end return tmp_q end