All Projects → cmazakas → foxy

cmazakas / foxy

Licence: BSL-1.0 license
Session-based Beast/Asio wrapper requiring C++14

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to foxy

Foxy
Session-based Beast/Asio wrapper requiring C++14
Stars: ✭ 57 (-6.56%)
Mutual labels:  http-client, http-proxy, asio, http-server
Qtnetworkng
QtNetwork Next Generation. A coroutine based network framework for Qt/C++, with more simpler API than boost::asio.
Stars: ✭ 125 (+104.92%)
Mutual labels:  http-client, http-proxy, asio, http-server
httoop
HTTOOP - a fully object oriented HTTP protocol library written in python
Stars: ✭ 15 (-75.41%)
Mutual labels:  http-client, http-proxy, http-server
malloy
A C++ library providing embeddable server & client components for both HTTP and WebSocket.
Stars: ✭ 29 (-52.46%)
Mutual labels:  http-client, beast, http-server
Beast
HTTP and WebSocket built on Boost.Asio in C++11
Stars: ✭ 3,241 (+5213.11%)
Mutual labels:  http-client, asio, http-server
Cxxhttp
Asynchronous, Header-only C++ HTTP-over-(TCP|UNIX Socket|STDIO) Library
Stars: ✭ 24 (-60.66%)
Mutual labels:  http-client, asio, http-server
Donkey
Modern Clojure HTTP server and client built for ease of use and performance
Stars: ✭ 199 (+226.23%)
Mutual labels:  http-client, http-server
cpphttpstack
c++ api for http client & server
Stars: ✭ 30 (-50.82%)
Mutual labels:  http-client, http-server
hunt-http
http library for D, support http 1.1 / http 2.0 (http2) / websocket server and client.
Stars: ✭ 29 (-52.46%)
Mutual labels:  http-client, http-server
http4ts
Server as a Function http toolkit for TypeScript & JavaScript
Stars: ✭ 30 (-50.82%)
Mutual labels:  http-client, http-server
Http4s
A minimal, idiomatic Scala interface for HTTP
Stars: ✭ 2,173 (+3462.3%)
Mutual labels:  http-client, http-server
go-sse
Fully featured, spec-compliant HTML5 server-sent events library
Stars: ✭ 165 (+170.49%)
Mutual labels:  http-client, http-server
rawhttp
HTTP library to make it easy to deal with raw HTTP.
Stars: ✭ 156 (+155.74%)
Mutual labels:  http-client, http-server
Http Kit
http-kit is a minimalist, event-driven, high-performance Clojure HTTP server/client library with WebSocket and asynchronous support
Stars: ✭ 2,234 (+3562.3%)
Mutual labels:  http-client, http-server
EthernetWebServer SSL
Simple TLS/SSL Ethernet WebServer, HTTP Client and WebSocket Client library for for AVR, Portenta_H7, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52 and RASPBERRY_PI_PICO boards using Ethernet shields W5100, W5200, W5500, ENC28J60 or Teensy 4.1 NativeEthernet/QNEthernet. It now supports Ethernet TLS/SSL Client. The library supports …
Stars: ✭ 40 (-34.43%)
Mutual labels:  http-client, http-server
Zio Http
A scala library to write Http apps.
Stars: ✭ 162 (+165.57%)
Mutual labels:  http-client, http-server
matador
Take your appclication by the horns
Stars: ✭ 59 (-3.28%)
Mutual labels:  http-client, http-server
http4s-good-practices
Collection of what I consider good practices in Http4s (WIP)
Stars: ✭ 74 (+21.31%)
Mutual labels:  http-client, http-server
BCA-Phantom
A multi-platform HTTP(S) Reverse Shell Server and Client in Python 3
Stars: ✭ 80 (+31.15%)
Mutual labels:  http-client, http-server
http-accept
Parse Accept and Accept-Language HTTP headers in Ruby.
Stars: ✭ 69 (+13.11%)
Mutual labels:  http-client, http-server

Foxy Build Status

Low-level HTTP session primitives for Beast/Asio + URL parsing and pct-coding

Examples and Reference

Requirements

  • C++14 and above
  • CMake 3.13+
  • Boost 1.75+
  • OpenSSL
  • Catch2 (for testing)

vcpkg is recommended for easy dependency management.

Supported Compilers

GCC 7+, Clang 6+, MSVC 2019

Why Foxy?

  • You're a Beast user who wants a reliable HTTP session vocabulary type
  • You want a client session abstraction that automatically handles DNS, TLS and certificate verification
  • You want a server session abstraction that can detect TLS handshakes and perform them
  • You need a URL parser
  • You need percent encoding and decoding
  • You need a TLS forward proxy
  • You want a convenient HTTP(S) server abstraction that handles connection setup + teardown

Description

Foxy is a C++14 library that aims to make idiomatic usage of Boost.Beast and Boost.Asio easier.

Foxy offers users low-level HTTP session primitives. These come in 3 forms: session, client_session and server_session.

The session class is direction-agnostic while the client_session and server_session offer additional functionality that implementors of clients and servers may find useful.

The utility of the session abstractions is that they abstract away the typical boilerplate required for using Boost.Beast. Sessions encapsulate sockets, buffers and timers which are all used during stream operations. They also reduce the API surface and enable implementors to focus solely on using Beast's message class and Asio's executor model.

Foxy also touts a best-in-class URL parser along with a set of URI parsing combinators adopted from RFC 3996. In addition, there are routines for percent encoding and dedoding URL components.

Foxy is built on top of Boost.Beast and Boost.Asio along with Boost.Spirit's library, X3. Foxy does not treat these libraries as implementation details but exposes them directly. To this end, Foxy is as powerful as plain Beast/Asio are and anything one can do in Beast, one can do using Foxy.

Foxy aims to be competitive with the HTTP libraries offered by both Node.js and Go.

While these languages are significantly higher-level than C++ is, their standard HTTP libraries are low-level from an abstract perspective. The success of these languages and their libraries has shown that the modern web development is favoring an ever-lower set of HTTP APIs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].