http_content.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef HTTP_CONTENT_H_
  2. #define HTTP_CONTENT_H_
  3. #include "hstring.h"
  4. // QueryParams
  5. typedef KeyValue QueryParams;
  6. std::string dump_query_params(QueryParams& query_params);
  7. int parse_query_params(const char* query_string, QueryParams& query_params);
  8. // NOTE: WITHOUT_HTTP_CONTENT
  9. // ndk-r10e no std::to_string and can't compile modern json.hpp
  10. #ifndef WITHOUT_HTTP_CONTENT
  11. #include <sstream>
  12. /**************multipart/form-data*************************************
  13. --boundary
  14. Content-Disposition: form-data; name="user"
  15. content
  16. --boundary
  17. Content-Disposition: form-data; name="avatar"; filename="user.jpg"
  18. Content-Type: image/jpeg
  19. content
  20. --boundary--
  21. ***********************************************************************/
  22. // FormData
  23. struct FormData {
  24. std::string filename;
  25. std::string content;
  26. FormData(const char* content = NULL, const char* filename = NULL) {
  27. if (content) {
  28. this->content = content;
  29. }
  30. if (filename) {
  31. this->filename = filename;
  32. }
  33. }
  34. template<typename T>
  35. FormData(T num) {
  36. // NOTE: low-version NDK not provide std::to_string
  37. //content = std::to_string(num);
  38. std::ostringstream os;
  39. os << num;
  40. content = os.str();
  41. }
  42. };
  43. // Multipart
  44. // name => FormData
  45. typedef HV_MAP<std::string, FormData> MultiPart;
  46. #define DEFAULT_MULTIPART_BOUNDARY "----WebKitFormBoundary7MA4YWxkTrZu0gW"
  47. std::string dump_multipart(MultiPart& mp, const char* boundary = DEFAULT_MULTIPART_BOUNDARY);
  48. int parse_multipart(std::string& str, MultiPart& mp, const char* boundary);
  49. // Json
  50. #include "json.hpp"
  51. using Json = nlohmann::json;
  52. extern std::string g_parse_json_errmsg;
  53. std::string dump_json(Json& json);
  54. int parse_json(const char* str, Json& json, std::string& errmsg = g_parse_json_errmsg);
  55. #endif
  56. #endif // HTTP_CONTENT_H_