Skip to content

Commit b2c1e23

Browse files
committed
imapclient: remove SeqNum special case when encoding SEARCH
1 parent 7578263 commit b2c1e23

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

imapclient/search.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -128,87 +128,87 @@ func writeSearchKey(enc *imapwire.Encoder, criteria *imap.SearchCriteria) {
128128
enc.Special('(')
129129

130130
firstItem := true
131-
encodeItem := func(s string) *imapwire.Encoder {
131+
encodeItem := func() *imapwire.Encoder {
132132
if !firstItem {
133133
enc.SP()
134134
}
135135
firstItem = false
136-
return enc.Atom(s)
136+
return enc
137137
}
138138

139139
for _, seqSet := range criteria.SeqNum {
140-
encodeItem(seqSet.String())
140+
encodeItem().SeqSet(seqSet)
141141
}
142142
for _, seqSet := range criteria.UID {
143-
encodeItem("UID").SP().SeqSet(seqSet)
143+
encodeItem().Atom("UID").SP().SeqSet(seqSet)
144144
}
145145

146146
if !criteria.Since.IsZero() && !criteria.Before.IsZero() && criteria.Before.Sub(criteria.Since) == 24*time.Hour {
147-
encodeItem("ON").SP().String(criteria.Since.Format(internal.DateLayout))
147+
encodeItem().Atom("ON").SP().String(criteria.Since.Format(internal.DateLayout))
148148
} else {
149149
if !criteria.Since.IsZero() {
150-
encodeItem("SINCE").SP().String(criteria.Since.Format(internal.DateLayout))
150+
encodeItem().Atom("SINCE").SP().String(criteria.Since.Format(internal.DateLayout))
151151
}
152152
if !criteria.Before.IsZero() {
153-
encodeItem("BEFORE").SP().String(criteria.Before.Format(internal.DateLayout))
153+
encodeItem().Atom("BEFORE").SP().String(criteria.Before.Format(internal.DateLayout))
154154
}
155155
}
156156
if !criteria.SentSince.IsZero() && !criteria.SentBefore.IsZero() && criteria.SentBefore.Sub(criteria.SentSince) == 24*time.Hour {
157-
encodeItem("SENTON").SP().String(criteria.SentSince.Format(internal.DateLayout))
157+
encodeItem().Atom("SENTON").SP().String(criteria.SentSince.Format(internal.DateLayout))
158158
} else {
159159
if !criteria.SentSince.IsZero() {
160-
encodeItem("SENTSINCE").SP().String(criteria.SentSince.Format(internal.DateLayout))
160+
encodeItem().Atom("SENTSINCE").SP().String(criteria.SentSince.Format(internal.DateLayout))
161161
}
162162
if !criteria.SentBefore.IsZero() {
163-
encodeItem("SENTBEFORE").SP().String(criteria.SentBefore.Format(internal.DateLayout))
163+
encodeItem().Atom("SENTBEFORE").SP().String(criteria.SentBefore.Format(internal.DateLayout))
164164
}
165165
}
166166

167167
for _, kv := range criteria.Header {
168168
switch k := strings.ToUpper(kv.Key); k {
169169
case "BCC", "CC", "FROM", "SUBJECT", "TO":
170-
encodeItem(k)
170+
encodeItem().Atom(k)
171171
default:
172-
encodeItem("HEADER").SP().String(kv.Key)
172+
encodeItem().Atom("HEADER").SP().String(kv.Key)
173173
}
174174
enc.SP().String(kv.Value)
175175
}
176176

177177
for _, s := range criteria.Body {
178-
encodeItem("BODY").SP().String(s)
178+
encodeItem().Atom("BODY").SP().String(s)
179179
}
180180
for _, s := range criteria.Text {
181-
encodeItem("TEXT").SP().String(s)
181+
encodeItem().Atom("TEXT").SP().String(s)
182182
}
183183

184184
for _, flag := range criteria.Flag {
185185
if k := flagSearchKey(flag); k != "" {
186-
encodeItem(k)
186+
encodeItem().Atom(k)
187187
} else {
188-
encodeItem("KEYWORD").SP().Flag(flag)
188+
encodeItem().Atom("KEYWORD").SP().Flag(flag)
189189
}
190190
}
191191
for _, flag := range criteria.NotFlag {
192192
if k := flagSearchKey(flag); k != "" {
193-
encodeItem("UN" + k)
193+
encodeItem().Atom("UN" + k)
194194
} else {
195-
encodeItem("UNKEYWORD").SP().Flag(flag)
195+
encodeItem().Atom("UNKEYWORD").SP().Flag(flag)
196196
}
197197
}
198198

199199
if criteria.Larger > 0 {
200-
encodeItem("LARGER").SP().Number64(criteria.Larger)
200+
encodeItem().Atom("LARGER").SP().Number64(criteria.Larger)
201201
}
202202
if criteria.Smaller > 0 {
203-
encodeItem("SMALLER").SP().Number64(criteria.Smaller)
203+
encodeItem().Atom("SMALLER").SP().Number64(criteria.Smaller)
204204
}
205205

206206
for _, not := range criteria.Not {
207-
encodeItem("NOT").SP()
207+
encodeItem().Atom("NOT").SP()
208208
writeSearchKey(enc, &not)
209209
}
210210
for _, or := range criteria.Or {
211-
encodeItem("OR").SP()
211+
encodeItem().Atom("OR").SP()
212212
writeSearchKey(enc, &or[0])
213213
enc.SP()
214214
writeSearchKey(enc, &or[1])

0 commit comments

Comments
 (0)