28 lines
502 B
C++
28 lines
502 B
C++
#pragma once
|
|
|
|
extern "C" {
|
|
#include "http.h"
|
|
}
|
|
|
|
#include <stdio.h>
|
|
#include <nlohmann/json.hpp>
|
|
|
|
inline nlohmann::json http_parse_json_body(http_worker_t *worker, FILE *stream, unsigned max_body_size)
|
|
{
|
|
std::string text;
|
|
|
|
size_t i = 0;
|
|
size_t n = (size_t)worker->content_length;
|
|
if (n < 0 || n > max_body_size)
|
|
n = max_body_size;
|
|
|
|
text.resize(n);
|
|
|
|
while (i < n && !feof(stream)) {
|
|
i += fread(&text[i], 1, n-i, stream);
|
|
}
|
|
text.resize(i);
|
|
|
|
return nlohmann::json::parse(text);
|
|
}
|