Github Pages Documentation: https://5cript.github.io/roar/
This is a network library that has:
- a HTTP(S) Server based on boost beast.
- a HTTP(S) Client based on boost beast.
- a CURL easy wrapper http client.
- Javascript Promise like syntax for asynchronous actions provided by xhawk18_promise.
- HTTP Server
- HTTPS Support (facillitated using boost::asio::ssl_context)
- Hybrid support, allow marked requests as unsecure.
- Routing (verb+path => handler)
- Custom error pages (404, ...)
- Provided pretty standard replies / error pages.
- Regex paths
- Serving files (easier than using regex paths)
- Download
- Upload
- Deletion
- Directory Listing
- List of files
- Styleable, pretty by default
- Last modified date
- File size
- Range Requests for GET.
- Resumeable Uploads?
- HTTPS Support (facillitated using boost::asio::ssl_context)
- Websocket
- Websocket Server Support (SSL and Plain)
- Websocket Client (SSL and Plain)
- Websocket Upgrade from HTTP(S) Server
- Synchronous HTTP Client using libcurl.
- Asynchronous HTTP Client using beast.
- URL Parser
- HTTP & HTTPS Tunnel Proxy
- boost 1.81.0 or higher
- openssl::ssl
- openssl::crypto
- cryptopp
- libcurl
Dependencies are expected to be installed via brew. If this does not work for you, please open an issue.
brew install ninja boost cryptopp curl llvm@16
Use vcpkg on windows for these dependencies when building with Visual Studio & cmake. https://vcpkg.io/en/getting-started.html
Example CMakeSettings.json
{
"configurations": [
{
"name": "x64-Clang-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"buildRoot": "${projectDir}\\build\\${name}",
"installRoot": "${projectDir}\\build\\install\\${name}",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "clang_cl_x64" ],
"cmakeCommandArgs": "",
"cmakeToolchain": "D:/vcpkg/scripts/buildsystems/vcpkg.cmake"
}
]
}
On msys2 use python (3) and python-pip of your subsystem, otherwise packages are not found