Class: AudioAddict::Radio

Inherits:
Object
  • Object
show all
Includes:
Cache, Inspectable
Defined in:
lib/audio_addict/radio.rb

Constant Summary collapse

NETWORKS =
{
  di:             'Digitally Imported',
  rockradio:      'Rock Radio',
  radiotunes:     'Radio Tunes',
  jazzradio:      'Jazz Radio',
  classicalradio: 'Classical Radio',
  zenradio:       'Zen Radio',
}
DOMAINS =
{
  di:             'di.fm',
  rockradio:      'rockradio.com',
  radiotunes:     'radiotunes.com',
  jazzradio:      'jazzradio.com',
  classicalradio: 'classicalradio.com',
  zenradio:       'zenradio.com',
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Inspectable

#inspect

Methods included from Cache

#cache, #cache_dir, #cache_dir!, #cache_life, #cache_life!

Constructor Details

#initialize(network) ⇒ Radio

Returns a new instance of Radio.



39
40
41
# File 'lib/audio_addict/radio.rb', line 39

def initialize(network)
  @network = network.to_sym
end

Instance Attribute Details

#networkObject (readonly)

Returns the value of attribute network.



6
7
8
# File 'lib/audio_addict/radio.rb', line 6

def network
  @network
end

Class Method Details

.networks(search = nil) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/audio_addict/radio.rb', line 26

def self.networks(search = nil)
  if search
    result = NETWORKS.select { |k, v| "#{k} #{v}".downcase.include? search.downcase }
    result.any? ? result : NETWORKS
  else
    NETWORKS
  end
end

.valid_network?(network) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/audio_addict/radio.rb', line 35

def self.valid_network?(network)
  NETWORKS.has_key?(network.to_sym)
end

Instance Method Details

#[](channel_key) ⇒ Object



75
76
77
# File 'lib/audio_addict/radio.rb', line 75

def [](channel_key)
  channels[channel_key]
end

#apiObject



83
84
85
# File 'lib/audio_addict/radio.rb', line 83

def api
  @api ||= API.new network
end

#channelsObject



60
61
62
# File 'lib/audio_addict/radio.rb', line 60

def channels
  @channels ||= channels!
end

#domainObject



51
52
53
# File 'lib/audio_addict/radio.rb', line 51

def domain
  DOMAINS[network]
end

#inspectableObject



43
44
45
# File 'lib/audio_addict/radio.rb', line 43

def inspectable
  [:network]
end

#nameObject



47
48
49
# File 'lib/audio_addict/radio.rb', line 47

def name
  NETWORKS[network]
end

#search(query) ⇒ Object



64
65
66
67
68
# File 'lib/audio_addict/radio.rb', line 64

def search(query)
  channels.select do |key, channel|
    "#{key} #{channel.name.downcase}".include? query.downcase
  end
end

#search_by_id(ids) ⇒ Object



70
71
72
73
# File 'lib/audio_addict/radio.rb', line 70

def search_by_id(ids)
  ids = [ids] unless ids.is_a? Array
  channels.select { |_key, channel| ids.include? channel.id }
end

#url_templateObject



55
56
57
58
# File 'lib/audio_addict/radio.rb', line 55

def url_template
  channel_path = network == :zenradio ? 'zr%{channel_key}' : '%{channel_key}'
  "http://prem2.#{domain}:80/#{channel_path}?%{listen_key}"
end

#valid_channel?(channel) ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/audio_addict/radio.rb', line 79

def valid_channel?(channel)
  channels.has_key?(channel)
end