author | Michael Krelin <hacker@klever.net> | 2008-01-31 23:54:44 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2008-01-31 23:54:44 (UTC) |
commit | 61e6da06804f98d0cbb9d27eeb335351b3e05d4d (patch) (unidiff) | |
tree | 51469cb82808da57cb696a858d65840b9b5d02dd /test | |
parent | 0a90a7791bd329afd8955df78b8ae358adc897a8 (diff) | |
download | libopkele-61e6da06804f98d0cbb9d27eeb335351b3e05d4d.zip libopkele-61e6da06804f98d0cbb9d27eeb335351b3e05d4d.tar.gz libopkele-61e6da06804f98d0cbb9d27eeb335351b3e05d4d.tar.bz2 |
fixed kingate_openid_message code in test area
rethrow kingate's notfound exceptions as opkele ones.
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | test/kingate_openid_message.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/test/kingate_openid_message.h b/test/kingate_openid_message.h index b3a2c9d..37dcdfa 100644 --- a/test/kingate_openid_message.h +++ b/test/kingate_openid_message.h | |||
@@ -1,108 +1,109 @@ | |||
1 | template<typename IT> | 1 | template<typename IT> |
2 | class join_iterator : public iterator< | 2 | class join_iterator : public iterator< |
3 | input_iterator_tag,typename IT::value_type, | 3 | input_iterator_tag,typename IT::value_type, |
4 | void,typename IT::pointer,typename IT::reference> { | 4 | void,typename IT::pointer,typename IT::reference> { |
5 | public: | 5 | public: |
6 | typedef pair<IT,IT> range_t; | 6 | typedef pair<IT,IT> range_t; |
7 | typedef list<range_t> ranges_t; | 7 | typedef list<range_t> ranges_t; |
8 | ranges_t ranges; | 8 | ranges_t ranges; |
9 | 9 | ||
10 | join_iterator() { } | 10 | join_iterator() { } |
11 | 11 | ||
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 | ||
53 | template<typename IT> | 53 | template<typename IT> |
54 | class cut_prefix_filterator : public opkele::util::basic_filterator<IT> { | 54 | class 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& pfx) |
61 | : opkele::util::basic_filterator<IT>(bi,ei), pfx(pfx) { | 61 | : opkele::util::basic_filterator<IT>(bi,ei), pfx(pfx) { |
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 | ||
78 | class kingate_openid_message_t : public opkele::basic_openid_message { | 78 | class 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 { | 93 | const string& get_field(const string& n) const try { |
94 | return gw.get_param("openid."+n); } | 94 | return gw.get_param("openid."+n); }catch(kingate::exception_notfound& nf) { |
95 | throw opkele::failed_lookup(OPKELE_CP_ nf.what()); } | ||
95 | 96 | ||
96 | fields_iterator fields_begin() const { | 97 | fields_iterator fields_begin() const { |
97 | return | 98 | return |
98 | pfilterator( keys_iterator( | 99 | pfilterator( keys_iterator( |
99 | jitterator() | 100 | jitterator() |
100 | .add_range( gw.get.begin(), gw.get.end() ) | 101 | .add_range( gw.get.begin(), gw.get.end() ) |
101 | .add_range( gw.post.begin(), gw.post.end() ), | 102 | .add_range( gw.post.begin(), gw.post.end() ), |
102 | jitterator() | 103 | jitterator() |
103 | ), keys_iterator(), "openid." ); | 104 | ), keys_iterator(), "openid." ); |
104 | } | 105 | } |
105 | fields_iterator fields_end() const { | 106 | fields_iterator fields_end() const { |
106 | return pfilterator(); | 107 | return pfilterator(); |
107 | } | 108 | } |
108 | }; | 109 | }; |