summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/types.h4
-rw-r--r--lib/openid_message.cc20
2 files changed, 13 insertions, 11 deletions
diff --git a/include/opkele/types.h b/include/opkele/types.h
index 1fab869..af7fb1a 100644
--- a/include/opkele/types.h
+++ b/include/opkele/types.h
@@ -138,10 +138,10 @@ namespace opkele {
virtual fields_iterator fields_begin() const = 0;
virtual fields_iterator fields_end() const = 0;
- virtual string append_query(const string& url) const;
- virtual string query_string() const;
+ virtual string append_query(const string& url,const char *pfx="openid.") const;
+ virtual string query_string(const char *pfx="openid.") const;
virtual void reset_fields();
virtual void set_field(const string& n,const string& v);
diff --git a/lib/openid_message.cc b/lib/openid_message.cc
index 75e59b3..4b9179b 100644
--- a/lib/openid_message.cc
+++ b/lib/openid_message.cc
@@ -66,15 +66,16 @@ namespace opkele {
public:
const basic_openid_message& om;
bool first;
string& rv;
+ const char *pfx;
- __om_query_builder(string& r,const basic_openid_message& m)
- : om(m), first(true), rv(r) {
+ __om_query_builder(const char *p,string& r,const basic_openid_message& m)
+ : om(m), first(true), rv(r), pfx(p) {
for_each(om.fields_begin(),om.fields_end(),*this);
}
- __om_query_builder(string& r,const basic_openid_message& m,const string& u)
- : om(m), first(true), rv(r) {
+ __om_query_builder(const char *p,string& r,const basic_openid_message& m,const string& u)
+ : om(m), first(true), rv(r), pfx(p) {
rv = u;
if(rv.find('?')==string::npos)
rv += '?';
else
@@ -86,21 +87,22 @@ namespace opkele {
if(first)
first = false;
else
rv += '&';
- rv += "openid."; rv+= f;
+ if(pfx) rv += pfx;
+ rv+= f;
rv += '=';
rv += util::url_encode(om.get_field(f));
}
};
- string basic_openid_message::append_query(const string& url) const {
+ string basic_openid_message::append_query(const string& url,const char *pfx) const {
string rv;
- return __om_query_builder(rv,*this,url).rv;
+ return __om_query_builder(pfx,rv,*this,url).rv;
}
- string basic_openid_message::query_string() const {
+ string basic_openid_message::query_string(const char *pfx) const {
string rv;
- return __om_query_builder(rv,*this).rv;
+ return __om_query_builder(pfx,rv,*this).rv;
}
void basic_openid_message::reset_fields() {
throw not_implemented(OPKELE_CP_ "reset_fields() not implemented");