HttpHandlers+Files.swift 925 B

123456789101112131415161718192021222324252627282930
  1. //
  2. // HttpHandlers+Files.swift
  3. // Swifter
  4. //
  5. // Copyright (c) 2014-2016 Damian Kołakowski. All rights reserved.
  6. //
  7. import Foundation
  8. extension HttpHandlers {
  9. public class func shareFilesFromDirectory(_ directoryPath: String) -> ((HttpRequest) -> HttpResponse) {
  10. return { r in
  11. guard let fileRelativePath = r.params.first else {
  12. return .NotFound
  13. }
  14. let absolutePath = directoryPath + "/" + fileRelativePath.1
  15. guard let file = try? File.openForReading(absolutePath) else {
  16. return .NotFound
  17. }
  18. return .RAW(200, "OK", [:], { writer in
  19. var buffer = [UInt8](repeating: 0, count: 64)
  20. while let count = try? file.read(&buffer) where count > 0 {
  21. writer.write(buffer[0..<count])
  22. }
  23. file.close()
  24. })
  25. }
  26. }
  27. }