Skip to content

5cript/roar

Folders and files

NameName
Last commit message
Last commit date
Mar 11, 2025
Jul 7, 2024
Apr 29, 2022
Dec 1, 2024
Dec 1, 2024
Mar 11, 2025
Apr 6, 2024
Jan 16, 2025
Dec 4, 2024
Nov 23, 2024
Apr 15, 2022
May 11, 2023
Nov 7, 2023
May 8, 2022
Nov 11, 2023
May 8, 2022
May 12, 2023

Repository files navigation

ROAR

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.

Features and planed features

  • 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?
  • 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

Dependencies

  • boost 1.81.0 or higher
    • openssl::ssl
    • openssl::crypto
    • cryptopp
  • libcurl

MacOS

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

Windows

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"
    }
  ]
}

Developer Notes

On msys2 use python (3) and python-pip of your subsystem, otherwise packages are not found