http_content.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. /**************multipart/form-data*************************************
  12. --boundary
  13. Content-Disposition: form-data; name="user"
  14. content
  15. --boundary
  16. Content-Disposition: form-data; name="avatar"; filename="user.jpg"
  17. Content-Type: image/jpeg
  18. content
  19. --boundary--
  20. ***********************************************************************/
  21. // FormData
  22. struct FormData {
  23. std::string filename;
  24. std::string content;
  25. FormData(const char* content = NULL, const char* filename = NULL) {
  26. if (content) {
  27. this->content = content;
  28. }
  29. if (filename) {
  30. this->filename = filename;
  31. }
  32. }
  33. template<typename T>
  34. FormData(T num) {
  35. content = hv::to_string(num);
  36. }
  37. };
  38. // Multipart
  39. // name => FormData
  40. typedef HV_MAP<std::string, FormData> MultiPart;
  41. #define DEFAULT_MULTIPART_BOUNDARY "----WebKitFormBoundary7MA4YWxkTrZu0gW"
  42. std::string dump_multipart(MultiPart& mp, const char* boundary = DEFAULT_MULTIPART_BOUNDARY);
  43. int parse_multipart(std::string& str, MultiPart& mp, const char* boundary);
  44. // Json
  45. #include "json.hpp"
  46. using Json = nlohmann::json;
  47. extern std::string g_parse_json_errmsg;
  48. std::string dump_json(Json& json);
  49. int parse_json(const char* str, Json& json, std::string& errmsg = g_parse_json_errmsg);
  50. #endif
  51. #endif // HTTP_CONTENT_H_