2 #include <msp/strings/utils.h>
11 Header::Header(const Message &msg, const string &n):
13 raw_value(msg.get_header(name))
18 Header::Header(const string &n, const string &rv):
27 string::const_iterator i = raw_value.begin();
28 while(i!=raw_value.end())
32 string::const_iterator start = i;
33 for(; (i!=raw_value.end() && *i!=';' && *i!=','); ++i) ;
34 value.value = strip(string(start, i));
35 if(value.value.empty())
36 throw invalid_argument("Header::parse");
38 while(i!=raw_value.end() && *i!=',')
41 for(; (i!=raw_value.end() && *i!=';' && *i!=',' && *i!='='); ++i) ;
42 string pname = strip(string(start, i));
44 throw invalid_argument("Header::parse");
47 if(i!=raw_value.end() && *i=='=')
49 for(++i; (i!=raw_value.end() && isspace(*i)); ++i) ;
50 if(i==raw_value.end() || *i==';' || *i==',')
51 throw invalid_argument("Header::parse");
56 for(; (i!=raw_value.end() && *i!='"'); ++i) ;
57 if(i==raw_value.end())
58 throw invalid_argument("Header::parse");
60 pvalue = string(start, i);
62 for(++i; (i!=raw_value.end() && *i!=';' && *i!=','); ++i)
64 throw invalid_argument("Header::parse");
69 for(; (i!=raw_value.end() && *i!=';' && *i!=','); ++i) ;
70 pvalue = strip(string(start, i));
74 value.parameters[pname] = pvalue;
77 values.push_back(value);