Skip to content

Commit 3ea7a29

Browse files
committed
♻️ Extract line and literal parts of get_response
IMO, this refactoring makes `get_response` much easier to understand. Which will be useful, because I'm about to complicate it. 😉
1 parent 9c4ef33 commit 3ea7a29

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

lib/net/imap.rb

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3434,12 +3434,9 @@ def get_tagged_response(tag, cmd, timeout = nil)
34343434
def get_response
34353435
buff = String.new
34363436
while true
3437-
s = @sock.gets(CRLF)
3438-
break unless s
3439-
buff.concat(s)
3437+
get_response_line(buff) or break
34403438
if /\{(\d+)\}\r\n\z/n =~ buff
3441-
s = @sock.read($1.to_i)
3442-
buff.concat(s)
3439+
get_response_literal(buff, $1.to_i) or break
34433440
else
34443441
break
34453442
end
@@ -3449,6 +3446,16 @@ def get_response
34493446
@parser.parse(buff)
34503447
end
34513448

3449+
def get_response_line(buff)
3450+
line = @sock.gets(CRLF) or return
3451+
buff << line
3452+
end
3453+
3454+
def get_response_literal(buff, literal_size)
3455+
literal = @sock.read(literal_size) or return
3456+
buff << literal
3457+
end
3458+
34523459
#############################
34533460
# built-in response handlers
34543461

0 commit comments

Comments
 (0)