module TTWatcher::Sites::InternetConnection::Scheme

<<Breaking news>> Some cites still using http.

This module designed to switch&normalizate scheme for url instance, if default (https) scheme not supported.

Constants

DEFAULT
SCHEMES

Public Class Methods

add_scheme!(url, scheme) click to toggle source
# File sources/ttwatcher/sites/connection/scheme.rb, line 23
def self.add_scheme!(url, scheme)
  if included?(url, scheme)
    url
  else
    url.replace "#{scheme.to_s}://#{url}"
  end
end
included?(url, scheme = nil) click to toggle source
# File sources/ttwatcher/sites/connection/scheme.rb, line 15
def self.included?(url, scheme = nil)
  if scheme
    (url =~ Regexp.new(scheme.to_s + '://')) == 0
  else
    SCHEMES.any? { |p| included?(url, p) }
  end
end

Public Instance Methods

scheme() click to toggle source
# File sources/ttwatcher/sites/connection/scheme.rb, line 31
def scheme
  @scheme
end
scheme_switch() click to toggle source
# File sources/ttwatcher/sites/connection/scheme.rb, line 35
def scheme_switch
  @allowed_schemes -= [ @scheme ]
  if @allowed_schemes.length > 0
    @scheme = @allowed_schemes.first
  else
    MessageWarn.send "Unknown scheme requested: #{@scheme}!"
  end
  @switched = true

  normalization!
end

Private Instance Methods

normalization!() click to toggle source
# File sources/ttwatcher/sites/connection/scheme.rb, line 60
def normalization!
  unless @switched
    return encode_url if Scheme.included?(@url)
  end
  return encode_url if Scheme.included?(@url, @scheme)

  strip_schemes_from_url!
  Scheme.add_scheme!(@url, @scheme)
end
set_scheme(scheme = nil) click to toggle source
# File sources/ttwatcher/sites/connection/scheme.rb, line 52
def set_scheme(scheme = nil)
  @scheme = scheme || DEFAULT
  @allowed_schemes = SCHEMES.dup
  @switched = false

  normalization!
end
strip_schemes_from_url!() click to toggle source
# File sources/ttwatcher/sites/connection/scheme.rb, line 70
def strip_schemes_from_url!
  SCHEMES.each do |scheme|
    @url.gsub!(scheme.to_s + '://', '') if Scheme.included?(@url, scheme)
  end
end