#ifndef ICESPIDER_IHTTPREQUEST_H #define ICESPIDER_IHTTPREQUEST_H #include #include #include #include #include #include #include namespace IceSpider { class Core; class DLL_PUBLIC IHttpRequest { public: IHttpRequest(const Core *); Ice::Context getContext() const; virtual std::string getRequestPath() const = 0; virtual UserIceSpider::HttpMethod getRequestMethod() const = 0; virtual IceUtil::Optional getURLParam(const std::string &) const = 0; virtual IceUtil::Optional getQueryStringParam(const std::string &) const = 0; virtual IceUtil::Optional getHeaderParam(const std::string &) const = 0; virtual Slicer::DeserializerPtr getDeserializer() const; virtual Slicer::SerializerPtr getSerializer() const; virtual std::istream & getInputStream() const = 0; virtual std::ostream & getOutputStream() const = 0; template IceUtil::Optional getURLParam(const std::string & key) const; template IceUtil::Optional getBodyParam(const std::string &) const { return Slicer::DeserializeAnyWith(getDeserializer()); } template IceUtil::Optional getQueryStringParam(const std::string & key) const; template IceUtil::Optional getHeaderParam(const std::string & key) const; void response(short, const std::string &) const; template void response(const T & t) const { auto s = getSerializer(); response(200, "OK"); Slicer::SerializeAnyWith(t, s); } const Core * core; }; } #endif