cpr VS oxen-storage-server

Compare cpr vs oxen-storage-server and see what are their differences.

cpr

C++ Requests: Curl for People, a spiritual port of Python Requests. (by libcpr)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
cpr oxen-storage-server
22 5
6,137 26
1.5% -
8.1 8.4
10 days ago 29 days ago
C++ C++
GNU General Public License v3.0 or later MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

cpr

Posts with mentions or reviews of cpr. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-08.
  • What C++ library do you wish existed but hasn’t been created yet?
    18 projects | /r/cpp | 8 Jul 2023
    This one might fit the bill https://github.com/libcpr/cpr
  • [CMake] Can't include external header in .h file
    2 projects | /r/cpp_questions | 8 Jul 2023
    cmake_minimum_required(VERSION 3.15) project(xrpc++ DESCRIPTION "C++ AT Protocol XRPC library" VERSION 1.0.0 LANGUAGES CXX) include(FetchContent) FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git GIT_TAG 2553fc41450301cd09a9271c8d2c3e0cf3546b73) # The commit hash for 1.10.x. Replace with the latest from: https://github.com/libcpr/cpr/releases FetchContent_MakeAvailable(cpr) FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz) FetchContent_MakeAvailable(json) add_library(${PROJECT_NAME} SHARED src/lexicon.cpp src/xrpc.cpp ) target_link_libraries(${PROJECT_NAME} PRIVATE cpr::cpr) target_link_libraries(${PROJECT_NAME} PRIVATE nlohmann_json::nlohmann_json) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION 1) target_include_directories(${PROJECT_NAME} PUBLIC include) set(CMAKE_BUILD_TYPE debug)
    2 projects | /r/cpp_questions | 8 Jul 2023
    include(FetchContent) FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git GIT_TAG 2553fc41450301cd09a9271c8d2c3e0cf3546b73) # The commit hash for 1.10.x. Replace with the latest from: https://github.com/libcpr/cpr/releases FetchContent_MakeAvailable(cpr)
  • How to convert libcurl to C++?
    2 projects | /r/cpp_questions | 16 Mar 2023
    There is also the cpr package which should offer a more c++ focussed interface for curl.
  • Trying to use libcpr, linking errors - newbie...
    1 project | /r/cpp_questions | 3 Dec 2022
    So I'm very new to C++ and I'm trying to write a C++ version of a tool that I put together in Python. I'm trying to use libcpr for all my HTTP needs. I've spent the day trying to get it set up and working, but I'm getting a bunch of linking errors when I try to run. I really don't know if I did the building of it correctly, I'm trying to use Visual Studio Community 2022 and the Usage section of their docs talks about CMake and a couple package manager methods.
  • Como são feitos os downloaders? (exemplos no texto)
    2 projects | /r/brdev | 2 Dec 2022
  • Standardise a C++ build tool and package manager?
    2 projects | /r/cpp | 27 Sep 2022
    I think vcpkg manifests have solved a really key portion of the "please give me these libraries" problem. Couple lines in a json file, pass CMake to your vcpkg toolchain script path and triplet, and you're pretty much done with dependencies. I actually used it for a project with libcpr/cpr and a couple other popular libraries, and I was shocked at how painless it was to get up and running with some web request stuff.
  • What are some cool modern libraries you enjoy using?
    32 projects | /r/cpp | 18 Sep 2022
    Libraries like nlohmann's json, cpr, fmt are prime examples of what I'm seeking. Any suggestions?
  • I'm getting a 422 Validation Failed from Github API. Only when making a request with the Cpr library.
    1 project | /r/cpp_questions | 17 Sep 2022
    Basically specifying the language and the repo, and it does work when the request is made from postman or from the browser. However, when using https://github.com/libcpr/cpr, I'm getting the following response:
  • how to make a C++ web scraper?
    2 projects | /r/cpp_questions | 10 Aug 2022

oxen-storage-server

Posts with mentions or reviews of oxen-storage-server. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-07-06.
  • About new Session encryption protocol...
    1 project | /r/Session_Messenger | 6 Aug 2023
  • Weekly Dev Update 06/07/2021
    3 projects | /r/oxen_io | 6 Jul 2021
    [Storage Server] Testing, bug fixes, and miscellaneous updates for the big 2.2.0 update https://github.com/oxen-io/oxen-storage-server/pull/433
  • Weekly Dev Update 08/06/2021
    3 projects | /r/oxen_io | 8 Jun 2021
    https://github.com/oxen-io/oxen-storage-server/pull/433 Make random message retrieval more efficient (the current approach scales poorly as the database grows) Refactor how timestamps and TTLs are handled; we now store a timestamp and an expiry, but no longer the TTL value, instead the TTL value is simply a temporary value that can be given when storing a message to implicitly define the expiry. Remove dead code/disused OMQ endpoints. Fix SS not shutting down properly if it gets signalled while still trying to get the initial keys from oxend. Change database storage to store bytes rather than base64-encoded data. Base64 is a transport encoding that is needed for javascript, but was being wastefully stored in the database too. Change generated hash to be based on fundamental values rather than user-provided encodings. Don't require timestamp and ttl to be passed as strings anymore. Allow storing using timestamp+expiry (as an alternative to timestamp+ttl). Expose storage rpc endpoints through a new public oxenmq rpc category storage.WHATEVER (e.g. storage.store). This allows clients that want to use zmq speak more efficiently to SS. Add bt-encoded input/output support to the OMQ storage endpoints; this is noticeably more network efficient because it requires neither base64 encoding, nor establishing and handshaking new connections for every request. The OMQ storage endpoints take params either json or a bt-encoded dict, and reply in kind. Clean up internals by moving transport encoding of internal values closer to the transport layer. (Aside from a cleaner design, this was also needed to get bt-encoded responses out cleanly). Add delete/expiry API interfaces to delete all, delete selected, delete by timestamp, shorten all expiries, and shorten specific message expiries.
  • Weekly Dev Update 01/06/2021
    6 projects | /r/oxen_io | 31 May 2021
    Replace boost beast with uWebsockets https://github.com/oxen-io/oxen-storage-server/pull/432 Remove pre-HF18 legacy code/endpoints that isn't being called anymore Remove process_lns_request endpoint (it is broken, and Session clients have already switched to using oxend_rpc with ons_resolve instead). Replace boost beast http(s) client code with cpr (https://github.com/whoshuu/cpr); this is a whole lot nicer to use for HTTP requests. Replace boost beast http server code with uWebSockets (https://github.com/uNetworking/uWebSockets). This gives a much nicer interface, and makes it easy for us to add websocket support for clients in the future. Remove boost::asio; it's not needed anymore with the removal of the above. Replace bootstrap RPC code with authenticated, encrypted OMQ RPC. Remove boost circular buffer use; a regular map with a two-line trim is simpler for the block hash cache and a limit on stored snodes doesn't seem necessary for the rate limiter. Make rate_limiter clean itself periodically rather than keeping buckets around indefinitely Make rate_limiter thread-safe so that you don't need to hold the entire service_node_ lock to use it. Remove ip_utils; we don't allow redirects and are sufficiently restrictive on the URL target that it seems unnecessary (plus not having it lets us offload DNS lookup to curl as part of the request). Replace /swarms/ping_test/v1 with /ping_test/v1; this new request now returns the remote pubkey in a header, and no longer includes an SSL cert signature (so that we can drop the SSL cert signatures after HF19). The old one will still be used until HF19. Add OMQ endpoint for storage tests; starting at HF19 it will get used rather than the HTTPS one. Refactor storage test retries into request_handler (rather than being in the HTTPS specific code) Move HTTPS server-specific code for validating snode signatures from headers out of generic request_handler code and into HTTPS-specific code. Make onion proxy-to-url timeout a bit less than the onion request timeout so that the client has a better chance of getting a relayed timeout error (rather than getting a timeout from the edge node). Miscellaneous cleanups. Logger: use file and line number instead of func because the latter is nearly useless when called from a lambda. Shorten timeout values for ping tests, storage tests, and bootstrap connections to 5s, 15s, and 10s, respectively, from. Refactor recent stats reporting to use rolling averages that always have 60-70min of stats and drop off 10min at a time, rather than the 1-period hard reset. Also fixes various stats that weren't calculated/reported properly. Add onion and proxy requests to systemd status line as well as used database size. Enable WAL for sqlite3 database Removed buffered message relaying for swarm propagation; it's counterproductive with omq's persistent connections. Enable jemalloc by default.
  • Weekly Dev Update 01/04/2021
    2 projects | /r/oxen_io | 31 Mar 2021
    Allow http in onion requests to an external server https://github.com/oxen-io/oxen-storage-server/pull/415

What are some alternatives?

When comparing cpr and oxen-storage-server you can also consider the following projects:

libcurl - A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features

loki-network - Lokinet is an anonymous, decentralized and IP based overlay network for the internet.

C++ REST SDK - The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

session-open-group-server

cpp-httplib - A C++ header-only HTTP/HTTPS server and client library

session-android - A private messenger for Android.

Boost.Beast - HTTP and WebSocket built on Boost.Asio in C++11

session-open-group-server

curlpp - C++ wrapper around libcURL

oxen-mq - Communications layer used for both the Oxen storage server and oxend

POCO - The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.

session-desktop - Session Desktop - Onion routing based messenger