val section : Lwt_log_core.section (** use Lwt_log.Section.set_level in order to debug *)

val scan_multipart_body_from_stream:
  ?max_size : Int64.t ->
  boundary : string ->
  create : ((string * string) list -> 'a) ->
  add : ('a -> string -> unit Lwt.t) ->
  stop : (int64 -> 'a -> 'b Lwt.t) ->
  string Ocsigen_stream.stream ->
  unit Lwt.t

type content_type = (string * string) * (string * string) list

type file_info = {
  tmp_filename : string ;
  filesize : int64 ;
  raw_original_filename : string ;
  file_content_type : content_type option
}

type post_data = (string * string) list * (string * file_info) list

val post_params :
  content_type : content_type ->
  Cohttp_lwt.Body.t ->
  (string option -> Int64.t option -> post_data Lwt.t) option

val parse_content_type : string -> content_type option
