MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / read_content_core

Method read_content_core

examples/server/httplib.h:5620–5673  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5618}
5619
5620inline bool Server::read_content_core(Stream &strm, Request &req, Response &res,
5621 ContentReceiver receiver,
5622 MultipartContentHeader multipart_header,
5623 ContentReceiver multipart_receiver) {
5624 detail::MultipartFormDataParser multipart_form_data_parser;
5625 ContentReceiverWithProgress out;
5626
5627 if (req.is_multipart_form_data()) {
5628 const auto &content_type = req.get_header_value("Content-Type");
5629 std::string boundary;
5630 if (!detail::parse_multipart_boundary(content_type, boundary)) {
5631 res.status = 400;
5632 return false;
5633 }
5634
5635 multipart_form_data_parser.set_boundary(std::move(boundary));
5636 out = [&](const char *buf, size_t n, uint64_t /*off*/, uint64_t /*len*/) {
5637 /* For debug
5638 size_t pos = 0;
5639 while (pos < n) {
5640 auto read_size = (std::min)<size_t>(1, n - pos);
5641 auto ret = multipart_form_data_parser.parse(
5642 buf + pos, read_size, multipart_receiver, multipart_header);
5643 if (!ret) { return false; }
5644 pos += read_size;
5645 }
5646 return true;
5647 */
5648 return multipart_form_data_parser.parse(buf, n, multipart_receiver,
5649 multipart_header);
5650 };
5651 } else {
5652 out = [receiver](const char *buf, size_t n, uint64_t /*off*/,
5653 uint64_t /*len*/) { return receiver(buf, n); };
5654 }
5655
5656 if (req.method == "DELETE" && !req.has_header("Content-Length")) {
5657 return true;
5658 }
5659
5660 if (!detail::read_content(strm, req, payload_max_length_, res.status, nullptr,
5661 out, true)) {
5662 return false;
5663 }
5664
5665 if (req.is_multipart_form_data()) {
5666 if (!multipart_form_data_parser.is_valid()) {
5667 res.status = 400;
5668 return false;
5669 }
5670 }
5671
5672 return true;
5673}
5674
5675inline bool Server::handle_file_request(const Request &req, Response &res,
5676 bool head) {

Callers

nothing calls this directly

Calls 8

parse_multipart_boundaryFunction · 0.85
read_contentFunction · 0.85
get_header_valueMethod · 0.80
set_boundaryMethod · 0.80
has_headerMethod · 0.80
parseMethod · 0.45
is_validMethod · 0.45

Tested by

no test coverage detected