Class: MrVideo::Cassette

Inherits:
Object
  • Object
show all
Defined in:
app/models/mr_video/cassette.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cassette_path) ⇒ Cassette

Returns a new instance of Cassette.



4
5
6
# File 'app/models/mr_video/cassette.rb', line 4

def initialize(cassette_path)
  @cassette_path = cassette_path
end

Class Method Details

.allObject

Class methods:



65
66
67
68
69
# File 'app/models/mr_video/cassette.rb', line 65

def self.all
  cassette_paths.map { |cassette_path|
    new(cassette_path)
  }
end

.find(id) ⇒ Object



71
72
73
74
75
76
77
78
# File 'app/models/mr_video/cassette.rb', line 71

def self.find(id)
  name = IdService.decode(id)
  cassette_path = cassette_paths(name).first
  unless cassette_path
    raise StandardError.new("#{self.name} with name: '#{name}' not found!")
  end
  new(cassette_path)
end

Instance Method Details

#destroyObject

Methods:



31
32
33
# File 'app/models/mr_video/cassette.rb', line 31

def destroy
  File.delete(cassette_path)
end

#episodesObject



16
17
18
19
20
21
22
# File 'app/models/mr_video/cassette.rb', line 16

def episodes
  @episodes ||= http_interactions.map { |http_interaction|
    create_episode(http_interaction)
  }.sort { |a, b|
    a.url <=> b.url
  }
end

#find_episode_by_id(episode_id) ⇒ Object



51
52
53
# File 'app/models/mr_video/cassette.rb', line 51

def find_episode_by_id(episode_id)
  episodes_grouped_by_id[episode_id.to_s]
end

#idObject



8
9
10
# File 'app/models/mr_video/cassette.rb', line 8

def id
  @id ||= IdService.encode(name)
end

#inspectObject



55
56
57
# File 'app/models/mr_video/cassette.rb', line 55

def inspect
  to_s
end

#loadObject



35
36
37
# File 'app/models/mr_video/cassette.rb', line 35

def load
  raw_data
end

#nameObject



12
13
14
# File 'app/models/mr_video/cassette.rb', line 12

def name
  @name ||= cassette_path.sub(self.class.cassette_dir, '').match(/^\/(.+)\.yml$/)[1]
end

#reloadObject



39
40
41
42
# File 'app/models/mr_video/cassette.rb', line 39

def reload
  reset_episodes
  reset_raw_data
end

#save!Object



44
45
46
47
48
49
# File 'app/models/mr_video/cassette.rb', line 44

def save!
  File.open(cassette_path, mode: 'w') do |file|
    YAML.dump(raw_data, file)
  end
  reload
end

#to_paramObject



59
60
61
# File 'app/models/mr_video/cassette.rb', line 59

def to_param
  id
end

#updated_atObject



24
25
26
# File 'app/models/mr_video/cassette.rb', line 24

def updated_at
  @updated_at ||= episodes.map(&:recorded_at).max
end