summaryrefslogtreecommitdiffabout
path: root/include/opkele/types.h
Side-by-side diff
Diffstat (limited to 'include/opkele/types.h') (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/types.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/opkele/types.h b/include/opkele/types.h
index f63bf5d..4471e6a 100644
--- a/include/opkele/types.h
+++ b/include/opkele/types.h
@@ -122,48 +122,66 @@ namespace opkele {
public:
typedef util::forward_iterator_proxy<
string,const string&,const string*
> fields_iterator;
basic_fields() { }
virtual ~basic_fields() { }
basic_fields(const basic_fields& x);
void copy_to(basic_fields& x) const;
void append_to(basic_fields& x) const;
virtual bool has_field(const string& n) const = 0;
virtual const string& get_field(const string& n) const = 0;
virtual fields_iterator fields_begin() const = 0;
virtual fields_iterator fields_end() const = 0;
virtual string append_query(const string& url,const char *pfx=0) const;
virtual string query_string(const char *pfx=0) const;
virtual void reset_fields();
virtual void set_field(const string& n,const string& v);
virtual void reset_field(const string& n);
+ void from_query(const string& qs);
+ };
+
+ class fields_t : public basic_fields, public map<string,string> {
+ public:
+ fields_t() { }
+ fields_t(const basic_fields& x)
+ : basic_fields(x) { }
+
+ bool has_field(const string& n) const;
+ const string& get_field(const string& n) const;
+
+ virtual fields_iterator fields_begin() const;
+ virtual fields_iterator fields_end() const;
+
+ virtual void reset_fields();
+ virtual void set_field(const string& n,const string& v);
+ virtual void reset_field(const string& n);
};
class basic_openid_message : public basic_fields {
public:
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_fields::append_query(url,pfx); }
virtual string query_string(const char *pfx="openid.") const {
return basic_fields::query_string(pfx); }
virtual void from_keyvalues(const string& kv);
virtual void to_keyvalues(ostream& o) const;
virtual void to_htmlhiddens(ostream& o,const char* pfx=0) const;
void add_to_signed(const string& fields);
string find_ns(const string& uri,const char *pfx) const;
string allocate_ns(const string& uri,const char *pfx);