class TTWatcher::Sites::TorrentSite

Public Class Methods

search_request_valid?(name) click to toggle source

@param [String] name

@return [TrueClass, FalseClass]

Returns +false+ when +name+ too short or not exists.
# File sources/ttwatcher/sites/torrent_site.rb, line 12
def self.search_request_valid?(name)
  name && name.length >= 3
end

Public Instance Methods

find_torrent(name, request_params = {}) click to toggle source

Searches torrents.

@param [String] name

Torrent name.

@return [TorrentList, NilClass]

# File sources/ttwatcher/sites/torrent_site.rb, line 24
def find_torrent(name, request_params = {})
  return nil unless self.class.search_request_valid? name

  html_body = download_page search_url(name), request_params
  torrents = parser.parse html_body

  return torrents
end

Private Instance Methods

notificate_about_parser_crash!(exception) click to toggle source
# File sources/ttwatcher/sites/torrent_site.rb, line 65
def notificate_about_parser_crash!(exception)
  Logger.with_backtrace "Parser #{self} crashed with message: *** #{exception.message} ***"
end
parser() click to toggle source

Returns a parser associated with Site instance throw class names.

@return [Parsers::Base]

# File sources/ttwatcher/sites/torrent_site.rb, line 52
def parser
  @parser ||=
    begin
      class_name = self.class.name.split('::').last
      parser = TTWatcher::Parsers.const_get class_name
      parser.new self
    end
rescue NameError => exception
  notificate_about_parser_crash! exception

  return nil
end
search_url(name=nil) click to toggle source

Url for torrent searching.

see Sites#search_url for an example.

@param [String] name

Used to extend url with +name+ when it need.
For an example check Rutor#search_url
# File sources/ttwatcher/sites/torrent_site.rb, line 43
def search_url(name=nil)
  raise NotImplementedError, "Abstract method called!"
end