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.



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

def initialize(cassette_path)
  @cassette_path = cassette_path
end

Class Method Details

.allObject

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
83
# File 'app/models/mr_video/cassette.rb', line 76

def self.find(name)
  name = URI.decode(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

#destroyObject

Methods:



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

def destroy
  File.delete(cassette_path)
end

#episodesObject



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

#idObject



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

#inspectObject



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

def inspect
  to_s
end

#loadObject



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

def load
  raw_data
end

#nameObject



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

#reloadObject



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_paramObject



64
65
66
# File 'app/models/mr_video/cassette.rb', line 64

def to_param
  id
end

#updated_atObject



29
30
31
# File 'app/models/mr_video/cassette.rb', line 29

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