Sha256: 507cdbd49dfa58362df076dd5bbcf75aa51d63220f5e57a8fe6e9bb6f262cd32
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
require "forwardable" module Imap::Backup module Account; end class FolderNotFound < StandardError; end class Account::Folder extend Forwardable REQUESTED_ATTRIBUTES = %w[RFC822 FLAGS INTERNALDATE].freeze attr_reader :connection attr_reader :name delegate imap: :connection def initialize(connection, name) @connection = connection @name = name @uid_validity = nil end # Deprecated: use #name def folder name end def exist? examine true rescue FolderNotFound false end def create return if exist? imap.create(name) end def uid_validity @uid_validity ||= begin examine imap.responses["UIDVALIDITY"][-1] end end def uids examine imap.uid_search(["ALL"]).sort rescue FolderNotFound [] end def fetch(uid) examine fetch_data_items = imap.uid_fetch([uid.to_i], REQUESTED_ATTRIBUTES) return nil if fetch_data_items.nil? fetch_data_item = fetch_data_items[0] attributes = fetch_data_item.attr return nil if !attributes.key?("RFC822") attributes["RFC822"].force_encoding("utf-8") attributes rescue FolderNotFound nil end def append(message) body = message.imap_body date = message.date&.to_time response = imap.append(name, body, nil, date) extract_uid(response) end private def examine imap.examine(name) rescue Net::IMAP::NoResponseError Imap::Backup.logger.warn "Folder '#{name}' does not exist" raise FolderNotFound, "Folder '#{name}' does not exist" end def extract_uid(response) @uid_validity, uid = response.data.code.data.split(" ").map(&:to_i) uid end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
imap-backup-2.1.1 | lib/imap/backup/account/folder.rb |