projects
/
metaproxy-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
For Torus record fetch, proxy may be given
[metaproxy-moved-to-github.git]
/
src
/
filter_zoom.cpp
diff --git
a/src/filter_zoom.cpp
b/src/filter_zoom.cpp
index
e8863ff
..
5f647da
100644
(file)
--- a/
src/filter_zoom.cpp
+++ b/
src/filter_zoom.cpp
@@
-153,6
+153,7
@@
namespace metaproxy_1 {
CCL_bibset bibset;
std::string element_transform;
std::string element_raw;
CCL_bibset bibset;
std::string element_transform;
std::string element_raw;
+ std::string proxy;
std::map<std::string,SearchablePtr> s_map;
};
}
std::map<std::string,SearchablePtr> s_map;
};
}
@@
-549,6
+550,8
@@
void yf::Zoom::Impl::configure(const xmlNode *ptr, bool test_only,
element_transform = mp::xml::get_text(attr->children);
else if (!strcmp((const char *) attr->name, "element_raw"))
element_raw = mp::xml::get_text(attr->children);
element_transform = mp::xml::get_text(attr->children);
else if (!strcmp((const char *) attr->name, "element_raw"))
element_raw = mp::xml::get_text(attr->children);
+ else if (!strcmp((const char *) attr->name, "proxy"))
+ proxy = mp::xml::get_text(attr->children);
else
throw mp::filter::FilterException(
"Bad attribute " + std::string((const char *)
else
throw mp::filter::FilterException(
"Bad attribute " + std::string((const char *)
@@
-644,7
+647,7
@@
yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
sptr = it->second;
else
{
sptr = it->second;
else
{
- xmlDoc *doc = mp::get_searchable(m_p->torus_url, torus_db);
+ xmlDoc *doc = mp::get_searchable(m_p->torus_url, torus_db, m_p->proxy);
if (!doc)
{
*error = YAZ_BIB1_DATABASE_DOES_NOT_EXIST;
if (!doc)
{
*error = YAZ_BIB1_DATABASE_DOES_NOT_EXIST;
@@
-661,8
+664,17
@@
yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
if (ptr->type == XML_ELEMENT_NODE
&& !strcmp((const char *) ptr->name, "record"))
{
if (ptr->type == XML_ELEMENT_NODE
&& !strcmp((const char *) ptr->name, "record"))
{
+ if (sptr)
+ {
+ *error = YAZ_BIB1_UNSPECIFIED_ERROR;
+ *addinfo = (char*) odr_malloc(odr, 40 + database.length()),
+ sprintf(*addinfo, "multiple records for udb=%s",
+ database.c_str());
+ xmlFreeDoc(doc);
+ BackendPtr b;
+ return b;
+ }
sptr = m_p->parse_torus_record(ptr);
sptr = m_p->parse_torus_record(ptr);
- break;
}
}
}
}
}
}