-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
419 changed files
with
58,940 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<packages> | ||
<package id="libcpr" version="1.10.5" targetFramework="native" /> | ||
</packages> |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
# C++ Requests: Curl for People <img align="right" height="40" src="http://i.imgur.com/d9Xtyts.png"> | ||
|
||
[![Documentation](https://img.shields.io/badge/docs-online-informational?style=flat&link=https://docs.libcpr.org/)](https://docs.libcpr.org/) | ||
![CI](https://github.com/libcpr/cpr/workflows/CI/badge.svg) | ||
[![Gitter](https://badges.gitter.im/libcpr/community.svg)](https://gitter.im/libcpr/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) | ||
|
||
## Announcements | ||
|
||
* This project is being maintained by [Fabian Sauter](https://github.com/com8) and [Kilian Traub](https://github.com/KingKili). | ||
* For quick help, and discussion libcpr also offer a [gitter](https://gitter.im/libcpr/community?utm_source=share-link&utm_medium=link&utm_campaign=share-link) chat. | ||
|
||
## Supported Releases | ||
| Release | Min. C++ Standard | Status | Notes | | ||
|----------|-------------------|--------|-------| | ||
| master | `cpp17` | ![alt text][preview] | | | ||
| 1.10.x | `cpp17` | ![alt text][supported] | | | ||
| 1.9.x | `cpp11` | ![alt text][supported] | Supported until 01.01.2025 | | ||
| <= 1.8.x | `cpp11` | ![alt text][unsupported] | | | ||
|
||
[unsupported]: https://img.shields.io/badge/-unsupported-red "unsupported" | ||
[supported]: https://img.shields.io/badge/-supported-green "supported" | ||
[preview]: https://img.shields.io/badge/-preview-orange "preview" | ||
|
||
## TLDR | ||
|
||
C++ Requests is a simple wrapper around [libcurl](http://curl.haxx.se/libcurl) inspired by the excellent [Python Requests](https://github.com/kennethreitz/requests) project. | ||
|
||
Despite its name, libcurl's easy interface is anything but, and making mistakes, misusing it is a common source of error and frustration. Using the more expressive language facilities of `C++17` (or `C++11` in case you use cpr < 1.10.0), this library captures the essence of making network calls into a few concise idioms. | ||
|
||
Here's a quick GET request: | ||
|
||
```c++ | ||
#include <cpr/cpr.h> | ||
|
||
int main(int argc, char** argv) { | ||
cpr::Response r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"}, | ||
cpr::Authentication{"user", "pass", cpr::AuthMode::BASIC}, | ||
cpr::Parameters{{"anon", "true"}, {"key", "value"}}); | ||
r.status_code; // 200 | ||
r.header["content-type"]; // application/json; charset=utf-8 | ||
r.text; // JSON text string | ||
return 0; | ||
} | ||
``` | ||
And here's [less functional, more complicated code, without cpr](https://gist.github.com/whoshuu/2dc858b8730079602044). | ||
## Documentation | ||
[![Documentation](https://img.shields.io/badge/docs-online-informational?style=for-the-badge&link=https://docs.libcpr.org/)](https://docs.libcpr.org/) | ||
You can find the latest documentation [here](https://docs.libcpr.org/). It's a work in progress, but it should give you a better idea of how to use the library than the [tests](https://github.com/libcpr/cpr/tree/master/test) currently do. | ||
## Features | ||
C++ Requests currently supports: | ||
* Custom headers | ||
* Url encoded parameters | ||
* Url encoded POST values | ||
* Multipart form POST upload | ||
* File POST upload | ||
* Basic authentication | ||
* Bearer authentication | ||
* Digest authentication | ||
* NTLM authentication | ||
* Connection and request timeout specification | ||
* Timeout for low speed connection | ||
* Asynchronous requests | ||
* :cookie: support! | ||
* Proxy support | ||
* Callback interfaces | ||
* PUT methods | ||
* DELETE methods | ||
* HEAD methods | ||
* OPTIONS methods | ||
* PATCH methods | ||
* Thread Safe access to [libCurl](https://curl.haxx.se/libcurl/c/threadsafe.html) | ||
* OpenSSL and WinSSL support for HTTPS requests | ||
## Planned | ||
For a quick overview about the planed features, have a look at the next [Milestones](https://github.com/libcpr/cpr/milestones). | ||
## Usage | ||
### CMake | ||
#### fetch_content: | ||
If you already have a CMake project you need to integrate C++ Requests with, the primary way is to use `fetch_content`. | ||
Add the following to your `CMakeLists.txt`. | ||
```cmake | ||
include(FetchContent) | ||
FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git | ||
GIT_TAG 0817715923c9705e68994eb52ef9df3f6845beba) # The commit hash for 1.10.x. Replace with the latest from: https://github.com/libcpr/cpr/releases | ||
FetchContent_MakeAvailable(cpr) | ||
``` | ||
|
||
This will produce the target `cpr::cpr` which you can link against the typical way: | ||
|
||
```cmake | ||
target_link_libraries(your_target_name PRIVATE cpr::cpr) | ||
``` | ||
|
||
That should do it! | ||
There's no need to handle `libcurl` yourself. All dependencies are taken care of for you. | ||
All of this can be found in an example [**here**](https://github.com/libcpr/example-cmake-fetch-content). | ||
|
||
#### find_package(): | ||
If you prefer not to use `fetch_content`, you can download, build, and install the library and then use CMake `find_package()` function to integrate it into a project. | ||
|
||
**Note:** this feature is feasible only if CPR_USE_SYSTEM_CURL is set. (see [#645](https://github.com/libcpr/cpr/pull/645)) | ||
```Bash | ||
$ git clone https://github.com/libcpr/cpr.git | ||
$ cd cpr && mkdir build && cd build | ||
$ cmake .. -DCPR_USE_SYSTEM_CURL=ON | ||
$ cmake --build . | ||
$ sudo cmake --install . | ||
``` | ||
In your `CMakeLists.txt`: | ||
```cmake | ||
find_package(cpr REQUIRED) | ||
add_executable(your_target_name your_target_name.cpp) | ||
target_link_libraries(your_target_name PRIVATE cpr::cpr) | ||
``` | ||
|
||
### Bazel | ||
|
||
Please refer to [hedronvision/bazel-make-cc-https-easy](https://github.com/hedronvision/bazel-make-cc-https-easy). | ||
|
||
### Packages for Linux Distributions | ||
|
||
Alternatively, you may install a package specific to your Linux distribution. Since so few distributions currently have a package for cpr, most users will not be able to run your program with this approach. | ||
|
||
Currently, we are aware of packages for the following distributions: | ||
|
||
* [Arch Linux (AUR)](https://aur.archlinux.org/packages/cpr) | ||
|
||
If there's no package for your distribution, try making one! If you do, and it is added to your distribution's repositories, please submit a pull request to add it to the list above. However, please only do this if you plan to actively maintain the package. | ||
|
||
### NuGet Package | ||
|
||
For Windows, there is also a libcpr NuGet package available. Currently, x86 and x64 builds are supported with release and debug configuration. | ||
|
||
The package can be found here: [NuGet.org](https://www.nuget.org/packages/libcpr/) | ||
|
||
## Requirements | ||
|
||
The only explicit requirements are: | ||
|
||
* a `C++17` compatible compiler such as Clang or GCC. The minimum required version of GCC is unknown, so if anyone has trouble building this library with a specific version of GCC, do let us know | ||
* in case you only have a `C++11` compatible compiler available, all versions below cpr 1.9.x are for you. The 1.10.0 release of cpr switches to `C++17` as a requirement. | ||
* If you would like to perform https requests `OpenSSL` and its development libraries are required. | ||
|
||
## Building cpr - Using vcpkg | ||
|
||
You can download and install cpr using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager: | ||
```Bash | ||
git clone https://github.com/Microsoft/vcpkg.git | ||
cd vcpkg | ||
./bootstrap-vcpkg.sh | ||
./vcpkg integrate install | ||
./vcpkg install cpr | ||
``` | ||
The `cpr` port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. | ||
|
||
## Building cpr - Using Conan | ||
|
||
You can download and install `cpr` using the [Conan](https://conan.io/) package manager. Setup your CMakeLists.txt (see [Conan documentation](https://docs.conan.io/en/latest/integrations/build_system.html) on how to use MSBuild, Meson and others). | ||
An example can be found [**here**](https://github.com/libcpr/example-cmake-conan). | ||
|
||
The `cpr` package in Conan is kept up to date by Conan contributors. If the version is out of date, please [create an issue or pull request](https://github.com/conan-io/conan-center-index) on the `conan-center-index` repository. |
196 changes: 196 additions & 0 deletions
196
packages/libcpr.1.10.5/build/native/Win32/Debug/bin/curl-config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,196 @@ | ||
#! /bin/sh | ||
#*************************************************************************** | ||
# _ _ ____ _ | ||
# Project ___| | | | _ \| | | ||
# / __| | | | |_) | | | ||
# | (__| |_| | _ <| |___ | ||
# \___|\___/|_| \_\_____| | ||
# | ||
# Copyright (C) Daniel Stenberg, <[email protected]>, et al. | ||
# | ||
# This software is licensed as described in the file COPYING, which | ||
# you should have received as part of this distribution. The terms | ||
# are also available at https://curl.se/docs/copyright.html. | ||
# | ||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell | ||
# copies of the Software, and permit persons to whom the Software is | ||
# furnished to do so, under the terms of the COPYING file. | ||
# | ||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
# KIND, either express or implied. | ||
# | ||
# SPDX-License-Identifier: curl | ||
# | ||
########################################################################### | ||
|
||
prefix="C:/Program Files (x86)/cpr" | ||
exec_prefix=${prefix} | ||
includedir=${prefix}/include | ||
cppflag_curl_staticlib= | ||
|
||
usage() | ||
{ | ||
cat <<EOF | ||
Usage: curl-config [OPTION] | ||
Available values for OPTION include: | ||
--built-shared says 'yes' if libcurl was built shared | ||
--ca ca bundle install path | ||
--cc compiler | ||
--cflags pre-processor and compiler flags | ||
--checkfor [version] check for (lib)curl of the specified version | ||
--configure the arguments given to configure when building curl | ||
--features newline separated list of enabled features | ||
--help display this help and exit | ||
--libs library linking information | ||
--prefix curl install prefix | ||
--protocols newline separated list of enabled protocols | ||
--ssl-backends output the SSL backends libcurl was built to support | ||
--static-libs static libcurl library linking information | ||
--version output version information | ||
--vernum output the version information as a number (hexadecimal) | ||
EOF | ||
|
||
exit $1 | ||
} | ||
|
||
if test $# -eq 0; then | ||
usage 1 | ||
fi | ||
|
||
while test $# -gt 0; do | ||
case "$1" in | ||
# this deals with options in the style | ||
# --option=value and extracts the value part | ||
# [not currently used] | ||
-*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; | ||
*) value= ;; | ||
esac | ||
|
||
case "$1" in | ||
--built-shared) | ||
echo yes | ||
;; | ||
|
||
--ca) | ||
echo | ||
;; | ||
|
||
--cc) | ||
echo "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.35.32215/bin/HostX64/x86/cl.exe" | ||
;; | ||
|
||
--prefix) | ||
echo "$prefix" | ||
;; | ||
|
||
--feature|--features) | ||
for feature in SSL IPv6 unixsockets AsynchDNS Largefile SSPI alt-svc HSTS SPNEGO Kerberos NTLM HTTPS-proxy threadsafe ""; do | ||
test -n "$feature" && echo "$feature" | ||
done | ||
;; | ||
|
||
--protocols) | ||
for protocol in HTTP HTTPS; do | ||
echo "$protocol" | ||
done | ||
;; | ||
|
||
--version) | ||
echo libcurl 8.4.0 | ||
exit 0 | ||
;; | ||
|
||
--checkfor) | ||
checkfor=$2 | ||
cmajor=`echo $checkfor | cut -d. -f1` | ||
cminor=`echo $checkfor | cut -d. -f2` | ||
# when extracting the patch part we strip off everything after a | ||
# dash as that's used for things like version 1.2.3-CVS | ||
cpatch=`echo $checkfor | cut -d. -f3 | cut -d- -f1` | ||
|
||
vmajor=`echo 8.4.0 | cut -d. -f1` | ||
vminor=`echo 8.4.0 | cut -d. -f2` | ||
# when extracting the patch part we strip off everything after a | ||
# dash as that's used for things like version 1.2.3-CVS | ||
vpatch=`echo 8.4.0 | cut -d. -f3 | cut -d- -f1` | ||
|
||
if test "$vmajor" -gt "$cmajor"; then | ||
exit 0; | ||
fi | ||
if test "$vmajor" -eq "$cmajor"; then | ||
if test "$vminor" -gt "$cminor"; then | ||
exit 0 | ||
fi | ||
if test "$vminor" -eq "$cminor"; then | ||
if test "$cpatch" -le "$vpatch"; then | ||
exit 0 | ||
fi | ||
fi | ||
fi | ||
|
||
echo "requested version $checkfor is newer than existing 8.4.0" | ||
exit 1 | ||
;; | ||
|
||
--vernum) | ||
echo 080400 | ||
exit 0 | ||
;; | ||
|
||
--help) | ||
usage 0 | ||
;; | ||
|
||
--cflags) | ||
if test "X$cppflag_curl_staticlib" = "X-DCURL_STATICLIB"; then | ||
CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB " | ||
else | ||
CPPFLAG_CURL_STATICLIB="" | ||
fi | ||
if test "X${prefix}/include" = "X/usr/include"; then | ||
echo "$CPPFLAG_CURL_STATICLIB" | ||
else | ||
echo "${CPPFLAG_CURL_STATICLIB}-I${prefix}/include" | ||
fi | ||
;; | ||
|
||
--libs) | ||
if test "XC:/Program Files (x86)/cpr/lib" != "X/usr/lib" -a "XC:/Program Files (x86)/cpr/lib" != "X/usr/lib64"; then | ||
CURLLIBDIR="-LC:/Program Files (x86)/cpr/lib " | ||
else | ||
CURLLIBDIR="" | ||
fi | ||
if test "Xyes" = "Xno"; then | ||
echo ${CURLLIBDIR}-lcurl -lws2_32 -ladvapi32 -lcrypt32 -lbcrypt | ||
else | ||
echo ${CURLLIBDIR}-lcurl | ||
fi | ||
;; | ||
--ssl-backends) | ||
echo "Schannel" | ||
;; | ||
|
||
--static-libs) | ||
if test "Xno" != "Xno" ; then | ||
echo "C:/Program Files (x86)/cpr/lib/libcurl.lib" /machine:X86 -lws2_32 -ladvapi32 -lcrypt32 -lbcrypt | ||
else | ||
echo "curl was built with static libraries disabled" >&2 | ||
exit 1 | ||
fi | ||
;; | ||
|
||
--configure) | ||
echo | ||
;; | ||
|
||
*) | ||
echo "unknown option: $1" | ||
usage 1 | ||
;; | ||
esac | ||
shift | ||
done | ||
|
||
exit 0 |
Oops, something went wrong.