util.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef CPR_UTIL_H
  2. #define CPR_UTIL_H
  3. #include <fstream>
  4. #include <string>
  5. #include <vector>
  6. #include "cpr/callback.h"
  7. #include "cpr/cookies.h"
  8. #include "cpr/cprtypes.h"
  9. #include "cpr/curlholder.h"
  10. namespace cpr {
  11. namespace util {
  12. Header parseHeader(const std::string& headers, std::string* status_line = nullptr, std::string* reason = nullptr);
  13. Cookies parseCookies(curl_slist* raw_cookies);
  14. size_t readUserFunction(char* ptr, size_t size, size_t nitems, const ReadCallback* read);
  15. size_t headerUserFunction(char* ptr, size_t size, size_t nmemb, const HeaderCallback* header);
  16. size_t writeFunction(char* ptr, size_t size, size_t nmemb, std::string* data);
  17. size_t writeFileFunction(char* ptr, size_t size, size_t nmemb, std::ofstream* file);
  18. size_t writeUserFunction(char* ptr, size_t size, size_t nmemb, const WriteCallback* write);
  19. #if LIBCURL_VERSION_NUM < 0x072000
  20. int progressUserFunction(const ProgressCallback* progress, double dltotal, double dlnow, double ultotal, double ulnow);
  21. #else
  22. int progressUserFunction(const ProgressCallback* progress, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow);
  23. #endif
  24. int debugUserFunction(CURL* handle, curl_infotype type, char* data, size_t size, const DebugCallback* debug);
  25. std::vector<std::string> split(const std::string& to_split, char delimiter);
  26. std::string urlEncode(const std::string& s);
  27. std::string urlDecode(const std::string& s);
  28. /**
  29. * Override the content of the provided string to hide sensitive data. The
  30. * string content after invocation is undefined. The string size is reset to zero.
  31. * impl. based on:
  32. * https://github.com/ojeda/secure_clear/blob/master/example-implementation/secure_clear.h
  33. **/
  34. void secureStringClear(std::string& s);
  35. bool isTrue(const std::string& s);
  36. } // namespace util
  37. } // namespace cpr
  38. #endif