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