fsws 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b1df1553848f113fb3eda2aee05427bd83e62e36
4
- data.tar.gz: 763f7d9835435cd0b97b0b95f09ef4e5ecaa406a
3
+ metadata.gz: 0ef616ba3dcfed74c40c5e6af7b83e32eff4e18e
4
+ data.tar.gz: d513eb6f4c9c18cae7e029b7f9c3aa26cb1ddd04
5
5
  SHA512:
6
- metadata.gz: 2a5ea3586b14c44875c33915828f47b3ae3db92e29e7314d1f742c1bd457f30b472c61073b471dd972f609c85dc36aabc2bc1210a347dfab591af9bef72e079d
7
- data.tar.gz: 76b1e16c7f7afc34fd4d30d9c39f0f60cc892262af1434dcff4917b72e3967be6d8bf6a799088aaad9111f8e6c2446b30561bceec1f5356e80d8f33aa3dd6a29
6
+ metadata.gz: b024cb601015349fa6db8872808872f1fc834bc6ddc65f0ed8423a5e1b4e09d61c592207b0ee79824ef5876e2bd39b4ca52ec9553b84f6a8a5d06f2232afc5b2
7
+ data.tar.gz: b73223118c8f8f6f0d76230290daadb24f39d5ce029f039ac4319542deeb3d1f113ac3e9b7360d0488ad32f01ed2b33527d9b304f5a4ccab4e37a01ee330823f
@@ -34,6 +34,22 @@ def serve(env)
34
34
  return serve_file(path) || serve_dir(path) || error(env)
35
35
  end
36
36
 
37
+ class SendFile
38
+ def initialize(path)
39
+ @file = File.open(path, 'rb')
40
+ end
41
+
42
+ def close
43
+ @file.close
44
+ end
45
+
46
+ def each
47
+ while (buffer = @file.read(4096)) do
48
+ yield buffer
49
+ end
50
+ end
51
+ end
52
+
37
53
  def serve_file(path)
38
54
  return nil if !File.file? path
39
55
 
@@ -41,7 +57,7 @@ def serve_file(path)
41
57
  ext = ext[1...ext.length]
42
58
  mime_type = mime_types[ext] || 'text/plain'
43
59
 
44
- return 200, { 'Content-Type' => mime_type }, File.open(path, 'rb').read
60
+ return 200, { 'Content-Type' => mime_type }, SendFile.new(path)
45
61
  end
46
62
 
47
63
  def serve_dir(path)
@@ -66,7 +82,7 @@ def serve_dir(path)
66
82
  pwd = Pathname.new('/' + target_path.relative_path_from(current_path).to_s).cleanpath.to_s
67
83
  pwd += '/' if pwd[-1] != '/'
68
84
 
69
- return 200, { 'Content-Type' => 'text/html' }, erb('listing', dirs: dirs, files: files, pwd: pwd)
85
+ return 200, { 'Content-Type' => 'text/html' }, [erb('listing', dirs: dirs, files: files, pwd: pwd)]
70
86
  end
71
87
 
72
88
  def erb(view, vars)
@@ -75,7 +91,7 @@ def erb(view, vars)
75
91
  end
76
92
 
77
93
  def error(env)
78
- return 404, nil, erb('404', path: env['REQUEST_PATH'])
94
+ return 404, {}, [erb('404', path: env['REQUEST_PATH'])]
79
95
  end
80
96
 
81
97
  def redirect(path)
@@ -95,7 +111,7 @@ module Fsws
95
111
  def self.server
96
112
  Proc.new do |env|
97
113
  code, headers, body = serve(env)
98
- [code.to_s, headers, [body]]
114
+ [code.to_s, headers, body]
99
115
  end
100
116
  end
101
117
  end
@@ -1,3 +1,3 @@
1
1
  module Fsws
2
- VERSION = '2.0.1'
2
+ VERSION = '2.0.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fsws
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Schmich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-07 00:00:00.000000000 Z
11
+ date: 2015-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack