diff --git a/collects/web-server/private/connection-manager.ss b/collects/web-server/private/connection-manager.ss index a631e4bdb6..d31c980bf0 100644 --- a/collects/web-server/private/connection-manager.ss +++ b/collects/web-server/private/connection-manager.ss @@ -1,7 +1,3 @@ -;; this is a trivial implementation of the connection-manger interface that -;; uses timeouts instead of a queued-model. - -;; the queued-model is also fully implemented but won't be used at this time. (module connection-manager mzscheme (require "connection-structs.ss" "timer.ss" diff --git a/collects/web-server/private/mime-types.ss b/collects/web-server/private/mime-types.ss index 215ff217fd..c0de5b24a9 100644 --- a/collects/web-server/private/mime-types.ss +++ b/collects/web-server/private/mime-types.ss @@ -4,8 +4,30 @@ (lib "string.ss")) (require "util.ss") (provide/contract + [read-mime-types (path? . -> . hash-table?)] [make-get-mime-type (path? . -> . (path? . -> . bytes?))]) + ; read-mime-types : path? -> hash-table? + (define (read-mime-types a-path) + (define MIME-TYPE-TABLE (make-hash-table)) + (with-input-from-file a-path + (lambda () + (let loop () + (match (read-line (current-input-port) 'any) + [(? eof-object?) + (void)] + [(regexp #"^([^\t ]+)[\t ]+(.+)$" + (list s type exts)) + (for-each (lambda (ext) + (hash-table-put! MIME-TYPE-TABLE + (lowercase-symbol! ext) + type)) + (regexp-split #" " exts)) + (loop)] + [_ + (loop)])))) + MIME-TYPE-TABLE) + ;; make-get-mime-type : path? -> path? -> bytes? ;; determine the mime type based on the filename's suffix ;; @@ -13,25 +35,10 @@ ;; 1. Can we determine the mime type based on file contents? ;; 2. Assuming that 7-bit ASCII is correct for mime-type (define (make-get-mime-type a-path) - (let ([MIME-TYPE-TABLE (make-hash-table)] + (let ([MIME-TYPE-TABLE (read-mime-types a-path)] [DEFAULT-MIME-TYPE #"text/plain; charset=utf-8"] [file-suffix-regexp (byte-regexp #".*\\.([^\\.]*$)")]) - (with-input-from-file a-path - (lambda () - (let loop () - (match (read-line (current-input-port) 'any) - [(? eof-object?) - (void)] - [(regexp #"^([^\t ]+)[\t ]+(.+)$" - (list s type exts)) - (for-each (lambda (ext) - (hash-table-put! MIME-TYPE-TABLE - (lowercase-symbol! ext) - type)) - (regexp-split #" " exts)) - (loop)] - [_ - (loop)])))) + (lambda (path) (match (regexp-match file-suffix-regexp (path->bytes path)) [(list path-bytes sffx) diff --git a/collects/web-server/tests/dispatchers/dispatch-files-test.ss b/collects/web-server/tests/dispatchers/dispatch-files-test.ss index e73ed04770..6200926487 100644 --- a/collects/web-server/tests/dispatchers/dispatch-files-test.ss +++ b/collects/web-server/tests/dispatchers/dispatch-files-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide dispatch-files-tests) + ; XXX (define dispatch-files-tests (test-suite "Files"))) \ No newline at end of file diff --git a/collects/web-server/tests/dispatchers/dispatch-lang-test.ss b/collects/web-server/tests/dispatchers/dispatch-lang-test.ss index f13d4fca3e..845e80f7e8 100644 --- a/collects/web-server/tests/dispatchers/dispatch-lang-test.ss +++ b/collects/web-server/tests/dispatchers/dispatch-lang-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide dispatch-lang-tests) + ; XXX (define dispatch-lang-tests (test-suite "Web Language"))) \ No newline at end of file diff --git a/collects/web-server/tests/dispatchers/dispatch-passwords-test.ss b/collects/web-server/tests/dispatchers/dispatch-passwords-test.ss index 3300879350..a7993cbe54 100644 --- a/collects/web-server/tests/dispatchers/dispatch-passwords-test.ss +++ b/collects/web-server/tests/dispatchers/dispatch-passwords-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide dispatch-passwords-tests) + ; XXX (define dispatch-passwords-tests (test-suite "Passwords"))) \ No newline at end of file diff --git a/collects/web-server/tests/dispatchers/dispatch-servlets-test.ss b/collects/web-server/tests/dispatchers/dispatch-servlets-test.ss index a7e028cad2..0e1ff6f2af 100644 --- a/collects/web-server/tests/dispatchers/dispatch-servlets-test.ss +++ b/collects/web-server/tests/dispatchers/dispatch-servlets-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide dispatch-servlets-tests) + ; XXX (define dispatch-servlets-tests (test-suite "Servlets"))) \ No newline at end of file diff --git a/collects/web-server/tests/lang/abort-resume-test.ss b/collects/web-server/tests/lang/abort-resume-test.ss index f46346a2b3..5768109959 100644 --- a/collects/web-server/tests/lang/abort-resume-test.ss +++ b/collects/web-server/tests/lang/abort-resume-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide abort-resume-tests) + ; XXX (define abort-resume-tests (test-suite "Abort Resume"))) \ No newline at end of file diff --git a/collects/web-server/tests/lang/web-cells-test.ss b/collects/web-server/tests/lang/web-cells-test.ss index 2c90c481ec..9a76895aa3 100644 --- a/collects/web-server/tests/lang/web-cells-test.ss +++ b/collects/web-server/tests/lang/web-cells-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide web-cells-tests) + ; XXX (define web-cells-tests (test-suite "Web Cells"))) \ No newline at end of file diff --git a/collects/web-server/tests/lang/web-extras-test.ss b/collects/web-server/tests/lang/web-extras-test.ss index add8e6f0c6..f04e2900e2 100644 --- a/collects/web-server/tests/lang/web-extras-test.ss +++ b/collects/web-server/tests/lang/web-extras-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide web-extras-tests) + ; XXX (define web-extras-tests (test-suite "Web Extras"))) \ No newline at end of file diff --git a/collects/web-server/tests/lang/web-test.ss b/collects/web-server/tests/lang/web-test.ss index 19b20e0060..1b9a885066 100644 --- a/collects/web-server/tests/lang/web-test.ss +++ b/collects/web-server/tests/lang/web-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide web-tests) + ; XXX (define web-tests (test-suite "Web"))) \ No newline at end of file diff --git a/collects/web-server/tests/private/cache-table-test.ss b/collects/web-server/tests/private/cache-table-test.ss index 4b1baf4493..f59fc90de8 100644 --- a/collects/web-server/tests/private/cache-table-test.ss +++ b/collects/web-server/tests/private/cache-table-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide cache-table-tests) + ; XXX (define cache-table-tests (test-suite "Cache Table"))) \ No newline at end of file diff --git a/collects/web-server/tests/private/connection-manager-test.ss b/collects/web-server/tests/private/connection-manager-test.ss index 9d69a7d936..23d46fa53b 100644 --- a/collects/web-server/tests/private/connection-manager-test.ss +++ b/collects/web-server/tests/private/connection-manager-test.ss @@ -2,6 +2,7 @@ (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) (provide connection-manager-tests) + ; XXX (define connection-manager-tests (test-suite "Connection Manager"))) \ No newline at end of file diff --git a/collects/web-server/tests/private/mime-types-test.ss b/collects/web-server/tests/private/mime-types-test.ss index e4593f1295..fc6ce904d2 100644 --- a/collects/web-server/tests/private/mime-types-test.ss +++ b/collects/web-server/tests/private/mime-types-test.ss @@ -1,7 +1,42 @@ (module mime-types-test mzscheme - (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))) + (require (planet "test.ss" ("schematics" "schemeunit.plt" 2)) + (lib "file.ss") + (lib "mime-types.ss" "web-server" "private")) (provide mime-types-tests) + (define test-file (make-temporary-file)) + (with-output-to-file test-file + (lambda () + (printf #<