summaryrefslogtreecommitdiff
path: root/site/custom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'site/custom.cpp')
-rw-r--r--site/custom.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/site/custom.cpp b/site/custom.cpp
new file mode 100644
index 0000000..35d0d40
--- /dev/null
+++ b/site/custom.cpp
@@ -0,0 +1,38 @@
+#include "icespider-routes-search.h"
+
+namespace MirrorSearch {
+ // Implementation classes.
+
+ // Route name: download
+ // path: /download/{filename}
+ class download : public IceSpider::IRouteHandler {
+ public:
+ download(const IceSpider::Core * core) :
+ IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/download/{filename}"),
+ prx0(core->getProxy<MirrorSearch::Search>()),
+ _pi_filename(1)
+ {
+ }
+
+ void execute(IceSpider::IHttpRequest * request) const
+ {
+ auto _p_filename(request->getURLParam<::std::string>(_pi_filename));
+ auto _responseModel = prx0->feelingLucky(_p_filename, request->getContext());
+ if (_responseModel) {
+ request->responseRedirect(*_responseModel, "Mirror found");
+ }
+ request->response(404, "No mirror found");
+ }
+
+ private:
+ const MirrorSearch::SearchPrx prx0;
+ const unsigned int _pi_filename;
+ };
+
+} // namespace MirrorSearch
+
+// Register route handlers.
+FACTORY(MirrorSearch::download, IceSpider::RouteHandlerFactory);
+
+// End generated code.
+