- library
- http
- http_unix_daemon.pl -- Run SWI-Prolog HTTP server as a Unix system daemon
 - thread_httpd.pl -- Threaded HTTP server
 - http_wrapper.pl -- Server processing of an HTTP request
 - http_header.pl -- Handling HTTP headers
 - html_write.pl -- Write HTML text
 - html_quasiquotations.pl -- HTML quasi quotations
 - http_dispatch.pl -- Dispatch requests in the HTTP server
 - mimetype.pl -- Determine mime-type for a file
 - http_path.pl -- Abstract specification of HTTP server locations
 - http_host.pl -- Obtain public server location
 - http_exception.pl -- Map Prolog exceptions to HTTP errors
 - mimepack.pl -- Create a MIME message
 - http_stream.pl -- HTTP Streams
- http_chunked_open/3
 - stream_range_open/3
 - multipart_open/3
 - multipart_open_next/1
 - cgi_open/4
 - cgi_property/2
 - cgi_set/2
 - cgi_discard/1
 - is_cgi_stream/1
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 - encoding_filter/3
 
 - http_ssl_plugin.pl -- SSL plugin for HTTP libraries
 - http_parameters.pl -- Extract parameters (GET and POST) from HTTP requests
 - http_client.pl -- HTTP client library
 - http_open.pl -- HTTP client library
 - http_multipart_plugin.pl -- Multipart form-data plugin
 - http_hook.pl -- HTTP library hooks
 - html_head.pl -- Automatic inclusion of CSS and scripts links
 - term_html.pl -- Represent Prolog terms as HTML
 - jquery.pl -- Provide JQuery
 - http_server_files.pl -- Serve files needed by modules from the server
 - json.pl -- Reading and writing JSON serialization
 - http_session.pl -- HTTP Session management
 - http_openid.pl -- OpenID consumer and server library
 - yadis.pl -- Yadis discovery
 - ax.pl -- Attribute Exchange library
 - http_authenticate.pl -- Authenticate HTTP connections using 401 headers
 - http_json.pl -- HTTP JSON Plugin module
 - http_dirindex.pl -- HTTP directory listings
 - js_write.pl -- Utilities for including JavaScript
 - js_grammar.pl -- JavaScript grammar
 - http_cors.pl -- Enable CORS: Cross-Origin Resource Sharing
 - json_convert.pl -- Convert between JSON terms and Prolog application terms
 - http_error.pl -- Decorate uncaught HTTP exceptions with stack-trace
 - hub.pl -- Manage a hub for websockets
 - websocket.pl -- WebSocket support
 - http_log.pl -- HTTP Logging module
 
 
 - http
 
- multipart_open(+Stream, -DataSttream, +Options) is det
 - DataStream is a stream that signals 
end_of_fileif the multipart boundary is encountered. The stream can be reset to read the next part using multipart_open_next/1. Options:- close_parent(+Boolean)
 - Close Stream if DataStream is closed.
 - boundary(+Text)
 - Define the boundary string. Text is an atom, string, code or character list.
 
All parts of a multipart input can be read using the following skeleton:
process_multipart(Stream) :- multipart_open(Stream, DataStream, [boundary(...)]), process_parts(DataStream). process_parts(DataStream) :- process_part(DataStream), ( multipart_open_next(DataStream) -> process_parts(DataStream) ; close(DataStream) ).- license
 - - The multipart parser contains code licensed under the MIT license, based on node-formidable by Felix Geisendoerfer and Igor Afonov.