Class: Net::IMAP::RawData
Do not use. This class is for internal use only.
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
CommandData,
Data
|
|
|
Instance Chain:
self,
CommandData,
Data
|
|
| Inherits: |
Net::IMAP::CommandData
|
| Defined in: | lib/net/imap/command_data.rb |
Class Method Summary
Instance Attribute Summary
CommandData - Inherited
Instance Method Summary
- #send_data(imap, tag)
- #validate
- #extract_literal(data, binary:, bytesize:, non_sync:) private
- #split_parts(data) private
CommandData - Inherited
Constructor Details
.new(data:) ⇒ RawData
# File 'lib/net/imap/command_data.rb', line 198
def initialize(data:) data = split_parts(data) super validate end
Instance Method Details
#extract_literal(data, binary:, bytesize:, non_sync:) (private)
[ GitHub ]# File 'lib/net/imap/command_data.rb', line 229
def extract_literal(data, binary:, bytesize:, non_sync:) if data.bytesize < bytesize raise DataFormatError, "Too few bytes in string for literal, " \ "expected: %s, remaining: %s" % [bytesize, data.bytesize] end literal = data.byteslice(0, bytesize) (binary ? Literal8 : Literal).new(data: literal, non_sync:) end
#send_data(imap, tag)
[ GitHub ]# File 'lib/net/imap/command_data.rb', line 204
def send_data(imap, tag) = data.each do _1.send_data(imap, tag) end
#split_parts(data) (private)
[ GitHub ]# File 'lib/net/imap/command_data.rb', line 215
def split_parts(data) data = data.b # dups and ensures BINARY encoding parts = [] while data.match(/(~)?\{(0|[1-9]\d*)(\+)?\}\r\n/n) text, binary, bytesize, non_sync, data = $`, !!$1, $2, !!$3, $' bytesize = NumValidator.coerce_number64 bytesize parts << RawText[text] unless text.empty? parts << extract_literal(data, binary:, bytesize:, non_sync:) data.bytesplice(0, bytesize, "") end parts << RawText[data] unless data.empty? parts end
#validate
[ GitHub ]# File 'lib/net/imap/command_data.rb', line 206
def validate return unless data.last in RawText(data: text) if text.rindex(/~?\{[1-9]\d*\+?\}\z/n) raise DataFormatError, "RawData cannot end with literal continuation" end end