summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icespider/core/ihttpRequest.cpp8
-rw-r--r--icespider/core/ihttpRequest.h6
2 files changed, 10 insertions, 4 deletions
diff --git a/icespider/core/ihttpRequest.cpp b/icespider/core/ihttpRequest.cpp
index 35eb465..9325a5e 100644
--- a/icespider/core/ihttpRequest.cpp
+++ b/icespider/core/ihttpRequest.cpp
@@ -131,6 +131,14 @@ namespace IceSpider {
response(303, (statusMsg ? *statusMsg : "Moved"));
}
+ void
+ IHttpRequest::modelPartResponse(const IRouteHandler * route, const Slicer::ModelPartForRootPtr & mp) const
+ {
+ auto s = getSerializer(route);
+ setHeader("Content-Type", s.first.group + "/" + s.first.type);
+ response(200, "OK");
+ s.second->Serialize(mp);
+ }
#define getParams(T) \
template<> void IHttpRequest::setCookie<T>(const std::string & n, const T & v, \
diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h
index bbd83fb..23a9d7e 100644
--- a/icespider/core/ihttpRequest.h
+++ b/icespider/core/ihttpRequest.h
@@ -82,11 +82,9 @@ namespace IceSpider {
template<typename T>
void response(const IRouteHandler * route, const T & t) const
{
- auto s = getSerializer(route);
- setHeader("Content-Type", s.first.group + "/" + s.first.type);
- response(200, "OK");
- Slicer::SerializeAnyWith<T>(t, s.second);
+ modelPartResponse(route, Slicer::ModelPart::CreateRootFor(t));
}
+ void modelPartResponse(const IRouteHandler * route, const Slicer::ModelPartForRootPtr &) const;
const Core * core;
};