about summary refs log tree commit diff stats
path: root/src/loader/file.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/loader/file.nim')
-rw-r--r--src/loader/file.nim121
1 files changed, 0 insertions, 121 deletions
diff --git a/src/loader/file.nim b/src/loader/file.nim
deleted file mode 100644
index cdb7afc2..00000000
--- a/src/loader/file.nim
+++ /dev/null
@@ -1,121 +0,0 @@
-import algorithm
-import os
-import streams
-import times
-
-import loader/connecterror
-import loader/dirlist
-import loader/headers
-import loader/loaderhandle
-import types/url
-
-proc loadDir(handle: LoaderHandle, url: URL, path: string) =
-  template t(body: untyped) =
-    if not body:
-      return
-  var path = path
-  if path[^1] != '/': #TODO dos/windows
-    path &= '/'
-  var base = $url
-  if base[^1] != '/': #TODO dos/windows
-    base &= '/'
-  t handle.sendResult(0)
-  t handle.sendStatus(200) # ok
-  t handle.sendHeaders(newHeaders({"Content-Type": "text/html"}))
-  t handle.sendData("""
-<HTML>
-<HEAD>
-<BASE HREF="""" & base & """">
-<TITLE>Directory list of """ & path & """</TITLE>
-</HEAD>
-<BODY>
-<H1>Directory list of """ & path & """</H1>
-<PRE>
-""")
-  var fs: seq[(PathComponent, string)]
-  for pc, file in walkDir(path, relative = true):
-    fs.add((pc, file))
-  fs.sort(cmp = proc(a, b: (PathComponent, string)): int = cmp(a[1], b[1]))
-  var items: seq[DirlistItem]
-  for (pc, file) in fs:
-    let fullpath = path / file
-    var info: FileInfo
-    try:
-      info = getFileInfo(fullpath, followSymlink = false)
-    except OSError:
-      continue
-    let modified = $info.lastWriteTime.local().format("MMM/dd/yyyy HH:MM")
-    case pc
-    of pcDir:
-      items.add(DirlistItem(
-        t: ITEM_DIR,
-        name: file,
-        modified: modified
-      ))
-    of pcFile:
-      items.add(DirlistItem(
-        t: ITEM_FILE,
-        name: file,
-        modified: modified,
-        nsize: int(info.size)
-      ))
-    of pcLinkToDir, pcLinkToFile:
-      var target = expandSymlink(fullpath)
-      if pc == pcLinkToDir:
-        target &= '/'
-      items.add(DirlistItem(
-        t: ITEM_LINK,
-        name: file,
-        modified: modified,
-        linkto: target
-      ))
-  t handle.sendData(makeDirlist(items))
-  t handle.sendData("\n</PRE>\n</BODY>\n</HTML>\n")
-
-proc loadSymlink(handle: LoaderHandle, path: string) =
-  template t(body: untyped) =
-    if not body:
-      return
-  t handle.sendResult(0)
-  t handle.sendStatus(200) # ok
-  t handle.sendHeaders(newHeaders({"Content-Type": "text/html"}))
-  let sl = expandSymlink(path)
-  t handle.sendData("""
-<HTML>
-<HEAD>
-<TITLE>Symlink view<TITLE>
-</HEAD>
-<BODY>
-Symbolic link to <A HREF="""" & sl & """">""" & sl & """</A></br>
-</BODY>
-</HTML>""")
-
-proc loadFile(handle: LoaderHandle, istream: Stream) =
-  template t(body: untyped) =
-    if not body:
-      return
-  t handle.sendResult(0)
-  t handle.sendStatus(200) # ok
-  t handle.sendHeaders(newHeaders())
-  while not istream.atEnd:
-    const bufferSize = 4096
-    var buffer {.noinit.}: array[bufferSize, char]
-    while true:
-      let n = readData(istream, addr buffer[0], bufferSize)
-      if n == 0:
-        break
-      t handle.sendData(addr buffer[0], n)
-      if n < bufferSize:
-        break
-
-proc loadFilePath*(handle: LoaderHandle, url: URL, path: string) =
-  let istream = newFileStream(path, fmRead)
-  if istream == nil:
-    if dirExists(path):
-      handle.loadDir(url, path)
-    elif symlinkExists(path):
-      handle.loadSymlink(path)
-    else:
-      discard handle.sendResult(ERROR_FILE_NOT_FOUND)
-  else:
-    handle.loadFile(istream)