{"id":23141054,"url":"https://github.com/tychosoft/webforcpp","last_synced_at":"2025-04-04T11:19:11.335Z","repository":{"id":267329791,"uuid":"825354433","full_name":"tychosoft/webforcpp","owner":"tychosoft","description":"Modern header-only web access for C++17","archived":false,"fork":false,"pushed_at":"2025-02-18T08:50:17.000Z","size":118,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-18T09:36:25.494Z","etag":null,"topics":["cpp","http","json"],"latest_commit_sha":null,"homepage":"https://www.tychosoft.com/tychosoft/webforcpp","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tychosoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-07T14:55:13.000Z","updated_at":"2025-02-18T08:50:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"604f3586-a259-4d6f-afff-2aab6d41496d","html_url":"https://github.com/tychosoft/webforcpp","commit_stats":null,"previous_names":["tychosoft/webforcpp"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tychosoft%2Fwebforcpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tychosoft%2Fwebforcpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tychosoft%2Fwebforcpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tychosoft%2Fwebforcpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tychosoft","download_url":"https://codeload.github.com/tychosoft/webforcpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247166170,"owners_count":20894654,"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":["cpp","http","json"],"created_at":"2024-12-17T14:12:16.286Z","updated_at":"2025-04-04T11:19:11.329Z","avatar_url":"https://github.com/tychosoft.png","language":"C++","readme":"# About WebForCPP\n\nThis package offers modern web access using header-only libraries for C++17.\nThis includes the httplib.h header-only library for http(s) clients and\nservers, and a linted sajson.h for json parsing. In addition, supplemental\nheader-only libraries that access various specific web api services will also\nbe added. The core dependencies only required C++11, but our extensions and\napi headers may only support C++17 and later.\n\nThis choice of using httplib and sajson was for very generic cross-platform\nfunctionality, https functionality built around openssl, and broad licensing\ncompatibility. The collective work functions in effect on a MIT license, which\nhttplib and any additional api headers use. The sajson license is fully\npermissive as long as the copyright notice is kept in the sajson header.\n\nWebForCPP requires CMake to build. It should build and work with GCC (9 or\nlater), with Clang (14? or later), and MSVC.  Besides GNU/Linux and BSD\nsystems, webforcpp is portable to and can support the MingW platform target as\ninstalled by Debian when selecting posix runtime, and even native MS Visual\nStudio builds. The minimum requirement is a C++17 compiler (or later).\n\nHttplib uses blocking I/O, which means http requests launched in threads may\nblock waiting for I/O completion. The simplest way to unblock an outstanding\napi request early is probably to force close the httplib client context stop()\nmethod from another thread. This and other interruptions may generate a SIGPIPE\non posix platforms, which likely should be ignored. The individual API headers\nmay have a make\\_XXX function to create an exposed client context in a shared\npointer that can then be used for forced closure and a separate api request\nfunction that uses a client context which can be handed off to a client thread.\n\n## Dependencies\n\nWebforcpp uses openssl for crypto operations and https related functionality.\nIn addition, C++ thread support may have to be enabled to use C++ thread\noperations. The cmake/features.cmake file shows how to test for and enable\nthese dependencies correctly from CMake.\n\n## Distributions\n\nDistributions of this package are provided as detached source tarballs made\nfrom a tagged release from our public gitlab repository or by building the dist\ntarget. These stand-alone detached tarballs can be used to make packages for\nmany GNU/Linux systems, and for BSD ports. They may also be used to build and\ninstall the software directly on a target platform.\n\nThe latest public release source tarball can be produced by an auto-generated\ntarball from a tagged release in the projects public git repository at\nhttps://gitlab.com/tychosoft/webforcpp. Webforcpp can also be easily vendored\nin other software using git modules from this public repo. I also package\nWebforcpp for Alpine Linux. There is no reason this cannot easily be packaged\nfor use on other distributions, for BSD ports, vcpkg, etc, as well.\n\n## Participation\n\nThis project is offered as free (as in freedom) software for public use and has\na public project page at https://www.gitlab.com/tychosoft/webforcpp which has\nan issue tracker where people can submit public bug reports and a public git\nrepository. Patches and merge requests may be submitted in the issue tracker\nor thru email. Support requests and other kinds of inquiries may also be sent\nthru the tychosoft gitlab help desktop service. Other details about\nparticipation may be found in CONTRIBUTING.md.\n\n## Testing\n\nThere are testing programs for each header. These run simple tests that will be\nexpanded to improve code coverage over time. The test programs are the only\nbuilt target making this library by itself, and the test programs in this\npackage work with the cmake ctest framework. They may also be used as simple\nexamples of how a given header works. There is also a **lint** target that can\nbe used to verify code changes.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftychosoft%2Fwebforcpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftychosoft%2Fwebforcpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftychosoft%2Fwebforcpp/lists"}