assets_servlet.h 962 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. #include "servlet.h"
  3. namespace NYql {
  4. namespace NHttp {
  5. ///////////////////////////////////////////////////////////////////////////////
  6. // TAssetsServlet
  7. ///////////////////////////////////////////////////////////////////////////////
  8. class TAssetsServlet: public IServlet
  9. {
  10. struct TAsset {
  11. TBlob Data;
  12. time_t LastModified;
  13. const char* ContentType;
  14. };
  15. public:
  16. TAssetsServlet(
  17. const TString& baseUrl,
  18. const TString& baseDir,
  19. const TString& indexFile);
  20. void DoGet(const TRequest& req, TResponse& resp) const override final;
  21. private:
  22. TString SafeFilePath(const TString& basePath, TStringBuf reqPath) const;
  23. bool IsCachedOnClient(const TRequest& req, const TAsset& asset) const;
  24. void LoadAsset(const TRequest& req, TAsset* asset) const;
  25. private:
  26. TString BaseUrl_;
  27. TString BaseDir_;
  28. TString IndexFile_;
  29. };
  30. } // namspace NNttp
  31. } // namspace NYql