From edea8f840b65ab126c510a696b2b0187e77a6db6 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Thu, 12 Jul 2018 22:37:23 +0200 Subject: [PATCH 1/8] add unix socket support --- cpr/session.cpp | 9 +++++++++ include/cpr/session.h | 2 ++ include/cpr/unix_socket.h | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 include/cpr/unix_socket.h diff --git a/cpr/session.cpp b/cpr/session.cpp index 371a1e2ef..0a9037e18 100644 --- a/cpr/session.cpp +++ b/cpr/session.cpp @@ -299,6 +299,13 @@ void Session::Impl::SetVerifySsl(const VerifySsl& verify) { } } +void Session::Impl::SetUnixSocket(const UnixSocket& unix_socket) { + auto curl = curl_->handle; + if (curl) { + curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, unix_socket); + } +} + Response Session::Impl::Delete() { auto curl = curl_->handle; if (curl) { @@ -465,6 +472,8 @@ void Session::SetOption(const Body& body) { pimpl_->SetBody(body); } void Session::SetOption(Body&& body) { pimpl_->SetBody(std::move(body)); } void Session::SetOption(const LowSpeed& low_speed) { pimpl_->SetLowSpeed(low_speed); } void Session::SetOption(const VerifySsl& verify) { pimpl_->SetVerifySsl(verify); } +void Session::SetOption(const UnixSocket& unix_socket) { pimpl_->SetUnixSocket(unix_socket); } + Response Session::Delete() { return pimpl_->Delete(); } Response Session::Get() { return pimpl_->Get(); } Response Session::Head() { return pimpl_->Head(); } diff --git a/include/cpr/session.h b/include/cpr/session.h index bf6b67171..cb1969585 100644 --- a/include/cpr/session.h +++ b/include/cpr/session.h @@ -18,6 +18,7 @@ #include "cpr/timeout.h" #include "cpr/low_speed.h" #include "cpr/ssl_options.h" +#include "cpr/unix_socket.h" namespace cpr { @@ -68,6 +69,7 @@ class Session { void SetOption(const Body& body); void SetOption(const LowSpeed& low_speed); void SetOption(const VerifySsl& verify); + void SetOption(const UnixSocket& unix_socket); Response Delete(); Response Get(); diff --git a/include/cpr/unix_socket.h b/include/cpr/unix_socket.h new file mode 100644 index 000000000..1f31bb842 --- /dev/null +++ b/include/cpr/unix_socket.h @@ -0,0 +1,22 @@ +#ifndef CPR_UNIX_SOCKET_H +#define CPR_UNIX_SOCKET_H + +#include + +#include "cpr/defines.h" + +namespace cpr { + +class UnixSocket { + public: + template + UnixSocket(UnixSocketType&& unix_socket) + : unix_socket_{CPR_FWD(unix_socket)} {} + + private: + std::string unix_socket_; +}; + +} // namespace cpr + +#endif From 42ba005ebae23f43d3762b2f2b60488c7a54e1f3 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Thu, 12 Jul 2018 23:05:29 +0200 Subject: [PATCH 2/8] add setunixsocket declaration --- include/cpr/session.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/cpr/session.h b/include/cpr/session.h index cb1969585..c99b21c51 100644 --- a/include/cpr/session.h +++ b/include/cpr/session.h @@ -47,6 +47,8 @@ class Session { void SetBody(const Body& body); void SetLowSpeed(const LowSpeed& low_speed); void SetVerifySsl(const VerifySsl& verify); + void SetUnixSocket(const UnixSocket& unix_socket); + // Used in templated functions void SetOption(const Url& url); From bee4745828827b38ec370e39d42f149f76a05601 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Thu, 12 Jul 2018 23:17:39 +0200 Subject: [PATCH 3/8] fix unix socket --- cpr/CMakeLists.txt | 2 ++ cpr/session.cpp | 3 ++- cpr/unix_socket.cpp | 9 +++++++++ include/cpr/unix_socket.h | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 cpr/unix_socket.cpp diff --git a/cpr/CMakeLists.txt b/cpr/CMakeLists.txt index 39c6c128b..235fa0424 100644 --- a/cpr/CMakeLists.txt +++ b/cpr/CMakeLists.txt @@ -15,6 +15,7 @@ add_library(${CPR_LIBRARIES} session.cpp timeout.cpp util.cpp + unix_socket.cpp ssl_options.cpp # Header files (useful in IDEs) @@ -37,6 +38,7 @@ add_library(${CPR_LIBRARIES} "${CPR_INCLUDE_DIRS}/cpr/session.h" "${CPR_INCLUDE_DIRS}/cpr/timeout.h" "${CPR_INCLUDE_DIRS}/cpr/util.h" + "${CPR_INCLUDE_DIRS}/cpr/unix_socket.h" "${CPR_INCLUDE_DIRS}/cpr/ssl_options.h") message(STATUS "Using CURL_LIBRARIES: ${CURL_LIBRARIES}.") diff --git a/cpr/session.cpp b/cpr/session.cpp index 0a9037e18..bba3e3ea9 100644 --- a/cpr/session.cpp +++ b/cpr/session.cpp @@ -35,6 +35,7 @@ class Session::Impl { void SetBody(const Body& body); void SetLowSpeed(const LowSpeed& low_speed); void SetVerifySsl(const VerifySsl& verify); + void SetUnixSocket(const UnixSocket& unix_socket); Response Delete(); Response Get(); @@ -302,7 +303,7 @@ void Session::Impl::SetVerifySsl(const VerifySsl& verify) { void Session::Impl::SetUnixSocket(const UnixSocket& unix_socket) { auto curl = curl_->handle; if (curl) { - curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, unix_socket); + curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, unix_socket.GetUnixSocketString()); } } diff --git a/cpr/unix_socket.cpp b/cpr/unix_socket.cpp new file mode 100644 index 000000000..dd2d0ea23 --- /dev/null +++ b/cpr/unix_socket.cpp @@ -0,0 +1,9 @@ +#include "cpr/unix_socket.h" + +namespace cpr { + +const char* UnixSocket::GetUnixSocketString() const noexcept { + return unix_socket_.data(); +} + +} // namespace cpr diff --git a/include/cpr/unix_socket.h b/include/cpr/unix_socket.h index 1f31bb842..6e3038d1f 100644 --- a/include/cpr/unix_socket.h +++ b/include/cpr/unix_socket.h @@ -13,6 +13,8 @@ class UnixSocket { UnixSocket(UnixSocketType&& unix_socket) : unix_socket_{CPR_FWD(unix_socket)} {} + const char* GetUnixSocketString() const noexcept; + private: std::string unix_socket_; }; From 26492a1beb5d9e44b6f82a512be108535d4fc6d2 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Thu, 4 Oct 2018 09:37:49 +0200 Subject: [PATCH 4/8] don't use system surl for test --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 93d471f89..744728986 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ env: global: - BUILD_CPR_TESTS=ON - GTEST_SHUFFLE=1 - - USE_SYSTEM_CURL=ON + - USE_SYSTEM_CURL=OFF matrix: - COMPILER=g++-4.9 CCOMPILER=gcc-4.9 GENERATE_COVERAGE=ON FORMAT_CHECK=ON From 3c106ff18f77699605d7b40bc7cf08ce4965e284 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Thu, 4 Oct 2018 10:36:58 +0200 Subject: [PATCH 5/8] use curl parameter to disable Unix socket in cpr --- cpr/session.cpp | 5 +++++ cpr/unix_socket.cpp | 3 +++ include/cpr/session.h | 5 ++++- include/cpr/unix_socket.h | 4 ++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cpr/session.cpp b/cpr/session.cpp index bba3e3ea9..ed14ae927 100644 --- a/cpr/session.cpp +++ b/cpr/session.cpp @@ -35,7 +35,10 @@ class Session::Impl { void SetBody(const Body& body); void SetLowSpeed(const LowSpeed& low_speed); void SetVerifySsl(const VerifySsl& verify); +#ifdef USE_UNIX_SOCKETS void SetUnixSocket(const UnixSocket& unix_socket); +#endif + Response Delete(); Response Get(); @@ -300,12 +303,14 @@ void Session::Impl::SetVerifySsl(const VerifySsl& verify) { } } +#ifdef USE_UNIX_SOCKETS void Session::Impl::SetUnixSocket(const UnixSocket& unix_socket) { auto curl = curl_->handle; if (curl) { curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, unix_socket.GetUnixSocketString()); } } +#endif Response Session::Impl::Delete() { auto curl = curl_->handle; diff --git a/cpr/unix_socket.cpp b/cpr/unix_socket.cpp index dd2d0ea23..33663a8b5 100644 --- a/cpr/unix_socket.cpp +++ b/cpr/unix_socket.cpp @@ -1,3 +1,5 @@ +#ifdef USE_UNIX_SOCKETS + #include "cpr/unix_socket.h" namespace cpr { @@ -7,3 +9,4 @@ const char* UnixSocket::GetUnixSocketString() const noexcept { } } // namespace cpr +#endif diff --git a/include/cpr/session.h b/include/cpr/session.h index c99b21c51..aa32be81c 100644 --- a/include/cpr/session.h +++ b/include/cpr/session.h @@ -47,8 +47,9 @@ class Session { void SetBody(const Body& body); void SetLowSpeed(const LowSpeed& low_speed); void SetVerifySsl(const VerifySsl& verify); +#ifdef USE_UNIX_SOCKETS void SetUnixSocket(const UnixSocket& unix_socket); - +#endif // Used in templated functions void SetOption(const Url& url); @@ -71,7 +72,9 @@ class Session { void SetOption(const Body& body); void SetOption(const LowSpeed& low_speed); void SetOption(const VerifySsl& verify); +#ifdef USE_UNIX_SOCKETS void SetOption(const UnixSocket& unix_socket); +#endif Response Delete(); Response Get(); diff --git a/include/cpr/unix_socket.h b/include/cpr/unix_socket.h index 6e3038d1f..3d29184ce 100644 --- a/include/cpr/unix_socket.h +++ b/include/cpr/unix_socket.h @@ -1,6 +1,8 @@ #ifndef CPR_UNIX_SOCKET_H #define CPR_UNIX_SOCKET_H +#ifdef USE_UNIX_SOCKETS + #include #include "cpr/defines.h" @@ -22,3 +24,5 @@ class UnixSocket { } // namespace cpr #endif + +#endif From 094fa71f8929a180f8954a3ccb2e8991c6e84af4 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Thu, 4 Oct 2018 10:44:14 +0200 Subject: [PATCH 6/8] fix missing USE_UNIX_SOCKETS --- cpr/session.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpr/session.cpp b/cpr/session.cpp index ed14ae927..a7701bc20 100644 --- a/cpr/session.cpp +++ b/cpr/session.cpp @@ -478,7 +478,10 @@ void Session::SetOption(const Body& body) { pimpl_->SetBody(body); } void Session::SetOption(Body&& body) { pimpl_->SetBody(std::move(body)); } void Session::SetOption(const LowSpeed& low_speed) { pimpl_->SetLowSpeed(low_speed); } void Session::SetOption(const VerifySsl& verify) { pimpl_->SetVerifySsl(verify); } +#ifdef USE_UNIX_SOCKETS void Session::SetOption(const UnixSocket& unix_socket) { pimpl_->SetUnixSocket(unix_socket); } +#endif + Response Session::Delete() { return pimpl_->Delete(); } Response Session::Get() { return pimpl_->Get(); } From da890ee1d7624b19a8daec9b56d59fcbccd08816 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Thu, 4 Oct 2018 11:35:23 +0200 Subject: [PATCH 7/8] reenable SYSTEM CURL --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 744728986..93d471f89 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ env: global: - BUILD_CPR_TESTS=ON - GTEST_SHUFFLE=1 - - USE_SYSTEM_CURL=OFF + - USE_SYSTEM_CURL=ON matrix: - COMPILER=g++-4.9 CCOMPILER=gcc-4.9 GENERATE_COVERAGE=ON FORMAT_CHECK=ON From 1c8bfe57b99f67d04e504c3c9ae3a3ad14d4edc2 Mon Sep 17 00:00:00 2001 From: edmbernard Date: Tue, 21 Apr 2020 09:18:40 +0200 Subject: [PATCH 8/8] feat: remove USE_UNIX_SOCKET --- cpr/session.cpp | 6 ------ cpr/unix_socket.cpp | 2 -- include/cpr/session.h | 4 ---- include/cpr/unix_socket.h | 4 ---- 4 files changed, 16 deletions(-) diff --git a/cpr/session.cpp b/cpr/session.cpp index ecf033f22..e86dc8ca8 100644 --- a/cpr/session.cpp +++ b/cpr/session.cpp @@ -41,9 +41,7 @@ class Session::Impl { void SetVerbose(const Verbose& verbose); void SetVerifySsl(const VerifySsl& verify); void SetLimitRate(const LimitRate& limit_rate); -#ifdef USE_UNIX_SOCKETS void SetUnixSocket(const UnixSocket& unix_socket); -#endif Response Delete(); Response Download(std::ofstream& file); @@ -344,14 +342,12 @@ void Session::Impl::SetVerifySsl(const VerifySsl& verify) { } } -#ifdef USE_UNIX_SOCKETS void Session::Impl::SetUnixSocket(const UnixSocket& unix_socket) { auto curl = curl_->handle; if (curl) { curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, unix_socket.GetUnixSocketString()); } } -#endif Response Session::Impl::Delete() { auto curl = curl_->handle; @@ -591,9 +587,7 @@ void Session::SetOption(Body&& body) { pimpl_->SetBody(std::move(body)); } void Session::SetOption(const LowSpeed& low_speed) { pimpl_->SetLowSpeed(low_speed); } void Session::SetOption(const VerifySsl& verify) { pimpl_->SetVerifySsl(verify); } void Session::SetOption(const Verbose& verbose) { pimpl_->SetVerbose(verbose); } -#ifdef USE_UNIX_SOCKETS void Session::SetOption(const UnixSocket& unix_socket) { pimpl_->SetUnixSocket(unix_socket); } -#endif Response Session::Delete() { return pimpl_->Delete(); } Response Session::Download(std::ofstream& file) { return pimpl_->Download(file); } diff --git a/cpr/unix_socket.cpp b/cpr/unix_socket.cpp index 33663a8b5..7f0884e45 100644 --- a/cpr/unix_socket.cpp +++ b/cpr/unix_socket.cpp @@ -1,4 +1,3 @@ -#ifdef USE_UNIX_SOCKETS #include "cpr/unix_socket.h" @@ -9,4 +8,3 @@ const char* UnixSocket::GetUnixSocketString() const noexcept { } } // namespace cpr -#endif diff --git a/include/cpr/session.h b/include/cpr/session.h index 06c202c9f..5c33f5113 100644 --- a/include/cpr/session.h +++ b/include/cpr/session.h @@ -57,9 +57,7 @@ class Session { void SetBody(const Body& body); void SetLowSpeed(const LowSpeed& low_speed); void SetVerifySsl(const VerifySsl& verify); -#ifdef USE_UNIX_SOCKETS void SetUnixSocket(const UnixSocket& unix_socket); -#endif // Used in templated functions void SetOption(const Url& url); @@ -86,9 +84,7 @@ class Session { void SetOption(const LowSpeed& low_speed); void SetOption(const VerifySsl& verify); void SetOption(const Verbose& verbose); -#ifdef USE_UNIX_SOCKETS void SetOption(const UnixSocket& unix_socket); -#endif Response Delete(); Response Download(std::ofstream& file); diff --git a/include/cpr/unix_socket.h b/include/cpr/unix_socket.h index 3d29184ce..6e3038d1f 100644 --- a/include/cpr/unix_socket.h +++ b/include/cpr/unix_socket.h @@ -1,8 +1,6 @@ #ifndef CPR_UNIX_SOCKET_H #define CPR_UNIX_SOCKET_H -#ifdef USE_UNIX_SOCKETS - #include #include "cpr/defines.h" @@ -24,5 +22,3 @@ class UnixSocket { } // namespace cpr #endif - -#endif