fsws 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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