Class: MrVideo::Cassette
- Inherits:
-
Object
- Object
- MrVideo::Cassette
- Defined in:
- app/models/mr_video/cassette.rb
Class Method Summary collapse
-
.all ⇒ Object
Class methods:.
- .find(id) ⇒ Object
Instance Method Summary collapse
-
#destroy ⇒ Object
Methods:.
- #episodes ⇒ Object
- #find_episode_by_id(episode_id) ⇒ Object
- #id ⇒ Object
-
#initialize(cassette_path) ⇒ Cassette
constructor
A new instance of Cassette.
- #inspect ⇒ Object
- #load ⇒ Object
- #name ⇒ Object
- #reload ⇒ Object
- #save! ⇒ Object
- #to_param ⇒ Object
- #updated_at ⇒ Object
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
.all ⇒ Object
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
#destroy ⇒ Object
Methods:
31 32 33 |
# File 'app/models/mr_video/cassette.rb', line 31 def destroy File.delete(cassette_path) end |
#episodes ⇒ Object
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 |
#id ⇒ Object
8 9 10 |
# File 'app/models/mr_video/cassette.rb', line 8 def id @id ||= IdService.encode(name) end |
#inspect ⇒ Object
55 56 57 |
# File 'app/models/mr_video/cassette.rb', line 55 def inspect to_s end |
#load ⇒ Object
35 36 37 |
# File 'app/models/mr_video/cassette.rb', line 35 def load raw_data end |
#name ⇒ Object
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 |
#reload ⇒ Object
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_param ⇒ Object
59 60 61 |
# File 'app/models/mr_video/cassette.rb', line 59 def to_param id end |
#updated_at ⇒ Object
24 25 26 |
# File 'app/models/mr_video/cassette.rb', line 24 def updated_at @updated_at ||= episodes.map(&:recorded_at).max end |