/usr/lib/swipl/library/ext/http/http/http_dispatch.pl
All Application Manual Name SummaryHelp

  • http
    • http
      • http_unix_daemon.pl -- Run SWI-Prolog HTTP server as a Unix system daemon
      • thread_httpd.pl
      • http_wrapper.pl -- Server processing of an HTTP request
      • http_header.pl -- Handling HTTP headers
      • http_stream.pl -- HTTP Streams
      • http_exception.pl -- Map Prolog exceptions to HTTP errors
      • http_path.pl
      • http_dispatch.pl -- Dispatch requests in the HTTP server
        • http_handler/3
        • http_delete_handler/1
        • http_dispatch/1
        • http_request_expansion/2
        • http_current_handler/2
        • http_current_handler/3
        • http_location_by_id/2
        • http_link_to_id/3
        • http_reload_with_parameters/3
        • http_reply_file/3
        • http_safe_file/2
        • http_redirect/3
        • http_404/2
        • http_switch_protocol/2
      • http_host.pl -- Obtain public server location
      • http_client.pl
      • http_open.pl
      • http_parameters.pl -- Extract parameters (GET and POST) from HTTP requests
      • http_multipart_plugin.pl
      • http_hook.pl
      • html_write.pl
      • html_quasiquotations.pl
      • html_decl.pl
      • js_write.pl -- Utilities for including JavaScript
      • http_server_files.pl -- Serve files needed by modules from the server
      • hub.pl
      • websocket.pl -- WebSocket support
      • http_session.pl -- HTTP Session management
      • http_cors.pl -- Enable CORS: Cross-Origin Resource Sharing
      • mimetype.pl -- Determine mime-type for a file
      • html_head.pl -- Automatic inclusion of CSS and scripts links
      • term_html.pl -- Represent Prolog terms as HTML
      • http_dyn_workers.pl
      • http_server.pl -- HTTP server library
      • http_server_health.pl -- HTTP Server health statistics
      • http_log.pl
      • http_redis_plugin.pl -- Hook session management to use Redis
      • mimepack.pl -- Create a MIME message
 http_request_expansion(:Goal, +Rank:number)
Register Goal for expanding the HTTP request handler. Goal is called as below. If Goal fail the request is passed to the next expansion unmodified.
call(Goal, Request0, Request, Options)

If multiple goals are registered they expand the request in a pipeline starting with the expansion hook with the lowest rank.

Besides rewriting the request, for example by validating the user identity based on HTTP authentication or cookies and adding this to the request, the hook may raise HTTP exceptions to indicate a bad request, permission error, etc. See http_status_reply/4.

Initially, auth_expansion/3 is registered with rank 100 to deal with the older authenticate/3 hook.