RESTinio
Classes | Namespaces | Enumerations | Functions | Variables
multipart_body.hpp File Reference

Various tools for working with multipart bodies. More...

#include <restinio/helpers/string_algo.hpp>
#include <restinio/helpers/easy_parser.hpp>
#include <restinio/helpers/http_field_parsers/basics.hpp>
#include <restinio/helpers/http_field_parsers/content-type.hpp>
#include <restinio/http_headers.hpp>
#include <restinio/request_handler.hpp>
#include <restinio/expected.hpp>
#include <restinio/impl/string_caseless_compare.hpp>
#include <restinio/utils/metaprogramming.hpp>
#include <iostream>

Go to the source code of this file.

Classes

struct  restinio::multipart_body::parsed_part_t
 A description of parsed content of one part of a multipart body. More...
 
struct  restinio::multipart_body::impl::parser_details::body_producer_t
 A special producer that consumes the whole remaining content from the input stream. More...
 
struct  restinio::multipart_body::impl::parser_details::field_value_producer_t
 A special producer that consumes the rest of the current line in the input stream until CR/LF will be found. More...
 
struct  restinio::multipart_body::impl::valid_handler_type< typename, typename >
 
struct  restinio::multipart_body::impl::valid_handler_type< T, restinio::utils::metaprogramming::void_t< std::enable_if_t< std::is_same< handling_result_t, decltype(std::declval< T >()(std::declval< parsed_part_t >())) >::value, bool > > >
 

Namespaces

 restinio
 
 restinio::multipart_body
 
 restinio::multipart_body::impl
 
 restinio::multipart_body::impl::parser_details
 
 restinio::multipart_body::impl::boundary_value_checkers
 

Enumerations

enum  restinio::multipart_body::handling_result_t { restinio::multipart_body::handling_result_t::continue_enumeration, restinio::multipart_body::handling_result_t::stop_enumeration, restinio::multipart_body::handling_result_t::terminate_enumeration }
 The result to be returned from user-provided handler of parts of multipart body. More...
 
enum  restinio::multipart_body::enumeration_error_t {
  restinio::multipart_body::enumeration_error_t::content_type_field_not_found, restinio::multipart_body::enumeration_error_t::content_type_field_parse_error, restinio::multipart_body::enumeration_error_t::content_type_field_inappropriate_value, restinio::multipart_body::enumeration_error_t::illegal_boundary_value,
  restinio::multipart_body::enumeration_error_t::no_parts_found, restinio::multipart_body::enumeration_error_t::terminated_by_handler, restinio::multipart_body::enumeration_error_t::unexpected_error
}
 The result of an attempt to enumerate parts of a multipart body. More...
 

Functions

RESTINIO_NODISCARD std::vector< string_view_t > restinio::multipart_body::split_multipart_body (string_view_t body, string_view_t boundary)
 Helper function for spliting a multipart body into a serie of separate parts. More...
 
RESTINIO_NODISCARD auto restinio::multipart_body::impl::make_parser ()
 A factory function for a parser of a part of multipart message. More...
 
RESTINIO_NODISCARD expected_t< parsed_part_t, restinio::easy_parser::parse_error_trestinio::multipart_body::try_parse_part (string_view_t part)
 Helper function for parsing content of one part of a multipart body. More...
 
constexpr RESTINIO_NODISCARD bool restinio::multipart_body::impl::boundary_value_checkers::is_bcharnospace (char ch)
 
constexpr RESTINIO_NODISCARD bool restinio::multipart_body::impl::boundary_value_checkers::is_bchar (char ch)
 
RESTINIO_NODISCARD optional_t< enumeration_error_t > restinio::multipart_body::check_boundary_value (string_view_t value)
 A helper function for checking the validity of 'boundary' value. More...
 
RESTINIO_NODISCARD expected_t< std::string, enumeration_error_t > restinio::multipart_body::detect_boundary_for_multipart_body (const request_t &req, string_view_t expected_media_type, optional_t< string_view_t > expected_media_subtype)
 Helper function for parsing Content-Type field and extracting the value of 'boundary' parameter. More...
 
template<typename Handler >
RESTINIO_NODISCARD expected_t< std::size_t, enumeration_error_t > restinio::multipart_body::impl::enumerate_parts_of_request_body (const std::vector< string_view_t > &parts, Handler &&handler)
 A function that parses every part of a multipart body and calls a user-provided handler for every parsed part. More...
 
template<typename Handler >
RESTINIO_NODISCARD expected_t< std::size_t, enumeration_error_t > restinio::multipart_body::enumerate_parts (const request_t &req, Handler &&handler, string_view_t expected_media_type=string_view_t{ "multipart" }, optional_t< string_view_t > expected_media_subtype=nullopt)
 A helper function for enumeration of parts of a multipart body. More...
 

Variables

constexpr char restinio::multipart_body::impl::parser_details::CR = '\r'
 
constexpr char restinio::multipart_body::impl::parser_details::LF = '\n'
 

Detailed Description

Various tools for working with multipart bodies.

Since
v.0.6.1

Definition in file multipart_body.hpp.