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 +4 -4
- data/lib/fsws/server.rb +20 -4
- data/lib/fsws/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ef616ba3dcfed74c40c5e6af7b83e32eff4e18e
|
4
|
+
data.tar.gz: d513eb6f4c9c18cae7e029b7f9c3aa26cb1ddd04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b024cb601015349fa6db8872808872f1fc834bc6ddc65f0ed8423a5e1b4e09d61c592207b0ee79824ef5876e2bd39b4ca52ec9553b84f6a8a5d06f2232afc5b2
|
7
|
+
data.tar.gz: b73223118c8f8f6f0d76230290daadb24f39d5ce029f039ac4319542deeb3d1f113ac3e9b7360d0488ad32f01ed2b33527d9b304f5a4ccab4e37a01ee330823f
|
data/lib/fsws/server.rb
CHANGED
@@ -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 },
|
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,
|
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,
|
114
|
+
[code.to_s, headers, body]
|
99
115
|
end
|
100
116
|
end
|
101
117
|
end
|
data/lib/fsws/version.rb
CHANGED
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.
|
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:
|
11
|
+
date: 2015-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|