28 "HttpFileSystemPlugIn constructed with URL: %s.",
30 std::string origin = getenv(
"XRDXROOTD_PROXY")? getenv(
"XRDXROOTD_PROXY") :
"";
32 if (getenv(
"DAVIX_DBG_LOGGING_IN_XRD")) {
33 Davix::setLogScope(DAVIX_LOG_HEADER | DAVIX_LOG_S3 | DAVIX_LOG_BODY | DAVIX_LOG_CHAIN);
34 Davix::setLogLevel(DAVIX_LOG_DEBUG);
36 if ( origin.empty() || origin.find(
"=") == 0) {
37 ctx_ =
new Davix::Context();
38 davix_client_ =
new Davix::DavPosix(ctx_);
43 if (getenv(
"DAVIX_LOAD_GRID_MODULE_IN_XRD"))
65 const std::string &dest,
70 const auto full_source_path = url_.
GetProtocol() +
"://"
72 + std::to_string(url_.
GetPort())
74 const auto full_dest_path = url_.
GetProtocol() +
"://"
76 + std::to_string(url_.
GetPort())
80 "HttpFileSystemPlugIn::Mv - src = %s, dest = %s, timeout = %d",
81 full_source_path.c_str(), full_dest_path.c_str(), timeout);
84 Posix::Rename(*davix_client_, full_source_path, full_dest_path, timeout);
86 if (status.IsError()) {
103 "HttpFileSystemPlugIn::Rm - path = %s, timeout = %d",
104 url.GetObfuscatedURL().c_str(), timeout);
106 auto status =
Posix::Unlink(*davix_client_, url.GetURL(), timeout);
108 if (status.IsError()) {
128 "HttpFileSystemPlugIn::MkDir - path = %s, flags = %d, timeout = %d",
129 url.GetObfuscatedURL().c_str(), flags, timeout);
131 auto status =
Posix::MkDir(*davix_client_, url.GetURL(), flags, mode, timeout);
132 if (status.IsError()) {
149 "HttpFileSystemPlugIn::RmDir - path = %s, timeout = %d",
150 url.GetObfuscatedURL().c_str(), timeout);
152 auto status =
Posix::RmDir(*davix_client_, url.GetURL(), timeout);
153 if (status.IsError()) {
168 const auto full_path = url.GetLocation();
172 "HttpFileSystemPlugIn::DirList - path = %s, flags = %d, timeout = %d",
173 full_path.c_str(), flags, timeout);
180 Posix::DirList(*davix_client_, full_path, details, recursive, timeout);
181 if (res.second.IsError()) {
183 full_path.c_str(), res.second.ToStr().c_str());
198 const auto full_path = url_.
GetProtocol() +
"://" +
200 std::to_string(url_.
GetPort()) +
"/" + path;
203 "HttpFileSystemPlugIn::Stat - path = %s, timeout = %d",
204 full_path.c_str(), timeout);
208 auto status =
Posix::Stat(*davix_client_, full_path, timeout, stat_info);
210 if (status.IsError()) {
224 const std::string &value) {
225 properties_[name] = value;
230 std::string &value)
const {
231 const auto p = properties_.find(name);
232 if (p == std::end(properties_)) {
virtual XRootDStatus Rm(const std::string &path, ResponseHandler *handler, uint16_t timeout) override
virtual bool GetProperty(const std::string &name, std::string &value) const override
virtual XRootDStatus DirList(const std::string &path, DirListFlags::Flags flags, ResponseHandler *handler, uint16_t timeout) override
virtual ~HttpFileSystemPlugIn() noexcept
virtual XRootDStatus Mv(const std::string &source, const std::string &dest, ResponseHandler *handler, uint16_t timeout) override
virtual XRootDStatus Stat(const std::string &path, ResponseHandler *handler, uint16_t timeout) override
virtual XRootDStatus RmDir(const std::string &path, ResponseHandler *handler, uint16_t timeout) override
virtual XRootDStatus MkDir(const std::string &path, MkDirFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout) override
HttpFileSystemPlugIn(const std::string &url)
virtual bool SetProperty(const std::string &name, const std::string &value) override
void Error(uint64_t topic, const char *format,...)
Report an error.
void Debug(uint64_t topic, const char *format,...)
Print a debug message.
Handle an async response.
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
const std::string & GetHostName() const
Get the name of the target host.
const std::string & GetProtocol() const
Get the protocol.
std::string GetObfuscatedURL() const
Get the URL with authz information obfuscated.
void SetPath(const std::string &path)
Set the path.
int GetPort() const
Get the target port.
XRootDStatus Unlink(Davix::DavPosix &davix_client, const std::string &url, uint16_t timeout)
XRootDStatus RmDir(Davix::DavPosix &davix_client, const std::string &path, uint16_t timeout)
std::pair< XrdCl::DirectoryList *, XrdCl::XRootDStatus > DirList(Davix::DavPosix &davix_client, const std::string &path, bool details, bool, uint16_t timeout)
XRootDStatus MkDir(Davix::DavPosix &davix_client, const std::string &path, XrdCl::MkDirFlags::Flags flags, XrdCl::Access::Mode, uint16_t timeout)
XRootDStatus Rename(Davix::DavPosix &davix_client, const std::string &source, const std::string &dest, uint16_t timeout)
XRootDStatus Stat(Davix::DavPosix &davix_client, const std::string &url, uint16_t timeout, StatInfo *stat_info)
Davix::Context * root_ctx_
Davix::DavPosix * root_davix_client_
void SetUpLogging(Log *logger)
static const uint64_t kLogXrdClHttp
@ Recursive
Do a recursive listing.