summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gentoobrowse/src/search.cpp13
-rw-r--r--gentoobrowse/src/test.cpp22
2 files changed, 27 insertions, 8 deletions
diff --git a/gentoobrowse/src/search.cpp b/gentoobrowse/src/search.cpp
index d1241fa..52a5846 100644
--- a/gentoobrowse/src/search.cpp
+++ b/gentoobrowse/src/search.cpp
@@ -25,10 +25,10 @@ namespace GentooBrowse {
public:
sitemap(const IceSpider::Core * core) :
IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/sitemap.xml"),
- prx0(core->getProxy<Gentoo::Portage>())
+ prx0(core->getProxy<Gentoo::Portage>()),
+ sitemaps {std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/sitemap.xslt")}
{
- addRouteSerializer({"application", "xml"},
- std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/sitemap.xslt"));
+ addRouteSerializer({"application", "xml"}, sitemaps);
}
void
@@ -53,8 +53,15 @@ namespace GentooBrowse {
request->response(this, _responseModel);
}
+ IceSpider::ContentTypeSerializer
+ defaultSerializer(std::ostream & strm) const override
+ {
+ return {{"application", "xml"}, sitemaps->create(strm)};
+ }
+
private:
const Gentoo::PortagePrxPtr prx0;
+ StreamSerializerFactoryPtr sitemaps;
};
} // namespace GentooBrowse
diff --git a/gentoobrowse/src/test.cpp b/gentoobrowse/src/test.cpp
index 238efb4..aa49a07 100644
--- a/gentoobrowse/src/test.cpp
+++ b/gentoobrowse/src/test.cpp
@@ -86,12 +86,9 @@ public:
}
};
-class ChromiumRequestXml : public ChromiumRequest {
+class ChromiumRequestDefaultXml : public ChromiumRequest {
public:
- ChromiumRequestXml(const Core * c, HttpMethod m, const std::string & p) : ChromiumRequest(c, m, p)
- {
- hdr["Accept"] = "application/xml";
- }
+ using ChromiumRequest::ChromiumRequest;
virtual void
standardAssertions(const char *) override
@@ -104,6 +101,14 @@ public:
}
};
+class ChromiumRequestXml : public ChromiumRequestDefaultXml {
+public:
+ ChromiumRequestXml(const Core * c, HttpMethod m, const std::string & p) : ChromiumRequestDefaultXml(c, m, p)
+ {
+ hdr["Accept"] = "application/xml";
+ }
+};
+
class ChromiumRequestAtom : public ChromiumRequest {
public:
ChromiumRequestAtom(const Core * c, HttpMethod m, const std::string & p) : ChromiumRequest(c, m, p)
@@ -255,6 +260,13 @@ BOOST_AUTO_TEST_CASE(search_sitemap)
request.standardAssertions(typeid(*this).name());
}
+BOOST_AUTO_TEST_CASE(search_sitemap_dfl)
+{
+ ChromiumRequestDefaultXml request(this, HttpMethod::GET, "/sitemap.xml");
+ process(&request);
+ request.standardAssertions(typeid(*this).name());
+}
+
BOOST_AUTO_TEST_CASE(home_atom)
{
ChromiumRequestAtom request(this, HttpMethod::GET, "/");