class TTWatcher::Sites::Connection

Attributes

site[R]

@return [Site]

Site that uses current connection.
url[R]

@return [InternetConnection::Url]

Last used url.

Public Class Methods

new(site) click to toggle source

Creates new Connection instance.

@return [Sites::Connection]

# File sources/ttwatcher/sites/connection.rb, line 35
def initialize(site)
  @site = site
end

Public Instance Methods

download(url, request_params = {}) click to toggle source

Downloads requested url.

@param [String] url

Url in any form: "https://site.com", "site.com", "www.site.com"

@param [Hash] request_params

@return [String, NilClass]

when 'OK' it returns requested page (html, string).
when 'Error' it returns +nil+.
# File sources/ttwatcher/sites/connection.rb, line 51
def download(url, request_params = {})
  with_exceptions_control do
    request = settings.dup.deep_merge request_params
    @url = Url.new url, request[:url]
    response = RestClient::Request.execute method: :get, url: url.to_s

    return response.body
  end
end
settings() click to toggle source

@return [Hash]

Default settings for the connection.
# File sources/ttwatcher/sites/connection.rb, line 21
def settings
  @settings ||=
    begin
      defaults = S[:defaults][:connection_settings].dup || {}
      defaults.deep_merge! S[site.name][:connection_settings]
      defaults
    end
end

Private Instance Methods

with_exceptions_control() { || ... } click to toggle source
# File sources/ttwatcher/sites/connection.rb, line 63
def with_exceptions_control # no-doc
  yield

rescue Errno::ECONNREFUSED # ==> Scheme not supported. Try another one.
  url.scheme_switch

  retry
rescue RestClient::Forbidden
  Logger << "Connection for '#{url.to_s}' Forbidden."

  return nil
rescue Exception => exception
  Logger.with_backtrace "Unexpected exception (#{exception.inspect}) " \
                        "has been raised for '#{url.to_s}' url."

  return nil
end