https://github.com/CloudPolis/webdav-client-cpp
:cloud: C++ WebDAV Client provides easy and convenient to work with WebDAV-servers.
https://github.com/CloudPolis/webdav-client-cpp
box client cpp webdav yandex-disk
Last synced: 20 days ago
JSON representation
:cloud: C++ WebDAV Client provides easy and convenient to work with WebDAV-servers.
- Host: GitHub
- URL: https://github.com/CloudPolis/webdav-client-cpp
- Owner: CloudPolis
- License: other
- Created: 2015-03-06T12:21:11.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-05-01T16:41:02.000Z (12 months ago)
- Last Synced: 2025-03-24T00:29:48.289Z (27 days ago)
- Topics: box, client, cpp, webdav, yandex-disk
- Language: CMake
- Homepage: http://cloudpolis.github.io/webdav-client-cpp/
- Size: 1.57 MB
- Stars: 125
- Watchers: 17
- Forks: 51
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-webdav - webdav-client-cpp - C++ WebDAV Client. (Libraries / C++)
README
WebDAV Client
===
[](https://github.com/ruslo/hunter/releases/tag/v0.23.86)
[](https://github.com/CloudPolis/webdav-client-cpp/releases/tag/v1.1.4)
[](https://travis-ci.org/CloudPolis/webdav-client-cpp)
[](https://ci.appveyor.com/project/rusdevops/webdav-client-cpp)
[](https://gitter.im/CloudPolis/webdav-client-cpp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)Package ```WebDAV Client``` provides easy and convenient to work with WebDAV-servers:
- Yandex.Disk
- Dropbox
- Google Drive
- Box
- 4shared
- ownCloud
- ...Install old version
===```ShellSession
# via brew or homebrew
$ brew install wdc
```Build
===Building WebDAV Client from sources:
```ShellSession
$ git clone --recursive https://github.com/CloudPolis/webdav-client-cpp
$ cd webdav-client-cpp
$ ./tools/polly/bin/polly --install
```Building documentation:
```ShellSession
$ doxygen docs/doxygen.conf
$ open docs/html/index.html
```Running tests
===For run tests you need to set environment variables `WEBDAV_HOSTNAME`,
`WEBDAV_USERNAME` and `WEBDAV_PASSWORD` (optional `WEBDAV_ROOT`).```ShellSession
$ export WEBDAV_HOSTNAME=
$ export WEBDAV_USERNAME=
$ export WEBDAV_PASSWORD=
$ ./tools/polly/bin/polly --test --reconfig --fwd BUILD_TESTS=yes
```Usage
===```C++
#include#include
#include
#includeint main()
{
std::map options =
{
{"webdav_hostname", "https://webdav.yandex.ru"},
{"webdav_username", "webdav_username"},
{"webdav_password", "webdav_password"}
};
// additional keys:
// - webdav_root
// - cert_path, key_path
// - proxy_hostname, proxy_username, proxy_password
std::unique_ptr client{ new WebDAV::Client{ options } };
bool check_connection = client->check();
std::cout << "test connection with WebDAV drive is "
<< (check_connection ? "" : "not ")
<< "successful"<< std::endl;
bool is_dir = client->is_directory("/path/to/remote/resource");
std::cout << "remote resource is "
<< (is_dir ? "" : "not ")
<< "directory" << std::endl;
client->create_directory("/path/to/remote/directory/");
client->clean("/path/to/remote/directory/");std::cout << "On WebDAV-disk available free space: "
<< client->free_size()
<< std::endl;
std::cout << "remote_directory_name";
for (const auto& resource_name : client->list("/path/to/remote/directory/"))
{
std::cout << "\t" << "-" << resource_name;
}
std::cout << std::endl;
client->download("/path/to/remote/file", "/path/to/local/file");
client->clean("/path/to/remote/file");
client->upload("/path/to/remote/file", "/path/to/local/file");const auto meta_info = client->info("/path/to/remote/resource");
for (const auto& field : meta_info) {
std::cout << field.first << ":" << "\t" << field.second;
}
std::cout << std::endl;client->copy("/path/to/remote/file1", "/path/to/remote/file2");
client->move("/path/to/remote/file1", "/path/to/remote/file3");client->async_upload("/path/to/remote/file", "/path/to/local/file");
client->async_download("/path/to/remote/file", "/path/to/local/file");
}
```**CMakeLists.txt**
```cmake
cmake_minimum_required(VERSION 3.4)HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.23.83.tar.gz"
SHA1 "12dec078717539eb7b03e6d2a17797cba9be9ba9"
)project(example)
hunter_add_package(WDC)
find_package(WDC CONFIG REQUIRED)add_executable(example example.cpp)
target_link_libraries(example WDC::libwdc)
```