summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2018-03-07 00:03:51 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2018-03-07 00:04:40 +0000
commit6fa901871df81cd8ecdc07d30ef1a20d8c7b1b1d (patch)
tree7b79dcde28aa9f190e6d28aa4e6634e7ddccf34e
parentWrap support for making unique ptrs from functions (diff)
downloadmirrorsearch-6fa901871df81cd8ecdc07d30ef1a20d8c7b1b1d.tar.bz2
mirrorsearch-6fa901871df81cd8ecdc07d30ef1a20d8c7b1b1d.tar.xz
mirrorsearch-6fa901871df81cd8ecdc07d30ef1a20d8c7b1b1d.zip
Store parser flags in service config
-rw-r--r--service/apiImpl.cpp4
-rw-r--r--service/data.sql4
-rw-r--r--service/models.ice1
-rw-r--r--service/schema.sql1
-rw-r--r--service/sql/getServices.sql2
-rw-r--r--service/test.cpp1
6 files changed, 7 insertions, 6 deletions
diff --git a/service/apiImpl.cpp b/service/apiImpl.cpp
index 1de31cb..28d88b4 100644
--- a/service/apiImpl.cpp
+++ b/service/apiImpl.cpp
@@ -64,9 +64,7 @@ namespace MirrorSearch {
{
auto fmt = AdHoc::Buffer::getFormat(s->baseurl);
auto url = (*fmt % fn).str();
- auto doc = getDoc(url,
- HTML_PARSE_RECOVER | HTML_PARSE_NODEFDTD | HTML_PARSE_NOIMPLIED |
- HTML_PARSE_NOWARNING | HTML_PARSE_NOERROR);
+ auto doc = getDoc(url, s->parserflags);
auto xpathCtx = getXPathCxt(doc);
auto xpathObj = getXPathObj(s->listxpath, xpathCtx, xmlXPathObjectType::XPATH_NODESET);
log->messagebf(LOG::INFO, "%d nodes matched %s", xpathObj->nodesetval->nodeNr, s->listxpath);
diff --git a/service/data.sql b/service/data.sql
index e14e721..b056d0c 100644
--- a/service/data.sql
+++ b/service/data.sql
@@ -1,3 +1,3 @@
-INSERT INTO searchservices(name, baseurl, listxpath, urlxpath)
- VALUES('file searching mock', 'file://$SCRIPTDIR/fixtures/filesearching/%s.html', '//pre[@class=''list'']/a[@class=''lf'']', 'string(@href)')
+INSERT INTO searchservices(name, baseurl, parserflags, listxpath, urlxpath)
+ VALUES('file searching mock', 'file://$SCRIPTDIR/fixtures/filesearching/%s.html', 97, '//pre[@class=''list'']/a[@class=''lf'']', 'string(@href)')
;
diff --git a/service/models.ice b/service/models.ice
index cb48459..971e7b9 100644
--- a/service/models.ice
+++ b/service/models.ice
@@ -9,6 +9,7 @@ module MirrorSearch {
string baseurl;
string listxpath;
string urlxpath;
+ int parserflags;
};
class SearchHit {
["slicer:db:pkey"]
diff --git a/service/schema.sql b/service/schema.sql
index b529172..93a87d3 100644
--- a/service/schema.sql
+++ b/service/schema.sql
@@ -2,6 +2,7 @@ CREATE TABLE searchservices(
id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name text not null,
baseurl text not null,
+ parserflags int not null,
listxpath text not null,
urlxpath text not null
);
diff --git a/service/sql/getServices.sql b/service/sql/getServices.sql
index 40382f2..be2fba6 100644
--- a/service/sql/getServices.sql
+++ b/service/sql/getServices.sql
@@ -1,3 +1,3 @@
-SELECT id, name, baseurl, listxpath, urlxpath
+SELECT id, name, baseurl, parserflags, listxpath, urlxpath
FROM searchservices
ORDER BY id
diff --git a/service/test.cpp b/service/test.cpp
index 8b93cf8..979d43d 100644
--- a/service/test.cpp
+++ b/service/test.cpp
@@ -43,6 +43,7 @@ BOOST_AUTO_TEST_CASE(getServices)
BOOST_CHECK_EQUAL(ss.front()->name, "file searching mock");
BOOST_CHECK_NE(ss.front()->baseurl, "file://$SCRIPTDIR/fixtures/filesearching/%s.html");
BOOST_CHECK_EQUAL(ss.front()->baseurl.substr(0, 8), "file:///");
+ BOOST_CHECK_EQUAL(ss.front()->parserflags, 97);
BOOST_CHECK(!ss.front()->listxpath.empty());
BOOST_CHECK(!ss.front()->urlxpath.empty());
}