summaryrefslogtreecommitdiffabout
path: root/test/kingate_openid_message.h
Unidiff
Diffstat (limited to 'test/kingate_openid_message.h') (more/less context) (show whitespace changes)
-rw-r--r--test/kingate_openid_message.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/test/kingate_openid_message.h b/test/kingate_openid_message.h
index 37dcdfa..7029ff7 100644
--- a/test/kingate_openid_message.h
+++ b/test/kingate_openid_message.h
@@ -12,98 +12,98 @@ class join_iterator : public iterator<
12 bool cleanup() { 12 bool cleanup() {
13 bool rv = false; 13 bool rv = false;
14 while(!(ranges.empty() || ranges.front().first!=ranges.front().second)) { 14 while(!(ranges.empty() || ranges.front().first!=ranges.front().second)) {
15 ranges.pop_front(); rv = true; 15 ranges.pop_front(); rv = true;
16 } 16 }
17 return rv; 17 return rv;
18 } 18 }
19 19
20 join_iterator<IT>& add_range(const IT& b,const IT& e) { 20 join_iterator<IT>& add_range(const IT& b,const IT& e) {
21 ranges.push_back(typename ranges_t::value_type(b,e)); 21 ranges.push_back(typename ranges_t::value_type(b,e));
22 cleanup(); 22 cleanup();
23 return *this; 23 return *this;
24 } 24 }
25 25
26 bool operator==(const join_iterator<IT>& x) const { 26 bool operator==(const join_iterator<IT>& x) const {
27 return ranges==x.ranges; } 27 return ranges==x.ranges; }
28 bool operator!=(const join_iterator<IT>& x) const { 28 bool operator!=(const join_iterator<IT>& x) const {
29 return ranges!=x.ranges; } 29 return ranges!=x.ranges; }
30 30
31 typename IT::reference operator*() const { 31 typename IT::reference operator*() const {
32 assert(!ranges.empty()); 32 assert(!ranges.empty());
33 assert(ranges.front().first!=ranges.front().second); 33 assert(ranges.front().first!=ranges.front().second);
34 return *ranges.front().first; } 34 return *ranges.front().first; }
35 typename IT::pointer operator->() const { 35 typename IT::pointer operator->() const {
36 assert(!ranges.empty()); 36 assert(!ranges.empty());
37 assert(ranges.front().first!=ranges.front().second); 37 assert(ranges.front().first!=ranges.front().second);
38 return ranges.front().first.operator->(); } 38 return ranges.front().first.operator->(); }
39 39
40 join_iterator<IT>& operator++() { 40 join_iterator<IT>& operator++() {
41 cleanup(); 41 cleanup();
42 if(ranges.empty()) return *this; 42 if(ranges.empty()) return *this;
43 do { 43 do {
44 ++ranges.front().first; 44 ++ranges.front().first;
45 }while(cleanup() && !ranges.empty()); 45 }while(cleanup() && !ranges.empty());
46 return *this; 46 return *this;
47 } 47 }
48 join_iterator<IT> operator++(int) { 48 join_iterator<IT> operator++(int) {
49 join_iterator<IT> rv(*this); 49 join_iterator<IT> rv(*this);
50 ++(*this); return rv; } 50 ++(*this); return rv; }
51}; 51};
52 52
53template<typename IT> 53template<typename IT>
54class cut_prefix_filterator : public opkele::util::basic_filterator<IT> { 54class cut_prefix_filterator : public opkele::util::basic_filterator<IT> {
55 public: 55 public:
56 string pfx; 56 string pfx;
57 mutable string tmp; 57 mutable string tmp;
58 58
59 cut_prefix_filterator() { } 59 cut_prefix_filterator() { }
60 cut_prefix_filterator(const IT& bi,const IT&ei,const string& pfx) 60 cut_prefix_filterator(const IT& _bi,const IT&_ei,const string& p)
61 : opkele::util::basic_filterator<IT>(bi,ei), pfx(pfx) { 61 : opkele::util::basic_filterator<IT>(_bi,_ei), pfx(p) {
62 this->prepare(); 62 this->prepare();
63 } 63 }
64 64
65 bool is_interesting() const { 65 bool is_interesting() const {
66 return pfx.length()==0 || !strncmp(this->it->c_str(),pfx.c_str(),pfx.length()); 66 return pfx.length()==0 || !strncmp(this->it->c_str(),pfx.c_str(),pfx.length());
67 } 67 }
68 68
69 typename IT::reference operator*() const { 69 typename IT::reference operator*() const {
70 assert(!this->empty); 70 assert(!this->empty);
71 tmp = *this->it; tmp.erase(0,pfx.length()); 71 tmp = *this->it; tmp.erase(0,pfx.length());
72 return tmp; } 72 return tmp; }
73 typename IT::pointer operator->() const { 73 typename IT::pointer operator->() const {
74 assert(!this->empty); 74 assert(!this->empty);
75 return &this->operator*(); } 75 return &this->operator*(); }
76}; 76};
77 77
78class kingate_openid_message_t : public opkele::basic_openid_message { 78class kingate_openid_message_t : public opkele::basic_openid_message {
79 typedef join_iterator<kingate::cgi_gateway::params_t::const_iterator> jitterator; 79 typedef join_iterator<kingate::cgi_gateway::params_t::const_iterator> jitterator;
80 typedef opkele::util::map_keys_iterator< 80 typedef opkele::util::map_keys_iterator<
81 jitterator, 81 jitterator,
82 fields_iterator::value_type, 82 fields_iterator::value_type,
83 fields_iterator::reference, 83 fields_iterator::reference,
84 fields_iterator::pointer> keys_iterator; 84 fields_iterator::pointer> keys_iterator;
85 typedef cut_prefix_filterator<keys_iterator> pfilterator; 85 typedef cut_prefix_filterator<keys_iterator> pfilterator;
86 public: 86 public:
87 const kingate::cgi_gateway& gw; 87 const kingate::cgi_gateway& gw;
88 88
89 kingate_openid_message_t(const kingate::cgi_gateway& g) : gw(g) { } 89 kingate_openid_message_t(const kingate::cgi_gateway& g) : gw(g) { }
90 90
91 bool has_field(const string& n) const { 91 bool has_field(const string& n) const {
92 return gw.has_param("openid."+n); } 92 return gw.has_param("openid."+n); }
93 const string& get_field(const string& n) const try { 93 const string& get_field(const string& n) const try {
94 return gw.get_param("openid."+n); }catch(kingate::exception_notfound& nf) { 94 return gw.get_param("openid."+n); }catch(kingate::exception_notfound& nf) {
95 throw opkele::failed_lookup(OPKELE_CP_ nf.what()); } 95 throw opkele::failed_lookup(OPKELE_CP_ nf.what()); }
96 96
97 fields_iterator fields_begin() const { 97 fields_iterator fields_begin() const {
98 return 98 return
99 pfilterator( keys_iterator( 99 pfilterator( keys_iterator(
100 jitterator() 100 jitterator()
101 .add_range( gw.get.begin(), gw.get.end() ) 101 .add_range( gw.get.begin(), gw.get.end() )
102 .add_range( gw.post.begin(), gw.post.end() ), 102 .add_range( gw.post.begin(), gw.post.end() ),
103 jitterator() 103 jitterator()
104 ), keys_iterator(), "openid." ); 104 ), keys_iterator(), "openid." );
105 } 105 }
106 fields_iterator fields_end() const { 106 fields_iterator fields_end() const {
107 return pfilterator(); 107 return pfilterator();
108 } 108 }
109}; 109};