|
3 | 3 | require "date"
|
4 | 4 |
|
5 | 5 | require_relative "errors"
|
| 6 | +require_relative "data_lite" |
6 | 7 |
|
7 | 8 | module Net
|
8 | 9 | class IMAP < Protocol
|
@@ -119,80 +120,53 @@ def send_symbol_data(symbol)
|
119 | 120 | put_string("\\" + symbol.to_s)
|
120 | 121 | end
|
121 | 122 |
|
122 |
| - class RawData # :nodoc: |
| 123 | + CommandData = Data.define(:data) do # :nodoc: |
123 | 124 | def send_data(imap, tag)
|
124 |
| - imap.__send__(:put_string, @data) |
| 125 | + raise NoMethodError, "#{self.class} must implement #{__method__}" |
125 | 126 | end
|
126 | 127 |
|
127 | 128 | def validate
|
128 | 129 | end
|
129 |
| - |
130 |
| - private |
131 |
| - |
132 |
| - def initialize(data) |
133 |
| - @data = data |
134 |
| - end |
135 | 130 | end
|
136 | 131 |
|
137 |
| - class Atom # :nodoc: |
| 132 | + class RawData < CommandData # :nodoc: |
138 | 133 | def send_data(imap, tag)
|
139 |
| - imap.__send__(:put_string, @data) |
140 |
| - end |
141 |
| - |
142 |
| - def validate |
143 |
| - end |
144 |
| - |
145 |
| - private |
146 |
| - |
147 |
| - def initialize(data) |
148 |
| - @data = data |
| 134 | + imap.__send__(:put_string, data) |
149 | 135 | end
|
150 | 136 | end
|
151 | 137 |
|
152 |
| - class QuotedString # :nodoc: |
| 138 | + class Atom < CommandData # :nodoc: |
153 | 139 | def send_data(imap, tag)
|
154 |
| - imap.__send__(:send_quoted_string, @data) |
155 |
| - end |
156 |
| - |
157 |
| - def validate |
158 |
| - end |
159 |
| - |
160 |
| - private |
161 |
| - |
162 |
| - def initialize(data) |
163 |
| - @data = data |
| 140 | + imap.__send__(:put_string, data) |
164 | 141 | end
|
165 | 142 | end
|
166 | 143 |
|
167 |
| - class Literal # :nodoc: |
| 144 | + class QuotedString < CommandData # :nodoc: |
168 | 145 | def send_data(imap, tag)
|
169 |
| - imap.__send__(:send_literal, @data, tag) |
170 |
| - end |
171 |
| - |
172 |
| - def validate |
| 146 | + imap.__send__(:send_quoted_string, data) |
173 | 147 | end
|
| 148 | + end |
174 | 149 |
|
175 |
| - private |
176 |
| - |
177 |
| - def initialize(data) |
178 |
| - @data = data |
| 150 | + class Literal < CommandData # :nodoc: |
| 151 | + def send_data(imap, tag) |
| 152 | + imap.__send__(:send_literal, data, tag) |
179 | 153 | end
|
180 | 154 | end
|
181 | 155 |
|
182 | 156 | # *DEPRECATED*. Replaced by SequenceSet.
|
183 |
| - class MessageSet # :nodoc: |
| 157 | + class MessageSet < CommandData # :nodoc: |
184 | 158 | def send_data(imap, tag)
|
185 |
| - imap.__send__(:put_string, format_internal(@data)) |
| 159 | + imap.__send__(:put_string, format_internal(data)) |
186 | 160 | end
|
187 | 161 |
|
188 | 162 | def validate
|
189 |
| - validate_internal(@data) |
| 163 | + validate_internal(data) |
190 | 164 | end
|
191 | 165 |
|
192 | 166 | private
|
193 | 167 |
|
194 |
| - def initialize(data) |
195 |
| - @data = data |
| 168 | + def initialize(data:) |
| 169 | + super |
196 | 170 | warn("DEPRECATED: #{MessageSet} should be replaced with #{SequenceSet}.",
|
197 | 171 | uplevel: 1, category: :deprecated)
|
198 | 172 | begin
|
@@ -246,22 +220,18 @@ def validate_internal(data)
|
246 | 220 | end
|
247 | 221 | end
|
248 | 222 |
|
249 |
| - class ClientID # :nodoc: |
| 223 | + class ClientID < CommandData # :nodoc: |
250 | 224 |
|
251 | 225 | def send_data(imap, tag)
|
252 |
| - imap.__send__(:send_data, format_internal(@data), tag) |
| 226 | + imap.__send__(:send_data, format_internal(data), tag) |
253 | 227 | end
|
254 | 228 |
|
255 | 229 | def validate
|
256 |
| - validate_internal(@data) |
| 230 | + validate_internal(data) |
257 | 231 | end
|
258 | 232 |
|
259 | 233 | private
|
260 | 234 |
|
261 |
| - def initialize(data) |
262 |
| - @data = data |
263 |
| - end |
264 |
| - |
265 | 235 | def validate_internal(client_id)
|
266 | 236 | client_id.to_h.each do |k,v|
|
267 | 237 | unless StringFormatter.valid_string?(k)
|
|
0 commit comments