Class: TVMaze::Show

Inherits:
Object
  • Object
show all
Defined in:
lib/tvmaze/show.rb

Constant Summary collapse

SHOW_MAPPING =
{ id: :id, url: :url, name: :name, type: :type,
language: :language, genres: :genres, status: :status,
runtime: :runtime, premiered: :premiered,
schedule: :schedule, rating: :rating, weight: :weight,
network: :network, webChannel: :web_channel,
summary: :summary, updated: :updated }

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(json = {}) ⇒ Show

Returns a new instance of Show.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/tvmaze/show.rb', line 17

def initialize(json = {})
  @seasons = []
  @episodes = []

  return if json.nil?
  SHOW_MAPPING.each do |source, destination|
    send("#{destination}=", json[source.to_s] || json[source.to_sym])
  end

  unless json['image'].nil?
    @image_original = json['image']['original']
    @image_medium   = json['image']['medium']
  end

  unless json['_embedded'].nil?
    embedded_json = json['_embedded']
    @next_episode = TVMaze::Episode.new(embedded_json['nextepisode'])
    @episodes = parse_episodes(embedded_json['episodes'])
    @seasons = parse_seasons(@episodes)
  end
end

Instance Attribute Details

#episodesObject

Returns the value of attribute episodes.



14
15
16
# File 'lib/tvmaze/show.rb', line 14

def episodes
  @episodes
end

#image_mediumObject

Returns the value of attribute image_medium.



14
15
16
# File 'lib/tvmaze/show.rb', line 14

def image_medium
  @image_medium
end

#image_originalObject

Returns the value of attribute image_original.



14
15
16
# File 'lib/tvmaze/show.rb', line 14

def image_original
  @image_original
end

#next_episodeObject

Returns the value of attribute next_episode.



14
15
16
# File 'lib/tvmaze/show.rb', line 14

def next_episode
  @next_episode
end

#seasonsObject

Returns the value of attribute seasons.



14
15
16
# File 'lib/tvmaze/show.rb', line 14

def seasons
  @seasons
end

Class Method Details

.find(id, params = {}) ⇒ Object



45
46
47
48
49
50
# File 'lib/tvmaze/show.rb', line 45

def self.find(id, params = {})
  embed = params.delete(:embed)
  embed ||= []
  result = TVMaze.request(find_url(id, embed), params)
  Show.new(result)
end

.search(query = '', params = {}) ⇒ Object



39
40
41
42
43
# File 'lib/tvmaze/show.rb', line 39

def self.search(query = '', params = {})
  params[:q] = query.to_s.strip
  result = TVMaze.request('/search/shows', params)
  build_search_results(result)
end