diff options
Diffstat (limited to 'butl/curl.txx')
-rw-r--r-- | butl/curl.txx | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/butl/curl.txx b/butl/curl.txx deleted file mode 100644 index fe8a25f..0000000 --- a/butl/curl.txx +++ /dev/null @@ -1,99 +0,0 @@ -// file : butl/curl.txx -*- C++ -*- -// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include <utility> // move(), forward() -#include <exception> // invalid_argument - -namespace butl -{ - template <typename I> - typename std::enable_if<curl::is_other<I>::value, I>::type curl:: - map_in (I&& in, method_proto mp, io_data& d) - { - switch (mp) - { - case ftp_put: - { - d.options.push_back ("--upload-file"); - d.options.push_back ("-"); - break; - } - case http_post: - { - d.options.push_back ("--data-binary"); - d.options.push_back ("@-"); - break; - } - case ftp_get: - case http_get: - { - throw std::invalid_argument ("input specified for GET method"); - } - } - - return std::forward<I> (in); - } - - template <typename O> - typename std::enable_if<curl::is_other<O>::value, O>::type curl:: - map_out (O&& out, method_proto mp, io_data&) - { - switch (mp) - { - case ftp_get: - case http_get: - case http_post: - { - // Note: no need for any options, curl writes to stdout by default. - // - break; - } - case ftp_put: - { - throw std::invalid_argument ("output specified for PUT method"); - } - } - - return std::forward<O> (out); - } - - template <typename C, - typename I, - typename O, - typename E, - typename... A> - curl:: - curl (const C& cmdc, - I&& in, - O&& out, - E&& err, - method_type m, - const std::string& url, - A&&... options) - { - method_proto_options mpo; - method_proto mp (translate (m, url, mpo)); - - io_data in_data; - io_data out_data; - - process& p (*this); - p = process_start ( - cmdc, - map_in (std::forward<I> (in), mp, in_data), - map_out (std::forward<O> (out), mp, out_data), - std::forward<E> (err), - dir_path (), - "curl", - "-s", // Silent. - "-S", // But do show diagnostics. - mpo, - in_data.options, - out_data.options, - std::forward<A> (options)..., - url); - - // Note: leaving this scope closes any open ends of the pipes in io_data. - } -} |