summaryrefslogtreecommitdiffabout
path: root/lib
authorMichael Krelin <hacker@klever.net>2007-12-29 21:15:05 (UTC)
committer Michael Krelin <hacker@klever.net>2008-01-04 18:21:47 (UTC)
commitd81fa443c048d6919e98e82fff1fe6013c9deff4 (patch) (side-by-side diff)
tree53e458f164b3e192a9ef8adc67e4141fab9b5a40 /lib
parentff04188567b117c28d54d6f81a9dca40ff0b1730 (diff)
downloadlibopkele-d81fa443c048d6919e98e82fff1fe6013c9deff4.zip
libopkele-d81fa443c048d6919e98e82fff1fe6013c9deff4.tar.gz
libopkele-d81fa443c048d6919e98e82fff1fe6013c9deff4.tar.bz2
parse xrd:Expires
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (limited to 'lib') (more/less context) (ignore whitespace changes)
-rw-r--r--lib/discovery.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/discovery.cc b/lib/discovery.cc
index ea53786..3b184ee 100644
--- a/lib/discovery.cc
+++ b/lib/discovery.cc
@@ -1,10 +1,8 @@
-#include <iostream>
-using namespace std;
#include <list>
#include <opkele/curl.h>
#include <opkele/expat.h>
#include <opkele/uris.h>
#include <opkele/discovery.h>
#include <opkele/exception.h>
#include <opkele/util.h>
@@ -226,17 +224,16 @@ namespace opkele {
}else if(xmode&xmode_html) {
html_start_element(n,a);
}else{
skipping = -1;
}
}else{
int pt_s = pt_stack.size();
if(pt_s==1) {
- /* TODO: xrd:XRD/xrd:Expires */
if(is_qelement(n,NSURI_XRD "\tCanonicalID")) {
assert(xrd);
cdata = &(xrd->canonical_ids.add(element_priority(a),string()));
}else if(is_qelement(n,NSURI_XRD "\tLocalID")) {
assert(xrd);
cdata = &(xrd->local_ids.add(element_priority(a),string()));
}else if(is_qelement(n,NSURI_XRD "\tService")) {
assert(xrd);
@@ -248,16 +245,20 @@ namespace opkele {
if(!strcasecmp(*(a++),"code")) {
if(sscanf(*(a++),"%ld",&status_code)==1 && status_code!=100) {
cdata = &status_string;
pt_stack.push_back(n);
break;
}
}
}
+ }else if(is_qelement(n,NSURI_XRD "\tExpires")) {
+ assert(xrd);
+ cdata_buf.clear();
+ cdata = &cdata_buf;
}else if(xmode&xmode_html) {
html_start_element(n,a);
}else{
skipping = 1;
}
}else if(pt_s==2) {
if(is_qelement(pt_stack.back().c_str(), NSURI_XRD "\tService")) {
if(is_qelement(n,NSURI_XRD "\tType")) {
@@ -300,16 +301,19 @@ namespace opkele {
}else if(is_qelement(n,NSURI_XRD "\tStatus")) {
assert(xrd);
if(is_qelement(pt_stack.back().c_str(),n)) {
assert(cdata==&status_string);
pt_stack.pop_back();
if(status_code!=100)
skipping = -1;
}
+ }else if(is_qelement(n,NSURI_XRD "\tExpires")) {
+ assert(xrd);
+ xrd->expires = util::w3c_to_time(cdata_buf);
}else if((xmode&xmode_html) && is_element(n,"head")) {
skipping = -1;
}
cdata = 0;
}
void character_data(const XML_Char *s,int l) {
if(skipping) return;
if(cdata) cdata->append(s,l);