291 lines
6.9 KiB
Common Lisp
291 lines
6.9 KiB
Common Lisp
;;;; CLASH --- The Common Lisp Adaptable Simple HTTP server
|
|
;;;; This is copyrighted software. See documentation for terms.
|
|
;;;;
|
|
;;;; package.cl --- Package definition for CLASH itself
|
|
;;;;
|
|
;;;; Checkout Tag: $Name$
|
|
;;;; $Id$
|
|
|
|
(in-package :cl-user)
|
|
|
|
;;;; %File Description:
|
|
;;;;
|
|
;;;;
|
|
;;;;
|
|
|
|
(defpackage :CLASH
|
|
(:use :cl #+(and :cmu :mp) :mp)
|
|
(:export
|
|
;; Status Codes
|
|
#:+HTTP-Code-Continue+
|
|
#:+HTTP-Code-Switching-Protocols+
|
|
#:+HTTP-Code-OK+
|
|
#:+HTTP-Code-Created+
|
|
#:+HTTP-Code-Accepted+
|
|
#:+HTTP-Code-Non-Authoritative-Information+
|
|
#:+HTTP-Code-No-Content+
|
|
#:+HTTP-Code-Reset-Content+
|
|
#:+HTTP-Code-Partial-Content+
|
|
#:+HTTP-Code-Multiple-Choices+
|
|
#:+HTTP-Code-Moved-Permanently+
|
|
#:+HTTP-Code-Moved-Temporarily+
|
|
#:+HTTP-Code-See-Other+
|
|
#:+HTTP-Code-Not-Modified+
|
|
#:+HTTP-Code-Use-Proxy+
|
|
#:+HTTP-Code-Bad-Request+
|
|
#:+HTTP-Code-Unauthorized+
|
|
#:+HTTP-Code-Payment-Required+
|
|
#:+HTTP-Code-Forbidden+
|
|
#:+HTTP-Code-Not-Found+
|
|
#:+HTTP-Code-Method-Not-Allowed+
|
|
#:+HTTP-Code-Not-Acceptable+
|
|
#:+HTTP-Code-Proxy-Authentication-Required+
|
|
#:+HTTP-Code-Request-Timeout+
|
|
#:+HTTP-Code-Conflict+
|
|
#:+HTTP-Code-Gone+
|
|
#:+HTTP-Code-Length-Required+
|
|
#:+HTTP-Code-Precondition-Failed+
|
|
#:+HTTP-Code-Request-Entity-Too-Large+
|
|
#:+HTTP-Code-Request-URI-Too-Long+
|
|
#:+HTTP-Code-Unsupported-Media-Type+
|
|
#:+HTTP-Code-Internal-Server-Error+
|
|
#:+HTTP-Code-Not-Implemented+
|
|
#:+HTTP-Code-Bad-Gateway+
|
|
#:+HTTP-Code-Service-Unavailable+
|
|
#:+HTTP-Code-Gateway-Timeout+
|
|
#:+HTTP-Code-HTTP-Version-Not-Supported+
|
|
;; Conditions
|
|
#:clash-error
|
|
#:clash-error-code
|
|
#:clash-error-response-initargs
|
|
#:clash-error-entity-initargs
|
|
#:simple-clash-error
|
|
#:clash-syntax-error
|
|
#:clash-syntax-error-fragment
|
|
#:clash-syntax-error-reason
|
|
;; URL
|
|
#:url-error
|
|
#:url-error-url-string
|
|
#:url-unknown-scheme-error
|
|
#:url-unknown-scheme-error-scheme
|
|
#:url-syntax-error
|
|
#:url-illegal-escape-error
|
|
#:url-illegal-escape-error-escape-seq
|
|
#:url-simple-syntax-error
|
|
#:url-simple-syntax-error-reason
|
|
#:url
|
|
#:url-source-string
|
|
#:url-scheme
|
|
#:url-string
|
|
#:url-specific-string
|
|
#:url-significant-string
|
|
#:copy-url
|
|
#:merge-urls
|
|
#:register-url-scheme
|
|
#:unregister-url-scheme
|
|
#:reset-url-schemes
|
|
#:*parse-url-default-base*
|
|
#:parse-url-from-string
|
|
#:url-host-port-mixin
|
|
#:url-host
|
|
#:url-port
|
|
#:url-authority-p
|
|
#:url-authority-string
|
|
#:url-path-mixin
|
|
#:url-directory
|
|
#:url-params
|
|
#:url-name
|
|
#:url-name-param
|
|
#:url-path-p
|
|
#:url-path-string
|
|
#:url-query-mixin
|
|
#:url-query-arguments
|
|
#:url-query-string
|
|
#:url-query-argument
|
|
#:url-http
|
|
;; Version
|
|
#:*clash-major-version*
|
|
#:*clash-minor-version*
|
|
#:clash-version-string
|
|
#:http-version
|
|
#:http-version-major
|
|
#:http-version-minor
|
|
#:get-http-version
|
|
#:parse-http-version
|
|
#:format-http-version
|
|
;; Buffer
|
|
#:*default-io-buffer-size*
|
|
#:with-io-buffer
|
|
;; Connections
|
|
#:+connection-states+
|
|
#:connection
|
|
#:connection-state
|
|
#:connection-stream
|
|
#:connection-address
|
|
#:connection-hostname
|
|
#:close-connection
|
|
;; Messages
|
|
#:http-message
|
|
#:http-message-server
|
|
#:http-message-version
|
|
#:render-http-message
|
|
#:header-exists-p
|
|
#:header-value
|
|
#:with-headers
|
|
#:request
|
|
#:request-connection
|
|
#:request-method
|
|
#:request-url
|
|
#:response
|
|
#:response-request
|
|
#:response-status-code
|
|
#:create-response
|
|
#:parse-request
|
|
#:request/0.9
|
|
#:request-entity
|
|
#:response/0.9
|
|
#:request/1.0
|
|
#:request-authorization
|
|
#:request-cookie
|
|
#:request-date
|
|
#:request-from
|
|
#:request-if-modified-since
|
|
#:request-pragma
|
|
#:request-referer
|
|
#:request-user-agent
|
|
#:response/1.0
|
|
#:response-date
|
|
#:response-location
|
|
#:response-pragma
|
|
#:response-www-authenticate
|
|
#:response-set-cookie
|
|
#:authorization
|
|
#:cookie
|
|
#:date
|
|
#:from
|
|
#:if-modified-since
|
|
#:pragma
|
|
#:referer
|
|
#:user-agent
|
|
#:location
|
|
#:www-authenticate
|
|
#:set-cookie
|
|
;; Entity
|
|
#:entity
|
|
#:render-entity-headers
|
|
#:render-entity-body
|
|
#:entity-header-mixin/1.1
|
|
#:entity-allow
|
|
#:entity-content-encoding
|
|
#:entity-content-language
|
|
#:entity-content-length
|
|
#:entity-content-location
|
|
#:entity-content-md5
|
|
#:entity-content-range
|
|
#:entity-content-type
|
|
#:entity-expires
|
|
#:entity-last-modified
|
|
#:stream-entity-mixin
|
|
#:stream-entity-stream
|
|
#:stream-entity-length
|
|
#:string-entity
|
|
#:entity-body
|
|
#:file-entity
|
|
#:entity-pathname
|
|
;; Resource
|
|
#:resource
|
|
#:resource-allowed-methods
|
|
#:access-resource
|
|
#:access-resource-using-method
|
|
#:static-resource
|
|
#:static-resource-entity
|
|
#:dynamic-resource
|
|
#:dynamic-resource-generator
|
|
#:dynamic-form-resource
|
|
#:dynamic-form-resource-processor
|
|
#:parse-form-data
|
|
#:with-form-data
|
|
#:with-query-args
|
|
#:redirector-resource
|
|
#:redirector-resource-code
|
|
#:redirector-resource-destination
|
|
;; Namespace
|
|
#:namespace
|
|
#:namespace-add-url
|
|
#:namespace-remove-url
|
|
#:namespace-lookup-url
|
|
#:hierarchical-namespace
|
|
;; Server
|
|
#:http-server
|
|
#:http-server-namespace
|
|
#:export-resource
|
|
#:serve-connection
|
|
#:read-request
|
|
#:get-request-class-using-server
|
|
#:serve-request
|
|
#:create-response-using-server
|
|
#:get-response-class-using-server
|
|
#:write-response
|
|
#:write-response-to-request
|
|
#:handle-server-error
|
|
#:with-server-handler
|
|
#:server-product-info
|
|
#:simple-http-server
|
|
#:http-server/0.9
|
|
#:http-server/1.0
|
|
;; Responses
|
|
#:create-standard-response
|
|
#:standard-response-body
|
|
;; Session
|
|
#:session-leader
|
|
#:session-leader-sessions
|
|
#:session-leader-session-name
|
|
#:session-leader-session-path
|
|
#:session-leader-new-id
|
|
#:session-leader-new-session
|
|
#:with-new-session
|
|
#:session-leader-process-login
|
|
#:get-session-data
|
|
#:sessioned-resource
|
|
#:sessioned-resource-session-leader
|
|
#:handle-missing-session
|
|
#:with-session-data
|
|
;; Authorization
|
|
#:clash-validation-error
|
|
#:validation-mixin
|
|
#:with-validation-data
|
|
#:validator
|
|
#:validate-access
|
|
#:user-database
|
|
#:user-database-get-user-data
|
|
#:www-validator
|
|
#:www-validator-realm
|
|
#:www-validator-user-database
|
|
#:www-basic-validator
|
|
;; Logging
|
|
#:server-profiling-mixin
|
|
#:server-profiling-mixin-connection-time
|
|
#:server-profiling-mixin-connection-count
|
|
#:server-profiling-mixin-connection-avg
|
|
#:server-profiling-mixin-connection-min
|
|
#:server-profiling-mixin-connection-max
|
|
#:server-profiling-mixin-request-time
|
|
#:server-profiling-mixin-request-count
|
|
#:server-profiling-mixin-request-avg
|
|
#:server-profiling-mixin-request-min
|
|
#:server-profiling-mixin-request-max
|
|
#:server-logging-mixin
|
|
#:server-logging-mixin-pathname
|
|
#:server-logging-mixin-stream
|
|
;; Readtable
|
|
#:enable-clash-syntax
|
|
#:disable-clash-syntax
|
|
;; Utility
|
|
#:export-files
|
|
#:export-directory
|
|
#:with-string-response
|
|
;; Drivers
|
|
#:start-http-listener
|
|
#:initialize-clash
|
|
))
|