servlet.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma once
  2. #include <library/cpp/http/misc/httpcodes.h>
  3. #include <library/cpp/http/misc/httpreqdata.h>
  4. #include <library/cpp/http/io/stream.h>
  5. #include <util/memory/blob.h>
  6. namespace NYql {
  7. namespace NHttp {
  8. ///////////////////////////////////////////////////////////////////////////////
  9. // THttpError
  10. ///////////////////////////////////////////////////////////////////////////////
  11. class THttpError: public yexception
  12. {
  13. public:
  14. inline THttpError(HttpCodes code)
  15. : Code_(code)
  16. {
  17. }
  18. inline HttpCodes GetCode() const {
  19. return Code_;
  20. }
  21. private:
  22. HttpCodes Code_;
  23. };
  24. ///////////////////////////////////////////////////////////////////////////////
  25. // TRequest & TResponse
  26. ///////////////////////////////////////////////////////////////////////////////
  27. struct TRequest
  28. {
  29. const THttpInput& Input;
  30. const TServerRequestData& RD;
  31. const TBlob& Body;
  32. };
  33. struct TResponse
  34. {
  35. HttpCodes Code;
  36. THttpHeaders Headers;
  37. TBlob Body;
  38. TString ContentType;
  39. inline TResponse()
  40. : Code(HTTP_OK)
  41. , ContentType(TStringBuf("text/plain"))
  42. {
  43. }
  44. void OutTo(IOutputStream& out) const;
  45. };
  46. ///////////////////////////////////////////////////////////////////////////////
  47. // IServlet
  48. ///////////////////////////////////////////////////////////////////////////////
  49. class IServlet: private TNonCopyable
  50. {
  51. public:
  52. virtual ~IServlet() = default;
  53. virtual void DoGet(const TRequest&, TResponse& resp) const {
  54. resp.Code = HttpCodes::HTTP_NOT_IMPLEMENTED;
  55. }
  56. virtual void DoPost(const TRequest&, TResponse& resp) const {
  57. resp.Code = HttpCodes::HTTP_NOT_IMPLEMENTED;
  58. }
  59. };
  60. } // namspace NNttp
  61. } // namspace NYql