Class SOAP::MIMEMessage::Headers
In: lib/soap/mimemessage.rb
Parent: Hash

Methods

add   parse   parse   parse_line   parse_rhs   to_s  

Public Class methods

[Source]

    # File lib/soap/mimemessage.rb, line 46
46:     def self.parse(str)
47:       new.parse(str)
48:     end

Public Instance methods

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

     # File lib/soap/mimemessage.rb, line 101
101:     def to_s
102:       self.values.collect { |hdr|
103:         hdr.to_s
104:       }.join("\r\n")
105:     end

[Validate]