new keyword contracts

svn: r8622
This commit is contained in:
Jay McCarthy 2008-02-11 21:35:02 +00:00
parent e958a5af7a
commit 533266f2dd
15 changed files with 120 additions and 35 deletions

View File

@ -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?)])

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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?)]{

View File

@ -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.

View File

@ -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?]

View File

@ -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 ()))))

View File

@ -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@

View File

@ -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?))])