Class: SOAP::MIMEMessage::Headers
Class Method Summary collapse
Instance Method Summary collapse
- #add(key, value) ⇒ Object
- #parse(str) ⇒ Object
- #parse_line(line) ⇒ Object
- #parse_rhs(str) ⇒ Object
- #to_s ⇒ Object
Methods inherited from Hash
Class Method Details
.parse(str) ⇒ Object
46 47 48 |
# File 'lib/soap/mimemessage.rb', line 46 def self.parse(str) new.parse(str) end |
Instance Method Details
#add(key, value) ⇒ Object
93 94 95 96 97 98 99 |
# File 'lib/soap/mimemessage.rb', line 93 def add(key, value) if key != nil and value != nil header = parse_rhs(value) header.key = key self[key.downcase] = header end end |
#parse(str) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/soap/mimemessage.rb', line 50 def parse(str) header_cache = nil str.each do |line| case line when /^\A[^\: \t]+:\s*.+$/ parse_line(header_cache) if header_cache header_cache = line.sub(/\r?\n\z/, '') when /^\A\s+(.*)$/ # a continuous line at the beginning line crashes here. header_cache << line else raise RuntimeError.new("unexpected header: #{line.inspect}") end end parse_line(header_cache) if header_cache self end |
#parse_line(line) ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/soap/mimemessage.rb', line 68 def parse_line(line) if /^\A([^\: \t]+):\s*(.+)\z/ =~ line header = parse_rhs($2.strip) header.key = $1.strip self[header.key.downcase] = header else raise RuntimeError.new("unexpected header line: #{line.inspect}") end end |
#parse_rhs(str) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/soap/mimemessage.rb', line 78 def parse_rhs(str) a = str.split(/;+\s+/) header = Header.new header.str = str header.root = a.shift a.each do |pair| if pair =~ /(\w+)\s*=\s*"?([^"]+)"?/ header[$1.downcase] = $2 else raise RuntimeError.new("unexpected header component: #{pair.inspect}") end end header end |
#to_s ⇒ Object
101 102 103 104 105 |
# File 'lib/soap/mimemessage.rb', line 101 def to_s self.values.collect { |hdr| hdr.to_s }.join("\r\n") end |