class Zoom::Searchable : boost::noncopyable {
public:
std::string authentication;
+ std::string authenticationMode;
std::string cfAuth;
std::string cfProxy;
std::string cfSubDB;
s->authentication = mp::xml::get_text(ptr);
}
else if (!strcmp((const char *) ptr->name,
+ "authenticationMode"))
+ {
+ s->authenticationMode = mp::xml::get_text(ptr);
+ }
+ else if (!strcmp((const char *) ptr->name,
"cfAuth"))
{
s->cfAuth = mp::xml::get_text(ptr);
if (sptr->query_encoding.length())
b->set_option("rpnCharset", sptr->query_encoding);
- if (sptr->extraArgs.length())
- b->set_option("extraArgs", sptr->extraArgs);
+ std::string extraArgs = sptr->extraArgs;
b->set_option("timeout", m_p->zoom_timeout.c_str());
{
std::string user;
std::string password;
- std::string authtype;
+ std::string authtype = sptr->authenticationMode;
+
{
const char *cstr = authentication.c_str();
const char *cp1 = strchr(cstr, '/');
- const char *cp2 = 0;
if (cp1)
{
- cp2 = strchr(cp1 + 1, '/');
- if (cp2)
- {
- password.assign(cp1 + 1, cp2 - cp1 - 1);
- authtype.assign(cp2 + 1);
- }
- else
- password.assign(cp1 + 1);
+ password.assign(cp1 + 1);
user.assign(cstr, cp1 - cstr);
}
else
values[2] = 0;
yaz_array_to_uri(&path, o, (char **) names, (char **) values);
- b->set_option("extraArgs", path);
+ if (extraArgs.length())
+ extraArgs.append("&");
+ extraArgs.append(path);
odr_destroy(o);
}
else
if (proxy.length())
b->set_option("proxy", proxy);
}
+ if (extraArgs.length())
+ b->set_option("extraArgs", extraArgs);
+
std::string url(sptr->target);
if (sptr->sru.length())
{
element mp:records {
element mp:record {
element mp:authentication { xsd:string }?,
+ element mp:authenticationMode { xsd:string }?,
element mp:piggyback { xsd:string }?,
element mp:queryEncoding { xsd:string }?,
element mp:udb { xsd:string },
element mp:sortmap_author { xsd:string }?,
element mp:sortmap_date { xsd:string }?,
element mp:sortmap_title { xsd:string }?,
- element mp:rpn2cql { xsd:string }?
+ element mp:extraArgs { xsd:string }?,
+ element mp:rpn2cql { xsd:string }?
}*
}?
}?,