{"id":17127595,"url":"https://github.com/cmazakas/foxy","last_synced_at":"2025-04-13T06:32:01.590Z","repository":{"id":55548630,"uuid":"144100538","full_name":"cmazakas/foxy","owner":"cmazakas","description":"Session-based Beast/Asio wrapper requiring C++14","archived":false,"fork":false,"pushed_at":"2020-12-22T15:44:43.000Z","size":564,"stargazers_count":66,"open_issues_count":0,"forks_count":10,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-03-26T23:11:11.587Z","etag":null,"topics":["asio","beast","catch2","cmake","cpp","cpp14","http","http-client","http-proxy","http-server"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cmazakas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_1_0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-09T04:25:33.000Z","updated_at":"2025-03-06T06:37:09.000Z","dependencies_parsed_at":"2022-08-15T03:00:40.512Z","dependency_job_id":null,"html_url":"https://github.com/cmazakas/foxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmazakas%2Ffoxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmazakas%2Ffoxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmazakas%2Ffoxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmazakas%2Ffoxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cmazakas","download_url":"https://codeload.github.com/cmazakas/foxy/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248674659,"owners_count":21143760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asio","beast","catch2","cmake","cpp","cpp14","http","http-client","http-proxy","http-server"],"created_at":"2024-10-14T19:04:57.948Z","updated_at":"2025-04-13T06:32:01.181Z","avatar_url":"https://github.com/cmazakas.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Foxy [![Build Status](https://travis-ci.org/LeonineKing1199/foxy.svg?branch=develop)](https://travis-ci.org/LeonineKing1199/foxy)\n\nLow-level HTTP session primitives for Beast/Asio + URL parsing and pct-coding\n\n[Examples and Reference](./docs/index.md#table-of-contents)\n\n## Requirements\n\n* C++14 and above\n* CMake 3.13+\n* Boost 1.75+\n* OpenSSL\n* Catch2 (for testing)\n\n[vcpkg](https://github.com/Microsoft/vcpkg) is recommended for easy dependency management.\n\n## Supported Compilers\n\nGCC 7+, Clang 6+, MSVC 2019\n\n## Why Foxy?\n\n* You're a Beast user who wants a reliable HTTP session vocabulary type\n* You want a client session abstraction that automatically handles DNS, TLS and certificate verification\n* You want a server session abstraction that can detect TLS handshakes and perform them\n* You need a URL parser\n* You need percent encoding and decoding\n* You need a TLS forward proxy\n* You want a convenient HTTP(S) server abstraction that handles connection setup + teardown\n\n## Description\n\nFoxy is a C++14 library that aims to make idiomatic usage of\n[Boost.Beast](https://www.boost.org/doc/libs/1_75_0/libs/beast/doc/html/index.html) and\n[Boost.Asio](https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio.html)\neasier.\n\nFoxy offers users low-level HTTP session primitives. These come in 3 forms:\n[session](./docs/reference/session.md#foxybasic_session),\n[client_session](./docs/reference/client_session.md#foxybasic_client_session) and\n[server_session](./docs/reference/server_session.md#foxybasic_server_session).\n\nThe `session` class is direction-agnostic while the `client_session` and `server_session` offer\nadditional functionality that implementors of clients and servers may find useful.\n\nThe utility of the session abstractions is that they abstract away the typical boilerplate required\nfor using [Boost.Beast](https://www.boost.org/doc/libs/1_75_0/libs/beast/doc/html/index.html).\nSessions encapsulate sockets, buffers and timers which are all used during stream operations. They\nalso reduce the API surface and enable implementors to focus solely on using Beast's `message` class\nand Asio's executor model.\n\nFoxy also touts a best-in-class [URL parser](./docs/reference/parse_uri.md#foxyparse_uri)\nalong with a set of URI parsing combinators adopted from\n[RFC 3996](https://tools.ietf.org/html/rfc3986#appendix-A). In addition, there are routines for\npercent encoding and dedoding URL components.\n\nFoxy is built on top of\n[Boost.Beast](https://www.boost.org/doc/libs/1_75_0/libs/beast/doc/html/index.html)\nand [Boost.Asio](https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio.html)\nalong with Boost.Spirit's library, [X3](https://www.boost.org/doc/libs/1_75_0/libs/spirit/doc/x3/html/index.html).\nFoxy does not treat these libraries as implementation details but exposes them directly. To this\nend, Foxy is as powerful as plain Beast/Asio are and anything one can do in Beast, one can do using\nFoxy.\n\nFoxy aims to be competitive with the HTTP libraries offered by both Node.js and Go.\n\nWhile these languages are significantly higher-level than C++ is, their standard HTTP libraries are\nlow-level from an abstract perspective. The success of these languages and their libraries has shown\nthat the modern web development is favoring an ever-lower set of HTTP APIs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmazakas%2Ffoxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmazakas%2Ffoxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmazakas%2Ffoxy/lists"}