module TTWatcher::Sites

Public Instance Methods

fetch_torrent_site(name) click to toggle source

Returns a TorrentSite child class.

@param [String, Symbol] name

Site name.

@exception TorrentSiteUnknown

Raised when TorrentSite child class associated with +name+ not found.

@return [TorrentSite]

# File sources/ttwatcher/sites.rb, line 43
def fetch_torrent_site(name)
  site = torrent_sites[name.downcase.to_sym]

  if site.nil?
    raise TorrentSiteUnknown, name
  else
    return site
  end
end
list() click to toggle source

Returns list of known torrent sites.

@return [Array<Symbols>]

# File sources/ttwatcher/sites.rb, line 58
def list
  @torrent_sites_keys = torrent_sites.keys
end
torrent_sites() click to toggle source

Returns all possible pairs:

:name => TorrentSite child class (with associated +:name+)

@example

torrent_sites[:megashara] # ==> Sites::Megashara

@return [Hash<Symbol:Class>]

# File sources/ttwatcher/sites.rb, line 16
def torrent_sites
  @known_torrent_sites ||=
    begin
      sites =
        Sites.constants.select do |const_name|
          const = Sites.const_get const_name
          const.class == Class && const < TorrentSite ? const : nil
        end # ==> [Array<Symbols>]

      hsh = Hash.new
      sites.each { |site| hsh[site.downcase] = Sites.const_get(site) }

      hsh
    end
end