zoom: warn if %query is not defined and Explain is used
[metaproxy-moved-to-github.git] / src / torus.cpp
index 6ee010f..e286adf 100644 (file)
@@ -29,13 +29,29 @@ namespace mp = metaproxy_1;
 
 xmlDoc *mp::get_searchable(mp::Package &package,
                            std::string url_template, const std::string &db,
+                           const std::string &query,
                            const std::string &realm,
                            const std::string &proxy)
 {
-    // http://newmk2.indexdata.com/torus2/searchable.ebsco/records/?query=udb=aberdeenUni
+    // http://mk2.indexdata.com/torus2/searchable/records/?query=udb%3d%db
+    // or
+    // http://mk2.indexdata.com/torus2/searchable/records/?query=%query
     xmlDoc *doc = 0;
     size_t found;
 
+    found = url_template.find("%query");
+    if (found != std::string::npos)
+        url_template.replace(found, 6, mp::util::uri_encode(query));
+    else
+    {
+        if (db.length() == 0)
+        {
+            package.log("zoom", YLOG_WARN,
+                        "%query not defined in <torus url=\"..\"");
+            return 0;
+        }
+    }
+
     found = url_template.find("%db");
     if (found != std::string::npos)
         url_template.replace(found, 3, mp::util::uri_encode(db));