Class: Voicemail::StoragePstore
- Inherits:
-
Object
- Object
- Voicemail::StoragePstore
- Defined in:
- lib/voicemail/storage_pstore.rb
Instance Attribute Summary collapse
-
#store ⇒ Object
Returns the value of attribute store.
Instance Method Summary collapse
- #archive_message(mailbox_id, message_id) ⇒ Object
- #change_pin_for_mailbox(mailbox_id, new_pin) ⇒ Object
- #count_new_messages(mailbox_id) ⇒ Object
- #count_saved_messages(mailbox_id) ⇒ Object
- #create_mailbox ⇒ Object
- #delete_greeting_from_mailbox(mailbox_id) ⇒ Object
- #delete_message(mailbox_id, message_id) ⇒ Object
- #get_mailbox(mailbox_id) ⇒ Object
-
#initialize ⇒ StoragePstore
constructor
A new instance of StoragePstore.
- #next_new_message(mailbox_id) ⇒ Object
- #next_saved_message(mailbox_id) ⇒ Object
- #save_greeting_for_mailbox(mailbox_id, recording_uri) ⇒ Object
- #save_recording(mailbox_id, from, recording_object) ⇒ Object
- #unarchive_message(mailbox_id, message_id) ⇒ Object
Constructor Details
#initialize ⇒ StoragePstore
Returns a new instance of StoragePstore.
7 8 9 10 |
# File 'lib/voicemail/storage_pstore.rb', line 7 def initialize @store = PStore.new config.storage.pstore_location setup_schema end |
Instance Attribute Details
#store ⇒ Object
Returns the value of attribute store.
5 6 7 |
# File 'lib/voicemail/storage_pstore.rb', line 5 def store @store end |
Instance Method Details
#archive_message(mailbox_id, message_id) ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/voicemail/storage_pstore.rb', line 42 def (mailbox_id, ) store.transaction do item = store[:recordings][mailbox_id].select { |i| i[:id] == } rec = item.first if rec store[:archived][mailbox_id] << rec store[:recordings][mailbox_id].delete(rec) end end end |
#change_pin_for_mailbox(mailbox_id, new_pin) ⇒ Object
83 84 85 86 87 |
# File 'lib/voicemail/storage_pstore.rb', line 83 def change_pin_for_mailbox(mailbox_id, new_pin) store.transaction do store[:mailboxes][mailbox_id][:pin] = new_pin end end |
#count_new_messages(mailbox_id) ⇒ Object
18 19 20 21 22 |
# File 'lib/voicemail/storage_pstore.rb', line 18 def (mailbox_id) store.transaction true do store[:recordings][mailbox_id].size end end |
#count_saved_messages(mailbox_id) ⇒ Object
24 25 26 27 28 |
# File 'lib/voicemail/storage_pstore.rb', line 24 def (mailbox_id) store.transaction true do store[:archived][mailbox_id].size end end |
#create_mailbox ⇒ Object
102 103 |
# File 'lib/voicemail/storage_pstore.rb', line 102 def create_mailbox end |
#delete_greeting_from_mailbox(mailbox_id) ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/voicemail/storage_pstore.rb', line 75 def delete_greeting_from_mailbox(mailbox_id) store.transaction do rec = store[:mailboxes][mailbox_id][:greeting_message] File.unlink rec if File.exists? rec store[:mailboxes][mailbox_id][:greeting_message] = nil end end |
#delete_message(mailbox_id, message_id) ⇒ Object
64 65 66 67 |
# File 'lib/voicemail/storage_pstore.rb', line 64 def (mailbox_id, ) File.unlink(rec[:uri]) if File.exists?(rec[:uri]) store[:recordings][mailbox_id].delete(rec) end |
#get_mailbox(mailbox_id) ⇒ Object
12 13 14 15 16 |
# File 'lib/voicemail/storage_pstore.rb', line 12 def get_mailbox(mailbox_id) store.transaction true do store[:mailboxes][mailbox_id] end end |
#next_new_message(mailbox_id) ⇒ Object
30 31 32 33 34 |
# File 'lib/voicemail/storage_pstore.rb', line 30 def (mailbox_id) store.transaction true do store[:recordings][mailbox_id].first end end |
#next_saved_message(mailbox_id) ⇒ Object
36 37 38 39 40 |
# File 'lib/voicemail/storage_pstore.rb', line 36 def (mailbox_id) store.transaction true do store[:archived][mailbox_id].first end end |
#save_greeting_for_mailbox(mailbox_id, recording_uri) ⇒ Object
69 70 71 72 73 |
# File 'lib/voicemail/storage_pstore.rb', line 69 def save_greeting_for_mailbox(mailbox_id, recording_uri) store.transaction do store[:mailboxes][mailbox_id][:greeting_message] = recording_uri end end |
#save_recording(mailbox_id, from, recording_object) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/voicemail/storage_pstore.rb', line 89 def save_recording(mailbox_id, from, recording_object) store.transaction do recording = { id: SecureRandom.uuid, from: from, received: Time.now, uri: recording_object.uri } store[:recordings][mailbox_id] << recording logger.info "Saving recording: #{recording.inspect}" end end |
#unarchive_message(mailbox_id, message_id) ⇒ Object
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/voicemail/storage_pstore.rb', line 53 def (mailbox_id, ) store.transaction do item = store[:archived][mailbox_id].select { |i| i[:id] == } rec = item.first if rec store[:recordings][mailbox_id] << rec store[:archived][mailbox_id].delete(rec) end end end |