From ecb6a585d1fc3705836dc896fe348b970101e8d3 Mon Sep 17 00:00:00 2001 From: Michael Krelin Date: Mon, 03 Mar 2008 17:16:32 +0000 Subject: renamed basic_message to basic_fields since oauth fieldsets aren't really messages Signed-off-by: Michael Krelin --- (limited to 'lib') diff --git a/lib/Makefile.am b/lib/Makefile.am index 9b25b42..20d15b8 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -28,7 +28,7 @@ libopkele_la_SOURCES = \ curl.cc expat.cc \ discovery.cc \ basic_rp.cc prequeue_rp.cc \ - message.cc \ + fields.cc message.cc \ basic_op.cc verify_op.cc libopkele_la_LDFLAGS = \ -version-info 2:0:0 diff --git a/lib/fields.cc b/lib/fields.cc new file mode 100644 index 0000000..d494098 --- a/dev/null +++ b/lib/fields.cc @@ -0,0 +1,86 @@ +#include +#include +#include + +namespace opkele { + using std::unary_function; + + struct __om_copier : public unary_function { + public: + const basic_fields& from; + basic_fields& to; + + __om_copier(basic_fields& t,const basic_fields& f) + : from(f), to(t) { } + + result_type operator()(argument_type f) { + to.set_field(f,from.get_field(f)); } + }; + + basic_fields::basic_fields(const basic_fields& x) { + x.copy_to(*this); + } + void basic_fields::copy_to(basic_fields& x) const { + x.reset_fields(); + for_each(fields_begin(),fields_end(), + __om_copier(x,*this) ); + } + void basic_fields::append_to(basic_fields& x) const { + for_each(fields_begin(),fields_end(), + __om_copier(x,*this) ); + } + + struct __om_query_builder : public unary_function { + public: + const basic_fields& om; + bool first; + string& rv; + const char *pfx; + + __om_query_builder(const char *p,string& r,const basic_fields& 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_fields& m,const string& u) + : om(m), first(true), rv(r), pfx(p) { + rv = u; + if(rv.find('?')==string::npos) + rv += '?'; + else + first = false; + for_each(om.fields_begin(),om.fields_end(),*this); + } + + result_type operator()(argument_type f) { + if(first) + first = false; + else + rv += '&'; + if(pfx) rv += pfx; + rv+= f; + rv += '='; + rv += util::url_encode(om.get_field(f)); + } + }; + + string basic_fields::append_query(const string& url,const char *pfx) const { + string rv; + return __om_query_builder(pfx,rv,*this,url).rv; + } + string basic_fields::query_string(const char *pfx) const { + string rv; + return __om_query_builder(pfx,rv,*this).rv; + } + + void basic_fields::reset_fields() { + throw not_implemented(OPKELE_CP_ "reset_fields() not implemented"); + } + void basic_fields::set_field(const string&,const string&) { + throw not_implemented(OPKELE_CP_ "set_field() not implemented"); + } + void basic_fields::reset_field(const string&) { + throw not_implemented(OPKELE_CP_ "reset_field() not implemented"); + } + + +} diff --git a/lib/message.cc b/lib/message.cc index 78f20f4..b2324b7 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -10,82 +10,6 @@ namespace opkele { using std::input_iterator_tag; using std::unary_function; - struct __om_copier : public unary_function { - public: - const basic_message& from; - basic_message& to; - - __om_copier(basic_message& t,const basic_message& f) - : from(f), to(t) { } - - result_type operator()(argument_type f) { - to.set_field(f,from.get_field(f)); } - }; - - basic_message::basic_message(const basic_message& x) { - x.copy_to(*this); - } - void basic_message::copy_to(basic_message& x) const { - x.reset_fields(); - for_each(fields_begin(),fields_end(), - __om_copier(x,*this) ); - } - void basic_message::append_to(basic_message& x) const { - for_each(fields_begin(),fields_end(), - __om_copier(x,*this) ); - } - - struct __om_query_builder : public unary_function { - public: - const basic_message& om; - bool first; - string& rv; - const char *pfx; - - __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_message& m,const string& u) - : om(m), first(true), rv(r), pfx(p) { - rv = u; - if(rv.find('?')==string::npos) - rv += '?'; - else - first = false; - for_each(om.fields_begin(),om.fields_end(),*this); - } - - result_type operator()(argument_type f) { - if(first) - first = false; - else - rv += '&'; - if(pfx) rv += pfx; - rv+= f; - rv += '='; - rv += util::url_encode(om.get_field(f)); - } - }; - - 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_message::query_string(const char *pfx) const { - string rv; - return __om_query_builder(pfx,rv,*this).rv; - } - - void basic_message::reset_fields() { - throw not_implemented(OPKELE_CP_ "reset_fields() not implemented"); - } - void basic_message::set_field(const string&,const string&) { - throw not_implemented(OPKELE_CP_ "set_field() not implemented"); - } - void basic_message::reset_field(const string&) { - throw not_implemented(OPKELE_CP_ "reset_field() not implemented"); - } struct __om_ns_finder : public unary_function { public: @@ -129,7 +53,7 @@ namespace opkele { if(nl==string::npos) throw bad_input(OPKELE_CP_ "malformed input"); if(nl>co) - insert(value_type(kv.substr(p,co-p),kv.substr(co+1,nl-co-1))); + set_field(kv.substr(p,co-p),kv.substr(co+1,nl-co-1)); p = nl+1; #else /* POSTELS_LAW */ string::size_type lb = kv.find_first_of("\r\n",co+1); -- cgit v0.9.0.2