00001
00005 #ifndef __HTTP_FILE_SYSTEM_PLUG_IN_
00006 #define __HTTP_FILE_SYSTEM_PLUG_IN_
00007
00008 #include "davix.hpp"
00009
00010 #include "XrdCl/XrdClPlugInInterface.hh"
00011 #include "XrdCl/XrdClURL.hh"
00012
00013 #include <unordered_map>
00014
00015 namespace XrdCl {
00016 class Log;
00017
00018 class HttpFileSystemPlugIn : public FileSystemPlugIn {
00019 public:
00020 HttpFileSystemPlugIn(const std::string &url);
00021 virtual ~HttpFileSystemPlugIn() noexcept = default;
00022
00023 virtual XRootDStatus Mv(const std::string &source, const std::string &dest,
00024 ResponseHandler *handler, uint16_t timeout) override;
00025
00026 virtual XRootDStatus Rm(const std::string &path, ResponseHandler *handler,
00027 uint16_t timeout) override;
00028
00029 virtual XRootDStatus MkDir(const std::string &path, MkDirFlags::Flags flags,
00030 Access::Mode mode, ResponseHandler *handler,
00031 uint16_t timeout) override;
00032
00033 virtual XRootDStatus RmDir(const std::string &path, ResponseHandler *handler,
00034 uint16_t timeout) override;
00035
00036 virtual XRootDStatus DirList(const std::string &path,
00037 DirListFlags::Flags flags,
00038 ResponseHandler *handler,
00039 uint16_t timeout) override;
00040
00041 virtual XRootDStatus Stat(const std::string &path, ResponseHandler *handler,
00042 uint16_t timeout) override;
00043
00044 virtual bool SetProperty(const std::string &name,
00045 const std::string &value) override;
00046
00047 virtual bool GetProperty(const std::string &name,
00048 std::string &value) const override;
00049
00050 private:
00051 Davix::Context ctx_;
00052 Davix::DavPosix davix_client_;
00053
00054 URL url_;
00055
00056 std::unordered_map<std::string, std::string> properties_;
00057
00058 Log *logger_;
00059 };
00060 }
00061
00062 #endif // __HTTP_FILE_SYSTEM_PLUG_IN_