new keyword contracts
svn: r8622
This commit is contained in:
parent
e958a5af7a
commit
533266f2dd
|
@ -1,5 +1,6 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
(require (lib "list.ss"))
|
(require (lib "list.ss")
|
||||||
|
scheme/contract)
|
||||||
|
|
||||||
(define default-to-be-copied-module-specs
|
(define default-to-be-copied-module-specs
|
||||||
'(mzscheme
|
'(mzscheme
|
||||||
|
@ -31,5 +32,16 @@
|
||||||
additional-names))
|
additional-names))
|
||||||
new-namespace)))
|
new-namespace)))
|
||||||
|
|
||||||
(provide
|
; XXX
|
||||||
make-make-servlet-namespace)
|
(define module-spec? any/c)
|
||||||
|
(define make-servlet-namespace?
|
||||||
|
(->* ()
|
||||||
|
(#:additional-specs (listof module-spec?))
|
||||||
|
namespace?))
|
||||||
|
|
||||||
|
(provide/contract
|
||||||
|
[make-servlet-namespace? contract?]
|
||||||
|
[make-make-servlet-namespace
|
||||||
|
(->* ()
|
||||||
|
(#:to-be-copied-module-specs (listof module-spec?))
|
||||||
|
make-servlet-namespace?)])
|
|
@ -2,20 +2,26 @@
|
||||||
(require (lib "url.ss" "net")
|
(require (lib "url.ss" "net")
|
||||||
(lib "plt-match.ss")
|
(lib "plt-match.ss")
|
||||||
(lib "pregexp.ss")
|
(lib "pregexp.ss")
|
||||||
(lib "contract.ss"))
|
scheme/contract)
|
||||||
|
|
||||||
(require "dispatch.ss"
|
(require "dispatch.ss"
|
||||||
"../private/util.ss"
|
"../private/util.ss"
|
||||||
"../private/request-structs.ss"
|
"../private/request-structs.ss"
|
||||||
"../private/response-structs.ss"
|
"../private/response-structs.ss"
|
||||||
"../servlet/helpers.ss"
|
"../servlet/helpers.ss"
|
||||||
"../private/response.ss")
|
"../private/response.ss"
|
||||||
|
"../dispatchers/filesystem-map.ss")
|
||||||
|
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[interface-version dispatcher-interface-version?]
|
[interface-version dispatcher-interface-version?]
|
||||||
[read-range-header (-> (listof header?) (or/c (listof pair?) false/c))])
|
[read-range-header (-> (listof header?) (or/c (listof pair?) false/c))])
|
||||||
|
|
||||||
(provide make)
|
(provide/contract
|
||||||
|
[make
|
||||||
|
(->* (#:url->path url-path?)
|
||||||
|
(#:path->mime-type (path? . -> . bytes?)
|
||||||
|
#:indices (listof path-string?))
|
||||||
|
dispatcher?)])
|
||||||
|
|
||||||
;; looks-like-directory : str -> bool
|
;; looks-like-directory : str -> bool
|
||||||
;; to determine if is url style path looks like it refers to a directory
|
;; to determine if is url style path looks like it refers to a directory
|
||||||
|
|
|
@ -1,21 +1,29 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
(require (lib "list.ss")
|
(require (lib "list.ss")
|
||||||
(lib "contract.ss")
|
scheme/contract
|
||||||
(lib "session.ss" "web-server" "private")
|
(lib "session.ss" "web-server" "private")
|
||||||
(only-in "../lang/web.ss"
|
(only-in "../lang/web.ss"
|
||||||
initialize-servlet)
|
initialize-servlet)
|
||||||
(lib "web-cells.ss" "web-server" "lang")
|
(lib "web-cells.ss" "web-server" "lang")
|
||||||
"../private/request-structs.ss"
|
"../private/request-structs.ss"
|
||||||
|
"../private/response-structs.ss"
|
||||||
"dispatch.ss"
|
"dispatch.ss"
|
||||||
|
(lib "url.ss" "net")
|
||||||
"../private/web-server-structs.ss"
|
"../private/web-server-structs.ss"
|
||||||
"../private/util.ss"
|
"../private/util.ss"
|
||||||
"../private/response.ss"
|
"../private/response.ss"
|
||||||
|
"../dispatchers/filesystem-map.ss"
|
||||||
"../configuration/namespace.ss"
|
"../configuration/namespace.ss"
|
||||||
"../configuration/responders.ss")
|
"../configuration/responders.ss")
|
||||||
|
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[interface-version dispatcher-interface-version?])
|
[interface-version dispatcher-interface-version?]
|
||||||
(provide make)
|
[make
|
||||||
|
(->* (#:url->path url-path?)
|
||||||
|
(#:make-servlet-namespace make-servlet-namespace?
|
||||||
|
#:responders-servlet-loading (url? any/c . -> . response?)
|
||||||
|
#:responders-servlet (url? any/c . -> . response?))
|
||||||
|
dispatcher?)])
|
||||||
|
|
||||||
; XXX url->servlet
|
; XXX url->servlet
|
||||||
; XXX optional session manager
|
; XXX optional session manager
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
(lib "date.ss")
|
(lib "date.ss")
|
||||||
(lib "async-channel.ss")
|
(lib "async-channel.ss")
|
||||||
(lib "plt-match.ss")
|
(lib "plt-match.ss")
|
||||||
(lib "contract.ss"))
|
scheme/contract)
|
||||||
(require "dispatch.ss"
|
(require "dispatch.ss"
|
||||||
"../private/request-structs.ss")
|
"../private/request-structs.ss")
|
||||||
(define format-req/c (request? . -> . string?))
|
(define format-req/c (request? . -> . string?))
|
||||||
|
@ -15,8 +15,11 @@
|
||||||
[paren-format format-req/c]
|
[paren-format format-req/c]
|
||||||
[extended-format format-req/c]
|
[extended-format format-req/c]
|
||||||
[apache-default-format format-req/c]
|
[apache-default-format format-req/c]
|
||||||
[interface-version dispatcher-interface-version?])
|
[interface-version dispatcher-interface-version?]
|
||||||
(provide make)
|
[make (->* ()
|
||||||
|
(#:format format-req/c
|
||||||
|
#:log-path path-string?)
|
||||||
|
dispatcher?)])
|
||||||
|
|
||||||
(define interface-version 'v1)
|
(define interface-version 'v1)
|
||||||
(define (make #:format [format paren-format]
|
(define (make #:format [format paren-format]
|
||||||
|
|
|
@ -1,16 +1,23 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
(require (lib "list.ss")
|
(require (lib "list.ss")
|
||||||
(lib "url.ss" "net")
|
(lib "url.ss" "net")
|
||||||
(lib "contract.ss"))
|
scheme/contract)
|
||||||
(require "dispatch.ss"
|
(require "dispatch.ss"
|
||||||
"../private/util.ss"
|
"../private/util.ss"
|
||||||
"../configuration/responders.ss"
|
"../configuration/responders.ss"
|
||||||
"../private/request-structs.ss"
|
"../private/request-structs.ss"
|
||||||
|
"../private/response-structs.ss"
|
||||||
"../servlet/basic-auth.ss"
|
"../servlet/basic-auth.ss"
|
||||||
"../private/response.ss")
|
"../private/response.ss")
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[interface-version dispatcher-interface-version?])
|
[interface-version dispatcher-interface-version?]
|
||||||
(provide make)
|
[make (->* ()
|
||||||
|
(#:password-file path-string?
|
||||||
|
#:authentication-responder
|
||||||
|
(url? header? . -> . response?))
|
||||||
|
(values
|
||||||
|
(-> void)
|
||||||
|
dispatcher?))])
|
||||||
|
|
||||||
(define interface-version 'v1)
|
(define interface-version 'v1)
|
||||||
(define (make ; XXX Take authorized? function
|
(define (make ; XXX Take authorized? function
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
(require (lib "plt-match.ss")
|
(require (lib "plt-match.ss")
|
||||||
(lib "contract.ss"))
|
scheme/contract)
|
||||||
(require "dispatch.ss"
|
(require "dispatch.ss"
|
||||||
"../private/web-server-structs.ss"
|
"../private/web-server-structs.ss"
|
||||||
"../private/connection-manager.ss"
|
"../private/connection-manager.ss"
|
||||||
|
@ -9,6 +9,8 @@
|
||||||
"../private/response-structs.ss"
|
"../private/response-structs.ss"
|
||||||
"../servlet/web-cells.ss"
|
"../servlet/web-cells.ss"
|
||||||
"../servlet/web.ss"
|
"../servlet/web.ss"
|
||||||
|
(lib "url.ss" "net")
|
||||||
|
"../dispatchers/filesystem-map.ss"
|
||||||
"../configuration/responders.ss"
|
"../configuration/responders.ss"
|
||||||
"../configuration/namespace.ss"
|
"../configuration/namespace.ss"
|
||||||
"../managers/manager.ss"
|
"../managers/manager.ss"
|
||||||
|
@ -17,8 +19,15 @@
|
||||||
"../private/cache-table.ss"
|
"../private/cache-table.ss"
|
||||||
"../private/util.ss")
|
"../private/util.ss")
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[interface-version dispatcher-interface-version?])
|
[interface-version dispatcher-interface-version?]
|
||||||
(provide make)
|
[make (->* ((box/c cache-table?)
|
||||||
|
#:url->path url-path?)
|
||||||
|
(#:make-servlet-namespace make-servlet-namespace?
|
||||||
|
#:responders-servlet-loading (url? any/c . -> . response?)
|
||||||
|
#:responders-servlet (url? any/c . -> . response?)
|
||||||
|
#:timeouts-default-servlet number?)
|
||||||
|
(values (-> void)
|
||||||
|
dispatcher?))])
|
||||||
|
|
||||||
(define interface-version 'v1)
|
(define interface-version 'v1)
|
||||||
(define (make config:scripts
|
(define (make config:scripts
|
||||||
|
|
|
@ -4,7 +4,10 @@
|
||||||
(require "manager.ss"
|
(require "manager.ss"
|
||||||
"../servlet/servlet-structs.ss")
|
"../servlet/servlet-structs.ss")
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[create-LRU-manager ((expiration-handler? number? number? (-> boolean?)) any/c . ->* . (manager?))])
|
[create-LRU-manager (expiration-handler? number? number? (-> boolean?)
|
||||||
|
#:initial-count number?
|
||||||
|
#:inform-p (number? . -> . void)
|
||||||
|
. -> . manager?)])
|
||||||
|
|
||||||
;; Utility
|
;; Utility
|
||||||
(define (make-counter)
|
(define (make-counter)
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
(require "util.ss"
|
(require "util.ss"
|
||||||
"response-structs.ss")
|
"response-structs.ss")
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[read-mime-types (path? . -> . hash-table?)]
|
[read-mime-types (path-string? . -> . hash-table?)]
|
||||||
[make-path->mime-type (path? . -> . (path? . -> . bytes?))])
|
[make-path->mime-type (path-string? . -> . (path? . -> . bytes?))])
|
||||||
|
|
||||||
; read-mime-types : path? -> hash-table?
|
; read-mime-types : path? -> hash-table?
|
||||||
(define (read-mime-types a-path)
|
(define (read-mime-types a-path)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
; This file is intended to be copied and/or modified and used as a template.
|
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
|
; This file is intended to be copied and/or modified and used as a template.
|
||||||
(require (lib "cmdline.ss")
|
(require (lib "cmdline.ss")
|
||||||
(only-in (lib "file.ss")
|
(only-in (lib "file.ss")
|
||||||
normalize-path)
|
normalize-path)
|
||||||
|
|
|
@ -235,7 +235,7 @@ a URL that refreshes the password file, servlet cache, etc.}
|
||||||
@defproc[(make [#:password-file password-file path-string? "passwords"]
|
@defproc[(make [#:password-file password-file path-string? "passwords"]
|
||||||
[#:authentication-responder
|
[#:authentication-responder
|
||||||
authentication-responder
|
authentication-responder
|
||||||
((url url?) (header (cons/c symbol? string?)) . -> . response?)
|
((url url?) (header header?) . -> . response?)
|
||||||
(gen-authentication-responder "forbidden.html")])
|
(gen-authentication-responder "forbidden.html")])
|
||||||
(values (-> void)
|
(values (-> void)
|
||||||
dispatcher?)]{
|
dispatcher?)]{
|
||||||
|
|
|
@ -122,7 +122,7 @@ deployments of the @web-server .
|
||||||
[collect-interval integer?]
|
[collect-interval integer?]
|
||||||
[collect? (-> boolean?)]
|
[collect? (-> boolean?)]
|
||||||
[#:initial-count initial-count integer? 1]
|
[#:initial-count initial-count integer? 1]
|
||||||
[#:inform-p inform-p (integer? . -> . void) (lambda _ (void))])
|
[#:inform-p inform-p (integer? . -> . void) (lambda _ (void))])
|
||||||
manager?]{
|
manager?]{
|
||||||
Instances managed by this manager will be expired if there are no
|
Instances managed by this manager will be expired if there are no
|
||||||
continuations associated with them, after the instance is unlocked.
|
continuations associated with them, after the instance is unlocked.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
(require (lib "contract.ss"))
|
(require scheme/contract)
|
||||||
(require "../private/util.ss"
|
(require "../private/util.ss"
|
||||||
"../private/request-structs.ss"
|
"../private/request-structs.ss"
|
||||||
"../private/response-structs.ss")
|
"../private/response-structs.ss")
|
||||||
|
@ -33,9 +33,11 @@
|
||||||
(thunk)))
|
(thunk)))
|
||||||
|
|
||||||
(provide
|
(provide
|
||||||
with-errors-to-browser
|
with-errors-to-browser)
|
||||||
redirect-to)
|
|
||||||
(provide/contract
|
(provide/contract
|
||||||
|
[redirect-to
|
||||||
|
(->* (string?) (redirection-status? #:headers (listof header?))
|
||||||
|
response/full?)]
|
||||||
[redirection-status? (any/c . -> . boolean?)]
|
[redirection-status? (any/c . -> . boolean?)]
|
||||||
[permanently redirection-status?]
|
[permanently redirection-status?]
|
||||||
[temporarily redirection-status?]
|
[temporarily redirection-status?]
|
||||||
|
|
|
@ -150,7 +150,7 @@
|
||||||
(check alpha= (normalize-term (expand-syntax (syntax (+ 1 2 3))))
|
(check alpha= (normalize-term (expand-syntax (syntax (+ 1 2 3))))
|
||||||
(expand-syntax (syntax (+ 1 2 3)))))
|
(expand-syntax (syntax (+ 1 2 3)))))
|
||||||
|
|
||||||
(test-case
|
#;(test-case
|
||||||
"empty-list"
|
"empty-list"
|
||||||
(check alpha= (normalize-term (expand-syntax (syntax ())))
|
(check alpha= (normalize-term (expand-syntax (syntax ())))
|
||||||
(expand-syntax (syntax ()))))
|
(expand-syntax (syntax ()))))
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
(require (lib "unit.ss"))
|
(require (lib "unit.ss")
|
||||||
|
scheme/contract)
|
||||||
(require "private/util.ss"
|
(require "private/util.ss"
|
||||||
"private/cache-table.ss"
|
"private/cache-table.ss"
|
||||||
"configuration/configuration-table-structs.ss"
|
"configuration/configuration-table-structs.ss"
|
||||||
|
@ -7,8 +8,21 @@
|
||||||
"configuration/namespace.ss"
|
"configuration/namespace.ss"
|
||||||
"configuration/responders.ss"
|
"configuration/responders.ss"
|
||||||
"web-config-sig.ss")
|
"web-config-sig.ss")
|
||||||
(provide configuration-table->web-config@
|
; XXX unit? should be particular unit sig
|
||||||
configuration-table-sexpr->web-config@)
|
(provide/contract
|
||||||
|
[configuration-table->web-config@
|
||||||
|
(-> path-string?
|
||||||
|
#:port (or/c false/c number?)
|
||||||
|
#:listen-ip (or/c false/c string?)
|
||||||
|
#:make-servlet-namespace make-servlet-namespace?
|
||||||
|
unit?)]
|
||||||
|
[configuration-table-sexpr->web-config@
|
||||||
|
(-> list? ; XXX
|
||||||
|
#:web-server-root path-string?
|
||||||
|
#:port (or/c false/c number?)
|
||||||
|
#:listen-ip (or/c false/c string?)
|
||||||
|
#:make-servlet-namespace make-servlet-namespace?
|
||||||
|
unit?)])
|
||||||
|
|
||||||
; configuration-table->web-config@ : path -> configuration
|
; configuration-table->web-config@ : path -> configuration
|
||||||
(define (configuration-table->web-config@
|
(define (configuration-table->web-config@
|
||||||
|
|
|
@ -3,17 +3,38 @@
|
||||||
(lib "tcp-sig.ss" "net")
|
(lib "tcp-sig.ss" "net")
|
||||||
(prefix-in raw: (lib "tcp-unit.ss" "net"))
|
(prefix-in raw: (lib "tcp-unit.ss" "net"))
|
||||||
(lib "unit.ss")
|
(lib "unit.ss")
|
||||||
(lib "contract.ss")
|
scheme/contract
|
||||||
|
"dispatchers/dispatch.ss"
|
||||||
"private/dispatch-server-sig.ss"
|
"private/dispatch-server-sig.ss"
|
||||||
"private/dispatch-server-unit.ss"
|
"private/dispatch-server-unit.ss"
|
||||||
"web-config-sig.ss"
|
"web-config-sig.ss"
|
||||||
"web-server-sig.ss"
|
"web-server-sig.ss"
|
||||||
"web-server-unit.ss"
|
"web-server-unit.ss"
|
||||||
(prefix-in http: "private/request.ss"))
|
(prefix-in http: "private/request.ss"))
|
||||||
(provide serve
|
|
||||||
serve/ports
|
|
||||||
serve/ips+ports)
|
|
||||||
(provide/contract
|
(provide/contract
|
||||||
|
[serve
|
||||||
|
(->* (#:dispatch dispatcher?)
|
||||||
|
(#:tcp@ unit?
|
||||||
|
#:port number?
|
||||||
|
#:listen-ip (or/c false/c string?)
|
||||||
|
#:max-waiting number?
|
||||||
|
#:initial-connection-timeout number?)
|
||||||
|
(-> void))]
|
||||||
|
[serve/ports
|
||||||
|
(->* (#:dispatch dispatcher?)
|
||||||
|
(#:tcp@ unit?
|
||||||
|
#:ports (listof number?)
|
||||||
|
#:listen-ip (or/c false/c string?)
|
||||||
|
#:max-waiting number?
|
||||||
|
#:initial-connection-timeout number?)
|
||||||
|
(-> void))]
|
||||||
|
[serve/ips+ports
|
||||||
|
(->* (#:dispatch dispatcher?)
|
||||||
|
(#:tcp@ unit?
|
||||||
|
#:ips+ports (listof (cons/c (or/c false/c string?) (listof number?)))
|
||||||
|
#:max-waiting number?
|
||||||
|
#:initial-connection-timeout number?)
|
||||||
|
(-> void))]
|
||||||
[do-not-return (-> void)]
|
[do-not-return (-> void)]
|
||||||
[serve/web-config@ (unit? . -> . (-> void?))])
|
[serve/web-config@ (unit? . -> . (-> void?))])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user