Commits

Jean-Philippe Barrette-LaPierre committed f046887

added Binded method functor for DebugFunction example

  • Participants
  • Parent commits 5be9bb2

Comments (0)

Files changed (4)

File examples/Makefile.am

 	example19 \
 	example21 \
 	example22 \
+	example23 \
+	example24 \
 	${maintener_programs} ${boost_programs}
 
 
 
 example22_SOURCES = example22.cpp
 
+example23_SOURCES = example23.cpp
+
+example24_SOURCES = example24.cpp
+
 AM_LDFLAGS = -L../src/curlpp/ -lcurlpp -static 
 
 INCLUDES = -I$(top_builddir)/include

File examples/README

  Example 20: std::ostream usage.
  Example 21: upload example with std::istream.
  Example 22: Real easy and quick examples.
+ Example 23: Setting request options using iterators to custom container 
+             of curlpp options.
+ Example 24: Binded method functor for DebugFunction example.
 
 
 

File examples/example24.cpp

+/*
+ *    Copyright (c) <2002-2005> <Jean-Philippe Barrette-LaPierre>
+ *    
+ *    Permission is hereby granted, free of charge, to any person obtaining
+ *    a copy of this software and associated documentation files 
+ *    (curlpp), to deal in the Software without restriction, 
+ *    including without limitation the rights to use, copy, modify, merge,
+ *    publish, distribute, sublicense, and/or sell copies of the Software,
+ *    and to permit persons to whom the Software is furnished to do so, 
+ *    subject to the following conditions:
+ *    
+ *    The above copyright notice and this permission notice shall be included
+ *    in all copies or substantial portions of the Software.
+ *    
+ *    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ *    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ *    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+ *    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
+ *    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
+ *    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ *    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <curlpp/curlpp.hpp>
+#include <curlpp/Easy.hpp>
+#include <curlpp/Options.hpp>
+#include <curlpp/Exception.hpp>
+#include <curlpp/Infos.hpp>
+
+#include <cstdlib>
+
+
+struct MethodClass
+{
+private:
+  MethodClass();
+
+public:
+  MethodClass(std::ostream * stream)
+    : mStream(stream)
+    , writeRound(0)
+  {}
+
+  // Helper Class for reading result from remote host
+  size_t debug(curlpp::Easy *handle, curl_infotype type, char* ptr, size_t size)
+  {
+    ++writeRound;
+
+    curlpp::options::Url url;
+    handle->getOpt(url);
+
+    // Calculate the real size of the incoming buffer
+    std::cerr << "write round: " << writeRound << ", url: " << url.getValue() << ", type: " << type << std::endl;
+    mStream->write(ptr, size);
+
+    // return the real size of the buffer...
+    return size;
+  };
+
+  // Public member vars
+  std::ostream * mStream;
+  unsigned writeRound;
+};
+
+
+int main(int argc, char *argv[])
+{
+  if(argc != 2) {
+    std::cerr << argv[0] << ": Wrong number of arguments" << std::endl 
+	      << argv[0] << ": Usage: " << " url " 
+	      << std::endl;
+    return EXIT_FAILURE;
+  }
+
+  char *url = argv[1];
+  
+  try {
+    curlpp::Cleanup cleaner;
+    curlpp::Easy request;
+
+    MethodClass mObject(&std::cerr);
+    
+    // Set the debug callback to enable cURL 
+    // to write result in a stream
+    curlpp::types::DebugFunctionFunctor functor(utilspp::BindFirst(utilspp::make_functor(&mObject, &MethodClass::debug), &request));
+    curlpp::options::DebugFunction * test = new curlpp::options::DebugFunction(functor);
+    request.setOpt(test);
+    
+    // Setting the URL to retrive.
+    request.setOpt(new curlpp::options::Url(url));
+    request.setOpt(new curlpp::options::Verbose(true));
+    request.perform();
+
+    return EXIT_SUCCESS;
+  }
+  catch ( curlpp::LogicError & e ) {
+    std::cout << e.what() << std::endl;
+  }
+  catch ( curlpp::RuntimeError & e ) {
+    std::cout << e.what() << std::endl;
+  }
+
+  return EXIT_FAILURE;
+}

File include/curlpp/cURLpp.hpp

 #ifndef CURLPP_CURLPP_HPP
 #define CURLPP_CURLPP_HPP
 
-#define LIBCURLPP_VERSION "0.7.2"
-#define LIBCURLPP_VERSION_NUM 0x000702
+#define LIBCURLPP_VERSION "0.7.3-pre1"
+#define LIBCURLPP_VERSION_NUM 0x000703
 
 
 #include "internal/buildconfig.h"