author | Michael Krelin <hacker@klever.net> | 2008-03-03 15:57:15 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2008-03-03 15:57:15 (UTC) |
commit | c28479399ef0fedeb6bf14ec665bb4c427654356 (patch) (side-by-side diff) | |
tree | ff1dfe84a54f717772bdb6233a5cbfedb57788d1 /lib | |
parent | 0182b9dee269f1a8f3fc0794bfdf4a143fa1b5be (diff) | |
download | libopkele-c28479399ef0fedeb6bf14ec665bb4c427654356.zip libopkele-c28479399ef0fedeb6bf14ec665bb4c427654356.tar.gz libopkele-c28479399ef0fedeb6bf14ec665bb4c427654356.tar.bz2 |
introduced base_message class as a base for basic_openid_message
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | lib/message.cc (renamed from lib/openid_message.cc) | 94 |
2 files changed, 45 insertions, 51 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index e8bfbf5..9b25b42 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -29,5 +29,5 @@ libopkele_la_SOURCES = \ discovery.cc \ basic_rp.cc prequeue_rp.cc \ - openid_message.cc \ + message.cc \ basic_op.cc verify_op.cc libopkele_la_LDFLAGS = \ diff --git a/lib/openid_message.cc b/lib/message.cc index e244f43..78f20f4 100644 --- a/lib/openid_message.cc +++ b/lib/message.cc @@ -13,8 +13,8 @@ namespace opkele { struct __om_copier : public unary_function<const string&,void> { public: - const basic_openid_message& from; - basic_openid_message& to; + const basic_message& from; + basic_message& to; - __om_copier(basic_openid_message& t,const basic_openid_message& f) + __om_copier(basic_message& t,const basic_message& f) : from(f), to(t) { } @@ -23,59 +23,29 @@ namespace opkele { }; - basic_openid_message::basic_openid_message(const basic_openid_message& x) { + basic_message::basic_message(const basic_message& x) { x.copy_to(*this); } - void basic_openid_message::copy_to(basic_openid_message& x) const { + void basic_message::copy_to(basic_message& x) const { x.reset_fields(); for_each(fields_begin(),fields_end(), __om_copier(x,*this) ); } - void basic_openid_message::append_to(basic_openid_message& x) const { + void basic_message::append_to(basic_message& x) const { for_each(fields_begin(),fields_end(), __om_copier(x,*this) ); } - struct __om_ns_finder : public unary_function<const string&,bool> { - public: - const basic_openid_message& om; - const string& uri; - - __om_ns_finder(const basic_openid_message& m, - const string& u) : om(m), uri(u) { } - - result_type operator()(argument_type f) { - return - (!strncmp(f.c_str(),"ns.",sizeof("ns.")-1)) - && om.get_field(f)==uri ; - } - }; - - bool basic_openid_message::has_ns(const string& uri) const { - fields_iterator ei = fields_end(); - fields_iterator i = find_if(fields_begin(),fields_end(), - __om_ns_finder(*this,uri)); - return !(i==ei); - } - string basic_openid_message::get_ns(const string& uri) const { - fields_iterator ei = fields_end(); - fields_iterator i = find_if(fields_begin(),fields_end(), - __om_ns_finder(*this,uri)); - if(i==ei) - throw failed_lookup(OPKELE_CP_ string("failed to find namespace ")+uri); - return i->substr(3); - } - struct __om_query_builder : public unary_function<const string&,void> { public: - const basic_openid_message& om; + const basic_message& om; bool first; string& rv; const char *pfx; - __om_query_builder(const char *p,string& r,const basic_openid_message& m) + __om_query_builder(const char *p,string& r,const basic_message& m) : om(m), first(true), rv(r), pfx(p) { for_each(om.fields_begin(),om.fields_end(),*this); } - __om_query_builder(const char *p,string& r,const basic_openid_message& m,const string& u) + __om_query_builder(const char *p,string& r,const basic_message& m,const string& u) : om(m), first(true), rv(r), pfx(p) { rv = u; @@ -99,23 +69,53 @@ namespace opkele { }; - string basic_openid_message::append_query(const string& url,const char *pfx) const { + string basic_message::append_query(const string& url,const char *pfx) const { string rv; return __om_query_builder(pfx,rv,*this,url).rv; } - string basic_openid_message::query_string(const char *pfx) const { + string basic_message::query_string(const char *pfx) const { string rv; return __om_query_builder(pfx,rv,*this).rv; } - void basic_openid_message::reset_fields() { + void basic_message::reset_fields() { throw not_implemented(OPKELE_CP_ "reset_fields() not implemented"); } - void basic_openid_message::set_field(const string&,const string&) { + void basic_message::set_field(const string&,const string&) { throw not_implemented(OPKELE_CP_ "set_field() not implemented"); } - void basic_openid_message::reset_field(const string&) { + void basic_message::reset_field(const string&) { throw not_implemented(OPKELE_CP_ "reset_field() not implemented"); } + struct __om_ns_finder : public unary_function<const string&,bool> { + public: + const basic_openid_message& om; + const string& uri; + + __om_ns_finder(const basic_openid_message& m, + const string& u) : om(m), uri(u) { } + + result_type operator()(argument_type f) { + return + (!strncmp(f.c_str(),"ns.",sizeof("ns.")-1)) + && om.get_field(f)==uri ; + } + }; + + bool basic_openid_message::has_ns(const string& uri) const { + fields_iterator ei = fields_end(); + fields_iterator i = find_if(fields_begin(),fields_end(), + __om_ns_finder(*this,uri)); + return !(i==ei); + } + string basic_openid_message::get_ns(const string& uri) const { + fields_iterator ei = fields_end(); + fields_iterator i = find_if(fields_begin(),fields_end(), + __om_ns_finder(*this,uri)); + if(i==ei) + throw failed_lookup(OPKELE_CP_ string("failed to find namespace ")+uri); + return i->substr(3); + } + void basic_openid_message::from_keyvalues(const string& kv) { reset_fields(); @@ -241,10 +241,4 @@ namespace opkele { } - void openid_message_t::copy_to(basic_openid_message& x) const { - x.reset_fields(); - for(const_iterator i=begin();i!=end();++i) - x.set_field(i->first,i->second); - } - bool openid_message_t::has_field(const string& n) const { return find(n)!=end(); |