module Ocsigen_local_files: sig .. end
The requested file does not exists
exception Failed_404
The requested file cannot be served: does not exists, not
enough permissions ...
exception Failed_403
The file is a directory which we should not display
exception NotReadableDirectory
type resolved =
| |
RFile of string |
| |
RDir of string |
Local file corresponding to a request. The string argument
represents the real file or directory to serve, eg. foo/index.html
instead of foo
val resolve : ?no_check_for:string ->
request:Ocsigen_extensions.request ->
filename:string -> unit -> resolved
Finds
filename in the filesystem, with a possible redirection
if it is a directory. Takes into account the fact that
filename
does not exists, is a symlink or is a directory, and raises
Failed_404 or Failed_403 accordingly.
- we return
"filename/index.html" if filename corresponds to
a directory, "filename/index.html" is valid, and "index.html"
is one possible index (trying all possible indexes in order)
- we raise
Failed_404 if filename corresponds to a directory,
no index exists and list_dir_content is false.
Warning: this behaviour is not the same as Apache's but it corresponds
to a missing service in Eliom (answers 404). This also allows to have
an Eliom service after a "forbidden" directory
- we raise
Failed_403 if filename is a symlink that must
not be followed
- raises
Failed_404 if filename does not exist, or is a special file
- otherwise returns
filename
no_check_for is supposed to be a prefix of
filename ;
directories above
no_check_for are not checked for symlinks
val content : request:Ocsigen_extensions.request ->
file:resolved -> Ocsigen_http_frame.result Lwt.t
Given the local file file, with a request originating at url
url, returns a viewable content of file. Currently, the url
parameter is used only if url is a directory