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(name) ⇒ 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.
5 6 7 |
# File 'app/models/mr_video/cassette.rb', line 5 def initialize(cassette_path) @cassette_path = cassette_path end |
Class Method Details
.all ⇒ Object
Class methods:
70 71 72 73 74 |
# File 'app/models/mr_video/cassette.rb', line 70 def self.all cassette_paths.map { |cassette_path| new(cassette_path) } end |
.find(name) ⇒ Object
76 77 78 79 80 81 82 |
# File 'app/models/mr_video/cassette.rb', line 76 def self.find(name) 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:
36 37 38 |
# File 'app/models/mr_video/cassette.rb', line 36 def destroy File.delete(cassette_path) end |
#episodes ⇒ Object
21 22 23 24 25 26 27 |
# File 'app/models/mr_video/cassette.rb', line 21 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
56 57 58 |
# File 'app/models/mr_video/cassette.rb', line 56 def find_episode_by_id(episode_id) episodes_grouped_by_id[episode_id.to_s] end |
#id ⇒ Object
9 10 11 12 13 14 15 |
# File 'app/models/mr_video/cassette.rb', line 9 def id if Rails.version < '4.2.0' URI.escape(name, /\//) else name end end |
#inspect ⇒ Object
60 61 62 |
# File 'app/models/mr_video/cassette.rb', line 60 def inspect to_s end |
#load ⇒ Object
40 41 42 |
# File 'app/models/mr_video/cassette.rb', line 40 def load raw_data end |
#name ⇒ Object
17 18 19 |
# File 'app/models/mr_video/cassette.rb', line 17 def name @name ||= cassette_path.sub(self.class.cassette_dir, '').match(/^\/(.+)\.yml$/)[1] end |
#reload ⇒ Object
44 45 46 47 |
# File 'app/models/mr_video/cassette.rb', line 44 def reload reset_episodes reset_raw_data end |
#save! ⇒ Object
49 50 51 52 53 54 |
# File 'app/models/mr_video/cassette.rb', line 49 def save! File.open(cassette_path, mode: 'w') do |file| YAML.dump(raw_data, file) end reload end |
#to_param ⇒ Object
64 65 66 |
# File 'app/models/mr_video/cassette.rb', line 64 def to_param id end |
#updated_at ⇒ Object
29 30 31 |
# File 'app/models/mr_video/cassette.rb', line 29 def updated_at @updated_at ||= episodes.map(&:recorded_at).max end |