author | Michael Krelin <hacker@klever.net> | 2007-12-30 21:08:55 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2008-01-04 18:22:43 (UTC) |
commit | b7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97 (patch) (unidiff) | |
tree | c898f449b4238a239f491a62bd77ac7c75663bb1 /lib | |
parent | 4b75ac58aa9baaf611df8ef694fd585529823c66 (diff) | |
download | libopkele-b7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97.zip libopkele-b7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97.tar.gz libopkele-b7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97.tar.bz2 |
parse ProviderID while doing discovery
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | lib/discovery.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/discovery.cc b/lib/discovery.cc index bc7d6fb..81727c0 100644 --- a/lib/discovery.cc +++ b/lib/discovery.cc | |||
@@ -227,24 +227,27 @@ namespace opkele { | |||
227 | }else{ | 227 | }else{ |
228 | skipping = -1; | 228 | skipping = -1; |
229 | } | 229 | } |
230 | }else{ | 230 | }else{ |
231 | int pt_s = pt_stack.size(); | 231 | int pt_s = pt_stack.size(); |
232 | if(pt_s==1) { | 232 | if(pt_s==1) { |
233 | if(is_qelement(n,NSURI_XRD "\tCanonicalID")) { | 233 | if(is_qelement(n,NSURI_XRD "\tCanonicalID")) { |
234 | assert(xrd); | 234 | assert(xrd); |
235 | cdata = &(xrd->canonical_ids.add(element_priority(a),string())); | 235 | cdata = &(xrd->canonical_ids.add(element_priority(a),string())); |
236 | }else if(is_qelement(n,NSURI_XRD "\tLocalID")) { | 236 | }else if(is_qelement(n,NSURI_XRD "\tLocalID")) { |
237 | assert(xrd); | 237 | assert(xrd); |
238 | cdata = &(xrd->local_ids.add(element_priority(a),string())); | 238 | cdata = &(xrd->local_ids.add(element_priority(a),string())); |
239 | }else if(is_qelement(n,NSURI_XRD "\tProviderID")) { | ||
240 | assert(xrd); | ||
241 | cdata = &(xrd->provider_id); | ||
239 | }else if(is_qelement(n,NSURI_XRD "\tService")) { | 242 | }else if(is_qelement(n,NSURI_XRD "\tService")) { |
240 | assert(xrd); | 243 | assert(xrd); |
241 | xrd_service = &(xrd->services.add(element_priority(a), | 244 | xrd_service = &(xrd->services.add(element_priority(a), |
242 | service_t())); | 245 | service_t())); |
243 | pt_stack.push_back(n); | 246 | pt_stack.push_back(n); |
244 | }else if(is_qelement(n,NSURI_XRD "\tStatus")) { | 247 | }else if(is_qelement(n,NSURI_XRD "\tStatus")) { |
245 | for(;*a;) { | 248 | for(;*a;) { |
246 | if(!strcasecmp(*(a++),"code")) { | 249 | if(!strcasecmp(*(a++),"code")) { |
247 | if(sscanf(*(a++),"%ld",&status_code)==1 && status_code!=100) { | 250 | if(sscanf(*(a++),"%ld",&status_code)==1 && status_code!=100) { |
248 | cdata = &status_string; | 251 | cdata = &status_string; |
249 | pt_stack.push_back(n); | 252 | pt_stack.push_back(n); |
250 | break; | 253 | break; |
@@ -264,24 +267,27 @@ namespace opkele { | |||
264 | if(is_qelement(pt_stack.back().c_str(), NSURI_XRD "\tService")) { | 267 | if(is_qelement(pt_stack.back().c_str(), NSURI_XRD "\tService")) { |
265 | if(is_qelement(n,NSURI_XRD "\tType")) { | 268 | if(is_qelement(n,NSURI_XRD "\tType")) { |
266 | assert(xrd); assert(xrd_service); | 269 | assert(xrd); assert(xrd_service); |
267 | cdata_buf.clear(); | 270 | cdata_buf.clear(); |
268 | cdata = &cdata_buf; | 271 | cdata = &cdata_buf; |
269 | }else if(is_qelement(n,NSURI_XRD "\tURI")) { | 272 | }else if(is_qelement(n,NSURI_XRD "\tURI")) { |
270 | assert(xrd); assert(xrd_service); | 273 | assert(xrd); assert(xrd_service); |
271 | cdata = &(xrd_service->uris.add(element_priority(a),string())); | 274 | cdata = &(xrd_service->uris.add(element_priority(a),string())); |
272 | }else if(is_qelement(n,NSURI_XRD "\tLocalID") | 275 | }else if(is_qelement(n,NSURI_XRD "\tLocalID") |
273 | || is_qelement(n,NSURI_OPENID10 "\tDelegate") ) { | 276 | || is_qelement(n,NSURI_OPENID10 "\tDelegate") ) { |
274 | assert(xrd); assert(xrd_service); | 277 | assert(xrd); assert(xrd_service); |
275 | cdata = &(xrd_service->local_ids.add(element_priority(a),string())); | 278 | cdata = &(xrd_service->local_ids.add(element_priority(a),string())); |
279 | }else if(is_qelement(n,NSURI_XRD "\tProviderID")) { | ||
280 | assert(xrd); assert(xrd_service); | ||
281 | cdata = &(xrd_service->provider_id); | ||
276 | }else{ | 282 | }else{ |
277 | skipping = 1; | 283 | skipping = 1; |
278 | } | 284 | } |
279 | }else | 285 | }else |
280 | skipping = 1; | 286 | skipping = 1; |
281 | }else if(xmode&xmode_html) { | 287 | }else if(xmode&xmode_html) { |
282 | html_start_element(n,a); | 288 | html_start_element(n,a); |
283 | }else{ | 289 | }else{ |
284 | skipping = 1; | 290 | skipping = 1; |
285 | } | 291 | } |
286 | } | 292 | } |
287 | } | 293 | } |