| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #ifndef HV_HTTP_CONTENT_H_
- #define HV_HTTP_CONTENT_H_
- #include "hexport.h"
- #include "hstring.h"
- // NOTE: WITHOUT_HTTP_CONTENT
- // ndk-r10e no std::to_string and can't compile modern json.hpp
- #ifndef WITHOUT_HTTP_CONTENT
- #include "json.hpp" // https://github.com/nlohmann/json
- #endif
- BEGIN_NAMESPACE_HV
- // QueryParams
- using QueryParams = hv::KeyValue;
- HV_EXPORT std::string dump_query_params(const QueryParams& query_params);
- HV_EXPORT int parse_query_params(const char* query_string, QueryParams& query_params);
- #ifndef WITHOUT_HTTP_CONTENT
- /**************multipart/form-data*************************************
- --boundary
- Content-Disposition: form-data; name="user"
- content
- --boundary
- Content-Disposition: form-data; name="avatar"; filename="user.jpg"
- Content-Type: image/jpeg
- content
- --boundary--
- ***********************************************************************/
- // FormData
- struct FormData {
- std::string filename;
- std::string content;
- FormData(const char* content = NULL, const char* filename = NULL) {
- if (content) {
- this->content = content;
- }
- if (filename) {
- this->filename = filename;
- }
- }
- template<typename T>
- FormData(T num) {
- content = hv::to_string(num);
- }
- };
- // FormFile
- struct FormFile : public FormData {
- FormFile(const char* filename = NULL) {
- if (filename) {
- this->filename = filename;
- }
- }
- };
- // MultiPart
- // name => FormData
- typedef HV_MAP<std::string, FormData> MultiPart;
- #define DEFAULT_MULTIPART_BOUNDARY "----WebKitFormBoundary7MA4YWxkTrZu0gW"
- HV_EXPORT std::string dump_multipart(MultiPart& mp, const char* boundary = DEFAULT_MULTIPART_BOUNDARY);
- HV_EXPORT int parse_multipart(const std::string& str, MultiPart& mp, const char* boundary);
- // Json
- using Json = nlohmann::json;
- // using Json = nlohmann::ordered_json;
- HV_EXPORT std::string dump_json(const hv::Json& json, int indent = -1);
- HV_EXPORT int parse_json(const char* str, hv::Json& json, std::string& errmsg);
- #endif
- END_NAMESPACE_HV
- #endif // HV_HTTP_CONTENT_H_
|