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 | |
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-- | include/opkele/types.h | 42 | ||||
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | lib/message.cc (renamed from lib/openid_message.cc) | 94 |
3 files changed, 73 insertions, 65 deletions
diff --git a/include/opkele/types.h b/include/opkele/types.h index ffb9afb..64f165c 100644 --- a/include/opkele/types.h +++ b/include/opkele/types.h @@ -120,3 +120,3 @@ namespace opkele { - class basic_openid_message { + class basic_message { public: @@ -127,7 +127,7 @@ namespace opkele { - basic_openid_message() { } - virtual ~basic_openid_message() { } - basic_openid_message(const basic_openid_message& x); - void copy_to(basic_openid_message& x) const; - void append_to(basic_openid_message& x) const; + basic_message() { } + virtual ~basic_message() { } + basic_message(const basic_message& x); + void copy_to(basic_message& x) const; + void append_to(basic_message& x) const; @@ -136,5 +136,2 @@ namespace opkele { - virtual bool has_ns(const string& uri) const; - virtual string get_ns(const string& uri) const; - virtual fields_iterator fields_begin() const = 0; @@ -142,5 +139,4 @@ namespace opkele { - virtual string append_query(const string& url,const char *pfx="openid.") const; - virtual string query_string(const char *pfx="openid.") const; - + virtual string append_query(const string& url,const char *pfx=0) const; + virtual string query_string(const char *pfx=0) const; @@ -150,2 +146,22 @@ namespace opkele { + }; + + class basic_openid_message : public basic_message { + public: + typedef list<string> fields_t; + typedef util::forward_iterator_proxy< + string,const string&,const string* + > fields_iterator; + + basic_openid_message() { } + basic_openid_message(const basic_openid_message& x); + + virtual bool has_ns(const string& uri) const; + virtual string get_ns(const string& uri) const; + + virtual string append_query(const string& url,const char *pfx="openid.") const { + return basic_message::append_query(url,pfx); } + virtual string query_string(const char *pfx="openid.") const { + return basic_message::query_string(pfx); } + virtual void from_keyvalues(const string& kv); @@ -166,4 +182,2 @@ namespace opkele { - void copy_to(basic_openid_message& x) const; - bool has_field(const string& n) const; diff --git a/lib/Makefile.am b/lib/Makefile.am index e8bfbf5..9b25b42 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -30,3 +30,3 @@ libopkele_la_SOURCES = \ basic_rp.cc prequeue_rp.cc \ - openid_message.cc \ + message.cc \ basic_op.cc verify_op.cc diff --git a/lib/openid_message.cc b/lib/message.cc index e244f43..78f20f4 100644 --- a/lib/openid_message.cc +++ b/lib/message.cc @@ -14,6 +14,6 @@ namespace opkele { 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) { } @@ -24,6 +24,6 @@ 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(); @@ -32,3 +32,3 @@ namespace opkele { } - 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(), @@ -37,35 +37,5 @@ namespace opkele { - 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; @@ -74,3 +44,3 @@ namespace opkele { - __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) { @@ -78,3 +48,3 @@ namespace opkele { } - __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) { @@ -100,3 +70,3 @@ 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; @@ -104,3 +74,3 @@ namespace opkele { } - string basic_openid_message::query_string(const char *pfx) const { + string basic_message::query_string(const char *pfx) const { string rv; @@ -109,9 +79,9 @@ namespace opkele { - 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"); @@ -119,2 +89,32 @@ namespace opkele { + 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) { @@ -242,8 +242,2 @@ 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 { |