Class: Imap::Backup::Serializer::Files
- Inherits:
-
Object
- Object
- Imap::Backup::Serializer::Files
- Extended by:
- Forwardable
- Defined in:
- lib/imap/backup/serializer/files.rb,
lib/imap/backup/serializer/files/path.rb
Overview
Provides memoized file helpers for Serializer
Defined Under Namespace
Classes: Path
Instance Attribute Summary collapse
-
#files_path ⇒ Object
readonly
Returns the value of attribute files_path.
Instance Method Summary collapse
-
#check_integrity! ⇒ void
Checks that the folder’s data is stored correctly.
-
#delete ⇒ void
Deletes the serialized data.
-
#each_message(required_uids = nil, &block) ⇒ Enumerator, void
Enumerates over a series of messages.
-
#get(uid) ⇒ Serializer::Message
Get message metadata.
- #imap ⇒ Object
-
#initialize(files_path:) ⇒ Files
constructor
A new instance of Files.
- #mbox ⇒ Object
- #messages ⇒ Array<Hash>
-
#reload ⇒ void
Forces a reload of the serialized files.
-
#rename(new_files_path) ⇒ void
Renames the serialized files.
-
#uid_validity ⇒ Integer
The UID validity for the folder.
- #uid_validity=(value) ⇒ Object
-
#uids ⇒ Array<Integer>
The uids of all messages.
-
#update_uid(old, new) ⇒ void
Update a message’s metadata, replacing its UID.
-
#validate! ⇒ Boolean
Checks that the metadata files are valid, or deletes any existing files if the pair are not valid.
Constructor Details
#initialize(files_path:) ⇒ Files
Returns a new instance of Files.
20 21 22 23 24 25 26 |
# File 'lib/imap/backup/serializer/files.rb', line 20 def initialize(files_path:) @files_path = files_path @directory_ensured = false @imap = nil @mbox = nil @sanitized_files_path = nil end |
Instance Attribute Details
#files_path ⇒ Object (readonly)
Returns the value of attribute files_path.
17 18 19 |
# File 'lib/imap/backup/serializer/files.rb', line 17 def files_path @files_path end |
Instance Method Details
#check_integrity! ⇒ void
This method returns an undefined value.
Checks that the folder’s data is stored correctly
44 45 46 |
# File 'lib/imap/backup/serializer/files.rb', line 44 def check_integrity! Serializer::IntegrityChecker.new(imap: imap, mbox: mbox).run end |
#delete ⇒ void
This method returns an undefined value.
Deletes the serialized data
50 51 52 53 54 |
# File 'lib/imap/backup/serializer/files.rb', line 50 def delete imap.delete mbox.delete reload end |
#each_message(required_uids = nil, &block) ⇒ Enumerator, void
Enumerates over a series of messages. When called without a block, returns an Enumerator
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/imap/backup/serializer/files.rb', line 60 def (required_uids = nil, &block) return enum_for(:each_message, required_uids) if !block required_uids ||= uids validate! enumerator = Serializer::MessageEnumerator.new(imap: imap) enumerator.run(uids: required_uids, &block) end |
#get(uid) ⇒ Serializer::Message
Get message metadata
74 75 76 77 |
# File 'lib/imap/backup/serializer/files.rb', line 74 def get(uid) validate! imap.get(uid) end |
#imap ⇒ Object
28 29 30 31 32 33 |
# File 'lib/imap/backup/serializer/files.rb', line 28 def imap @imap ||= begin ensure_directory Serializer::Imap.new(files_path: sanitized_files_path) end end |
#mbox ⇒ Object
35 36 37 38 39 40 |
# File 'lib/imap/backup/serializer/files.rb', line 35 def mbox @mbox ||= begin ensure_directory Serializer::Mbox.new(files_path: sanitized_files_path) end end |
#messages ⇒ Array<Hash>
80 81 82 83 |
# File 'lib/imap/backup/serializer/files.rb', line 80 def validate! imap. end |
#reload ⇒ void
This method returns an undefined value.
Forces a reload of the serialized files
87 88 89 90 |
# File 'lib/imap/backup/serializer/files.rb', line 87 def reload @imap = nil @mbox = nil end |
#rename(new_files_path) ⇒ void
This method returns an undefined value.
Renames the serialized files
95 96 97 98 99 |
# File 'lib/imap/backup/serializer/files.rb', line 95 def rename(new_files_path) Serializer::DirectoryMaker.new(files_path: new_files_path).run mbox.rename new_files_path imap.rename new_files_path end |
#uid_validity ⇒ Integer
Returns the UID validity for the folder.
102 103 104 105 |
# File 'lib/imap/backup/serializer/files.rb', line 102 def uid_validity validate! imap.uid_validity end |
#uid_validity=(value) ⇒ Object
107 108 109 110 111 |
# File 'lib/imap/backup/serializer/files.rb', line 107 def uid_validity=(value) validate! imap.uid_validity = value mbox.touch end |
#uids ⇒ Array<Integer>
Returns The uids of all messages.
114 115 116 117 |
# File 'lib/imap/backup/serializer/files.rb', line 114 def uids validate! imap.uids end |
#update_uid(old, new) ⇒ void
This method returns an undefined value.
Update a message’s metadata, replacing its UID
123 124 125 126 |
# File 'lib/imap/backup/serializer/files.rb', line 123 def update_uid(old, new) validate! imap.update_uid(old, new) end |
#validate! ⇒ Boolean
Checks that the metadata files are valid, or deletes any existing files if the pair are not valid.
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/imap/backup/serializer/files.rb', line 131 def validate! return true if @validated imap_valid = imap.valid? mbox_valid = mbox.valid? if imap_valid && mbox_valid @validated = true return true end warn_imap = !imap_valid && imap.exist? Logger.logger.info("Metadata file '#{imap.pathname}' is invalid") if warn_imap delete false end |