Class: Net::IMAP::ESearchResult
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Inherits: | Object |
Defined in: | lib/net/imap/esearch_result.rb |
Overview
An “extended search” response (ESEARCH
). ESearchResult
should be returned (instead of SearchResult
) by #search, #uid_search, #sort, and #uid_sort under any of the following conditions:
-
Return options were specified for #search or #uid_search. The server must support a search extension which allows RFC4466
return
options, such asESEARCH
,PARTIAL
, orIMAP4rev2
. -
Return options were specified for #sort or #uid_sort. The server must support the
ESORT
extension [RFC5267].NOTE: IMAP#search and IMAP#uid_search do not support
ESORT
yet. -
The server supports
IMAP4rev2
but notIMAP4rev1
, orIMAP4rev2
has been enabled.IMAP4rev2
requiresESEARCH
results.
Note that some servers may claim to support a search extension which requires an ESEARCH
result, such as PARTIAL
, but still only return a SEARCH
result when return
options are specified.
Some search extensions may result in the server sending ESearchResult
responses after the initiating command has completed. Use #add_response_handler to handle these responses.
Class Method Summary
Instance Method Summary
-
#all ⇒ sequence set?
A SequenceSet containing all message sequence numbers or UIDs that satisfy the SEARCH criteria.
-
#count ⇒ Integer?
Returns the number of messages that satisfy the SEARCH criteria.
-
#max ⇒ Integer?
The highest message number/UID that satisfies the SEARCH criteria.
-
#min ⇒ Integer?
The lowest message number/UID that satisfies the SEARCH criteria.
-
#modseq ⇒ Integer?
The highest
mod-sequence
of all messages being returned. -
#partial ⇒ PartialResult?
A PartialResult containing a subset of the message sequence numbers or UIDs that satisfy the SEARCH criteria.
-
#to_a ⇒ Array of integers
When either #all or #partial contains a
SequenceSet
of message sequence numbers or UIDs, #to_a returns that set as an array of integers. - #uid?
Constructor Details
.new(tag: nil, uid: nil, data: nil) ⇒ ESearchResult
# File 'lib/net/imap/esearch_result.rb', line 29
def initialize(tag: nil, uid: nil, data: nil) tag => String | nil; tag = -tag if tag uid => true | false | nil; uid = !!uid data => Array | nil; data ||= []; data.freeze super end
Instance Method Details
#all ⇒ sequence
set
?
A SequenceSet containing all message sequence numbers or UIDs that satisfy the SEARCH criteria.
Returns nil
when the associated search command has no results, or when the ALL return option was not specified but other return options were.
Requires ESEARCH
[RFC4731] or IMAP4rev2
[RFC9051].
See also: #to_a
# File 'lib/net/imap/esearch_result.rb', line 110
def all; data.assoc("ALL")&.last end
#count ⇒ Integer
?
# File 'lib/net/imap/esearch_result.rb', line 121
def count; data.assoc("COUNT")&.last end
#max ⇒ Integer
?
# File 'lib/net/imap/esearch_result.rb', line 96
def max; data.assoc("MAX")&.last end
#min ⇒ Integer
?
# File 'lib/net/imap/esearch_result.rb', line 85
def min; data.assoc("MIN")&.last end
#modseq ⇒ Integer
?
The highest mod-sequence
of all messages being returned.
Returns nil
when the associated search command has no results, or when the MODSEQ
search criterion wasn’t specified.
Note that there is no search return
option for MODSEQ
. It will be returned whenever the CONDSTORE
extension has been enabled. Using the MODSEQ
search criteria will implicitly enable CONDSTORE
.
# File 'lib/net/imap/esearch_result.rb', line 136
def modseq; data.assoc("MODSEQ")&.last end
#partial ⇒ PartialResult?
# File 'lib/net/imap/esearch_result.rb', line 176
def partial; data.assoc("PARTIAL")&.last end
#to_a ⇒ Array
of
integers
When either #all or #partial contains a SequenceSet
of message sequence numbers or UIDs, to_a
returns that set as an array of integers.
When both #all and #partial are nil
, either because the server returned no results or because ALL and PARTIAL
were not included in the Net::IMAP#search RETURN
options, #to_a
returns an empty array.
Note that SearchResult
also implements to_a
, so it can be used without checking if the server returned SEARCH
or ESEARCH
data.
#uid?
[ GitHub ]# File 'lib/net/imap/esearch_result.rb', line 63
alias uid? uid