在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:vasild/cpp-ipfs-http-client开源软件地址:https://github.com/vasild/cpp-ipfs-http-client开源编程语言:C++ 83.6%开源软件介绍:IPFS C++ HTTP API client libraryAllows C++ applications to communicate with an IPFS node. It implements IPFS API bindings for C++. See the documentation and in partially the Client Class. See also IPFS on GitHub. The C++ API is broken up into the following sections (Note: links below go to the
As you can see, not all methods are yet implemented. TODO
Dependencies
When building documention, you also need:
Installgit clone https://github.com/vasild/cpp-ipfs-http-client.git
cd cpp-ipfs-http-client
mkdir build
cd build
cmake ..
make -j 8
sudo make install Hint: Only build the library without tests, use: See the documentation for details. Run Test casesOnly build & run the test cases, without code coverage: mkdir build && cd build
cmake ..
make -j 8
# Run our test-cases
make our_tests Build & run Test cases + Code CoverageTest cases are build by default, but if you want to build with coverage: mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DCOVERAGE:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=ON..
# Run tests & Build the HTML report
make ctest_coverage_html -j 8
# Or run tests & create a Cobertura XML file
make ctest_coverage_xml -j 8 Build DoxygenBuild Doxygen files locally. From the root directory of this project: mkdir build && cd build
cmake -DDOC=ON ..
make doc Usage#include <ipfs/client.h>
#include <iostream>
#include <sstream>
int main(int, char**) {
std::stringstream contents;
ipfs::Client client("localhost", 5001);
client.FilesGet("/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme",
&contents);
std::cout << contents.str() << std::endl;
return 0;
} More info see: Doxygen Docs - Client Class. Multi-threading exampleThe client constructor and destructor are not thread safe. However, all the API IPFS calls are thread safe! Note: A runtime error will be thrown on the request call (in this example the An example of using a thread together with the IPFS Client: #include <ipfs/client.h>
#include <sstream>
#include <thread>
int main(int, char**) {
ipfs::Client client("localhost", 5001, "2m");
// Only start one thread
std::thread thread([&client]() {
std::stringstream contents;
try {
// File should not exists, takes forever (until time-out)
client.FilesGet("QmZp1rrtGTictR2rpNcx4673R7qU9Jdr9DQ6Z7F6Wgo2bQ",
&contents);
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
});
if (thread.joinable()) {
client.Abort(); // Abort request
thread.join(); // Should not be blocking now
client.Reset(); // Reset internal state
}
return 0;
} See the full multi-threading example on: Doxygen - Examples. Build via C++ compilerg++ -std=c++11 -I/path/to/header -L/path/to/lib -lipfs-http-client myprog.cc -o myprog Build via CMakeUse the C++ IPFS Client inside an existing CMake project. We add the IPFS client inside the cd your-cmake-project
git submodule add https://github.com/vasild/cpp-ipfs-http-client.git lib/ipfs-http-client Edit your add_subdirectory (lib/ipfs-http-client) Finally, add the C++ IPFS HTTP static library to your target using set(PROJECT_TARGET my-app)
target_link_libraries(${PROJECT_TARGET} PRIVATE ipfs-http-client) ContributeFeel free to open issues and pull requests. Report vulnerabilities publicly, similar to other non-security issues. The project adheres to the Google C++ Style Guide. Use clang-format to properly format the code when you submit patches. Write tests for new code. Changes should not cause the code coverage to go down (ideally up). LicenseThe code is distributed under the MIT License. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论