Class: ActiveMailbox::Message
- Inherits:
-
Object
- Object
- ActiveMailbox::Message
- Includes:
- Comparable
- Defined in:
- lib/active_mailbox/message.rb
Overview
The ActiveMailbox::Message class represents an Asterisk voicemail
Constant Summary collapse
- MaximumAge =
Maximum age before a Message is considered stale (30 days)
2592000- InfoFileKeys =
Values from Asterisk’s message info file (eg: msg0001.txt) that are used by this class
%w[callerid origdate duration]
Instance Attribute Summary collapse
-
#folder ⇒ Object
readonly
Returns the value of attribute folder.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Compare messages by the number in the name.
-
#callerid_name ⇒ Object
The caller’s name (from CallerID).
-
#callerid_number ⇒ Object
The caller’s phone number (from CallerID).
-
#destroy! ⇒ Object
Destroy this Message’s wav and txt files.
-
#duration ⇒ Object
The duration of this Message (in seconds).
-
#initialize(info_file, folder) ⇒ Message
constructor
A new instance of Message.
-
#name ⇒ Object
The name of this message (ex: msg0001).
-
#number ⇒ Object
The number pulled from name.
-
#path ⇒ Object
Returns msgXXXX.
-
#stale? ⇒ Boolean
Checks if this message is stale.
-
#timestamp ⇒ Object
The time the Message was left.
-
#txt ⇒ Object
The file path to this Message’s txt file.
-
#wav ⇒ Object
The file path to this Message’s wav file.
Constructor Details
#initialize(info_file, folder) ⇒ Message
Returns a new instance of Message.
23 24 25 26 27 28 29 30 |
# File 'lib/active_mailbox/message.rb', line 23 def initialize(info_file, folder) unless File.exists?(info_file) raise ActiveMailbox::Errors::MessageNotFound, "#{info_file} does not exist" end @folder = folder @info_file = info_file parse_data! end |
Instance Attribute Details
#folder ⇒ Object (readonly)
Returns the value of attribute folder.
21 22 23 |
# File 'lib/active_mailbox/message.rb', line 21 def folder @folder end |
Instance Method Details
#<=>(other) ⇒ Object
Compare messages by the number in the name
49 50 51 |
# File 'lib/active_mailbox/message.rb', line 49 def <=>(other) number <=> other.number end |
#callerid_name ⇒ Object
The caller’s name (from CallerID)
81 82 83 |
# File 'lib/active_mailbox/message.rb', line 81 def callerid_name @callerid_name ||= @callerid.gsub(/(.*)\s*\<.*\>/, '\1').strip end |
#callerid_number ⇒ Object
The caller’s phone number (from CallerID)
74 75 76 |
# File 'lib/active_mailbox/message.rb', line 74 def callerid_number @callerid_number ||= @callerid.gsub(/.*\<(.*)\>/, '\1') end |
#destroy! ⇒ Object
Destroy this Message’s wav and txt files
56 57 58 59 60 61 62 |
# File 'lib/active_mailbox/message.rb', line 56 def destroy! [txt, wav].each do |file| File.unlink(file) end ensure @folder. = true end |
#duration ⇒ Object
The duration of this Message (in seconds)
88 89 90 |
# File 'lib/active_mailbox/message.rb', line 88 def duration @duration end |
#name ⇒ Object
The name of this message (ex: msg0001)
35 36 37 |
# File 'lib/active_mailbox/message.rb', line 35 def name @name ||= path.split('/').last end |
#number ⇒ Object
The number pulled from name
42 43 44 |
# File 'lib/active_mailbox/message.rb', line 42 def number @number ||= (num = name.match(/([0-9]{4})$/) and num[1].to_i) end |
#path ⇒ Object
Returns msgXXXX
109 110 111 |
# File 'lib/active_mailbox/message.rb', line 109 def path @msg ||= txt.sub('.txt', '') end |
#stale? ⇒ Boolean
Checks if this message is stale
116 117 118 |
# File 'lib/active_mailbox/message.rb', line 116 def stale? @stale ||= Time.now.to_i - .to_i > MaximumAge end |
#timestamp ⇒ Object
The time the Message was left
67 68 69 |
# File 'lib/active_mailbox/message.rb', line 67 def @timestamp ||= Time.parse(@origdate) end |
#txt ⇒ Object
The file path to this Message’s txt file
102 103 104 |
# File 'lib/active_mailbox/message.rb', line 102 def txt @info_file end |
#wav ⇒ Object
The file path to this Message’s wav file
95 96 97 |
# File 'lib/active_mailbox/message.rb', line 95 def wav @wav ||= @info_file.sub(/txt$/, 'wav') end |