nephos-server 0.1.11 → 0.1.12
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/controllers/dataset.rb +42 -0
- data/controllers/image.jpg +0 -0
- data/controllers/main.rb +55 -0
- data/lib/nephos-server/routing/execute.rb +12 -8
- data/lib/nephos-server/routing/load.rb +33 -17
- data/lib/nephos-server/server/responder.rb +6 -7
- data/nephos-server.gemspec +27 -22
- data/routes.rb +22 -0
- data/test/responder.rb +90 -0
- data/test/routing.rb +18 -0
- data/test/test.rb +3 -0
- data/version +1 -1
- metadata +13 -3
- data/routes.rb.example +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ef589e2b56701d6cdac117476c0672b3cf0aced
|
4
|
+
data.tar.gz: 1dc8dbfcb20cdbb48ea3692731561136068dcd19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4a2e21ee155c0350c9c2727262fea00005bcfb9588b8b42ce1ba830290c783daff6e527afa748a34539761005ba6f01bd33393350bee6781826325e8ed237af
|
7
|
+
data.tar.gz: 773200898dc45b06b7c8cb4f82ab39a35539ae5b5698e4dbf1ceb7c773506633e5ca6c74cb9c16099ae22b5e7699d5c3034d6368b79e1c79b78d40a7b18c3c69
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module Dataset
|
4
|
+
|
5
|
+
$dataset = []
|
6
|
+
LOCK = Mutex.new
|
7
|
+
|
8
|
+
def self.start
|
9
|
+
Thread.new do
|
10
|
+
loop do
|
11
|
+
$dataset.each do |url|
|
12
|
+
print "Open #{url} "
|
13
|
+
begin
|
14
|
+
open(url)
|
15
|
+
puts "SUCCESS"
|
16
|
+
rescue => err
|
17
|
+
puts "FAILURE #{err.message}"
|
18
|
+
end
|
19
|
+
sleep 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.<<(url)
|
26
|
+
if not $started
|
27
|
+
$started = true
|
28
|
+
start
|
29
|
+
end
|
30
|
+
LOCK.lock
|
31
|
+
$dataset << url
|
32
|
+
$dataset.uniq!
|
33
|
+
LOCK.unlock
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.rm(url)
|
37
|
+
LOCK.lock
|
38
|
+
$dataset.remove url
|
39
|
+
LOCK.unlock
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
Binary file
|
data/controllers/main.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
class MainController < Nephos::Controller
|
2
|
+
|
3
|
+
def root
|
4
|
+
{
|
5
|
+
json: {
|
6
|
+
list: $dataset,
|
7
|
+
add: '/add',
|
8
|
+
rm: '/rm',
|
9
|
+
}
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_url
|
14
|
+
url = arguments["url"]
|
15
|
+
if url
|
16
|
+
Dataset << url
|
17
|
+
return {plain: "#{url} added"}
|
18
|
+
else
|
19
|
+
return {plain: "url argument required"}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def rm_url
|
24
|
+
url = arguments[:url]
|
25
|
+
if url
|
26
|
+
Dataset.rm url
|
27
|
+
return {plain: "#{url} removed"}
|
28
|
+
else
|
29
|
+
return {plain: "url argument required"}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def hello
|
34
|
+
{html: "<html><body><h1>hello world</h1><p>lol</p></body></html>"}
|
35
|
+
end
|
36
|
+
|
37
|
+
AUTH_IMG_EXT = %w(.jpg .jpeg .png .gif)
|
38
|
+
def image
|
39
|
+
dir = File.expand_path('controllers/')
|
40
|
+
file = File.expand_path(params["image"], dir)
|
41
|
+
if not file[0..(dir.size-1)] == dir or not AUTH_IMG_EXT.include?(File.extname(file))
|
42
|
+
return {status: 500, content: "invalid path #{params['image']}"}
|
43
|
+
elsif not File.exists? file
|
44
|
+
return {status: 404, content: "invalid path #{params['image']}"}
|
45
|
+
else
|
46
|
+
return {type: 'image/jpeg', content: File.read(file)}
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
require 'pry'
|
51
|
+
def debug
|
52
|
+
binding.pry
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -23,6 +23,14 @@ module Nephos
|
|
23
23
|
return ALL.find{|e| e[:match] =~ route and e[:verb] == verb}
|
24
24
|
end
|
25
25
|
|
26
|
+
def self.parse_env(env, route)
|
27
|
+
verb = env["REQUEST_METHOD"]
|
28
|
+
from = env["REMOTE_ADDR"]
|
29
|
+
path = route.path.split("/").select{|e|not e.to_s.empty?}
|
30
|
+
args = Hash[route.query.to_s.split("&").map{|e| e.split("=")}]
|
31
|
+
return {route: route, verb: verb, from: from, path: path, args: args}
|
32
|
+
end
|
33
|
+
|
26
34
|
def self.execute(env)
|
27
35
|
begin
|
28
36
|
route = URI.parse(env['REQUEST_URI'])
|
@@ -30,14 +38,10 @@ module Nephos
|
|
30
38
|
puts "uri err #{err.message}".red
|
31
39
|
return render(status: 500)
|
32
40
|
end
|
33
|
-
|
34
|
-
from
|
35
|
-
|
36
|
-
|
37
|
-
puts "#{from} [#{verb}] \t ---> \t #{route}"
|
38
|
-
parsed = {route: route, verb: verb, from: from, path: path, args: args}
|
39
|
-
call = parse_path(path, verb)
|
40
|
-
return render status: 404 if call.nil?
|
41
|
+
parsed = parse_env(env, route)
|
42
|
+
puts "#{parsed[:from]} [#{parsed[:verb]}] \t ---> \t #{route}"
|
43
|
+
call = parse_path(parsed[:path], parsed[:verb])
|
44
|
+
return render(status: 404) if call.nil?
|
41
45
|
begin
|
42
46
|
controller = Module.const_get(call[:controller]).new(env, parsed, call)
|
43
47
|
return render(controller.send(call[:method]) || {status: 500})
|
@@ -3,7 +3,9 @@ module Nephos
|
|
3
3
|
|
4
4
|
def self.add(what, verb)
|
5
5
|
Nephos::Route::ALL << what.merge(verb: verb)
|
6
|
-
|
6
|
+
display = "[#{verb}] #{what[:url]} \t ---> \t #{what[:controller]}##{what[:method]}"
|
7
|
+
puts display unless what[:silent]
|
8
|
+
return display
|
7
9
|
end
|
8
10
|
|
9
11
|
def self.add_params!(what)
|
@@ -16,10 +18,13 @@ module Nephos
|
|
16
18
|
what[:params] = params.map{|e| e[:name] && e[:name][1..-1]}[1..-1] || []
|
17
19
|
end
|
18
20
|
|
19
|
-
def self.
|
21
|
+
def self.check_keys! what
|
20
22
|
raise InvalidRouteUrl, "Missing URL" unless what.keys.include? :url
|
21
23
|
raise InvalidRouteController, "Missing Controller" unless what.keys.include? :controller
|
22
24
|
raise InvalidRouteMethod, "Missing Method" unless what.keys.include? :method
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.check_controller! what
|
23
28
|
begin
|
24
29
|
controller = Module.const_get(what[:controller])
|
25
30
|
rescue
|
@@ -28,9 +33,24 @@ module Nephos
|
|
28
33
|
if not controller.ancestors.include? Nephos::Controller
|
29
34
|
raise InvalidRouteController, "Class \"#{what[:controller]}\" is not a Nephos::Controller"
|
30
35
|
end
|
31
|
-
|
36
|
+
begin
|
37
|
+
instance = controller.new
|
38
|
+
rescue
|
39
|
+
raise InvalidRouteController, "Cannot initialize controller"
|
40
|
+
end
|
41
|
+
return instance
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.check_method! what, instance
|
45
|
+
if not instance.respond_to? what[:method]
|
32
46
|
raise InvalidRouteMethod, "No method named \"#{what[:method]}\""
|
33
|
-
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.check!(what)
|
51
|
+
check_keys! what
|
52
|
+
instance = check_controller! what
|
53
|
+
check_method! what, instance
|
34
54
|
end
|
35
55
|
|
36
56
|
end
|
@@ -41,31 +61,27 @@ def route_prefix
|
|
41
61
|
File.join(["/"] + @route_prefix)
|
42
62
|
end
|
43
63
|
|
44
|
-
|
45
|
-
def get what
|
64
|
+
def add_route(what, verb)
|
46
65
|
raise InvalidRoute unless what.is_a? Hash
|
47
66
|
what[:url] = File.expand_path File.join(route_prefix, what[:url])
|
48
67
|
Nephos::Route.check!(what)
|
49
68
|
Nephos::Route.add_params!(what)
|
50
|
-
Nephos::Route.add(what,
|
69
|
+
Nephos::Route.add(what, verb)
|
70
|
+
end
|
71
|
+
|
72
|
+
# @param what [Hash]
|
73
|
+
def get what
|
74
|
+
add_route what, "GET"
|
51
75
|
end
|
52
76
|
|
53
77
|
# @param what [Hash]
|
54
78
|
def post what
|
55
|
-
|
56
|
-
what[:url] = File.join(route_prefix, what[:url])
|
57
|
-
Nephos::Route.check!(what)
|
58
|
-
Nephos::Route.add_params!(what)
|
59
|
-
Nephos::Route.add(what, "POST")
|
79
|
+
add_route what, "POST"
|
60
80
|
end
|
61
81
|
|
62
82
|
# @param what [Hash]
|
63
83
|
def put what
|
64
|
-
|
65
|
-
what[:url] = File.join(route_prefix, what[:url])
|
66
|
-
Nephos::Route.check!(what)
|
67
|
-
Nephos::Route.add_params!(what)
|
68
|
-
Nephos::Route.add(what, "PUT")
|
84
|
+
add_route what, "PUT"
|
69
85
|
end
|
70
86
|
|
71
87
|
def resource(name, &block)
|
@@ -11,7 +11,7 @@ module Nephos
|
|
11
11
|
|
12
12
|
# @param params [Hash] containing :type => "kind/type", example: "text/html"
|
13
13
|
def self.ct_specific(params)
|
14
|
-
kind, type = params[:type].match(/^(\w+)\/(\w+)$/)[1..2]
|
14
|
+
kind, type = params[:type].to_s.match(/^(\w+)\/(\w+)$/) && Regexp.last_match[1..2]
|
15
15
|
if kind.nil? or type.nil?
|
16
16
|
raise InvalidContentType, "params[:type] must match with \"kind/type\""
|
17
17
|
end
|
@@ -27,14 +27,13 @@ module Nephos
|
|
27
27
|
private
|
28
28
|
# if not :status entry, set to 200
|
29
29
|
def self.set_default_params_status params
|
30
|
-
|
31
|
-
params[:status] ||= 200
|
32
|
-
end
|
30
|
+
params[:status] ||= 200
|
33
31
|
end
|
34
32
|
|
35
33
|
def self.set_default_params_type params
|
36
|
-
|
37
|
-
|
34
|
+
if params[:type].nil?
|
35
|
+
params[:type] = PRESET_CT[(params.keys & [:plain, :html, :json]).first || :plain]
|
36
|
+
end
|
38
37
|
params[:type] = ct_specific(params)
|
39
38
|
end
|
40
39
|
|
@@ -65,7 +64,7 @@ module Nephos
|
|
65
64
|
|
66
65
|
# @param params [Hash, Symbol]
|
67
66
|
def self.render params
|
68
|
-
return [204, plain
|
67
|
+
return [204, ct_specific({type: PRESET_CT[:plain]}), [""]] if params == :empty
|
69
68
|
params = set_default_params(params)
|
70
69
|
return [
|
71
70
|
params[:status],
|
data/nephos-server.gemspec
CHANGED
@@ -5,29 +5,34 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.summary = 'See Changelog'
|
6
6
|
s.description = ' a minimalist server, based on rack/puma, with routing, rendering, and controllers. Designed for quick api.'
|
7
7
|
s.authors = [
|
8
|
-
|
9
|
-
]
|
10
|
-
s.email = 'poulet_a@epitech.eu',
|
11
|
-
s.files = [
|
12
|
-
'lib/nephos-server.rb',
|
13
|
-
'lib/nephos-server/basic_errors.rb',
|
14
|
-
'lib/nephos-server/server/main.rb',
|
15
|
-
'lib/nephos-server/server/responder.rb',
|
16
|
-
'lib/nephos-server/routing/execute.rb',
|
17
|
-
'lib/nephos-server/routing/load.rb',
|
18
|
-
'lib/nephos-server/routing/controller.rb',
|
19
|
-
'routes.rb.example',
|
20
|
-
'README.md',
|
21
|
-
'Rakefile',
|
22
|
-
'Procfile',
|
23
|
-
'Gemfile',
|
24
|
-
'Gemfile.lock',
|
25
|
-
'nephos-server.gemspec',
|
26
|
-
'version',
|
27
|
-
'test/test.rb',
|
28
|
-
'bin/nephos-server',
|
29
|
-
'bin/nephos-generator'
|
8
|
+
'poulet_a'
|
30
9
|
]
|
10
|
+
s.email = 'poulet_a@epitech.eu',
|
11
|
+
s.files = %w(
|
12
|
+
lib/nephos-server.rb
|
13
|
+
lib/nephos-server/basic_errors.rb
|
14
|
+
lib/nephos-server/server/main.rb
|
15
|
+
lib/nephos-server/server/responder.rb
|
16
|
+
lib/nephos-server/routing/execute.rb
|
17
|
+
lib/nephos-server/routing/load.rb
|
18
|
+
lib/nephos-server/routing/controller.rb
|
19
|
+
README.md
|
20
|
+
Rakefile
|
21
|
+
Procfile
|
22
|
+
Gemfile
|
23
|
+
Gemfile.lock
|
24
|
+
nephos-server.gemspec
|
25
|
+
version
|
26
|
+
test/test.rb
|
27
|
+
test/responder.rb
|
28
|
+
test/routing.rb
|
29
|
+
routes.rb
|
30
|
+
controllers/dataset.rb
|
31
|
+
controllers/image.jpg
|
32
|
+
controllers/main.rb
|
33
|
+
bin/nephos-server
|
34
|
+
bin/nephos-generator
|
35
|
+
)
|
31
36
|
s.executables = ['nephos-server', 'nephos-generator']
|
32
37
|
s.homepage = 'https://github.com/pouleta/NephosRubyServer'
|
33
38
|
s.license = 'GNU/GPLv3'
|
data/routes.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
resource "home" do
|
2
|
+
resource "/index" do
|
3
|
+
get url: "/", controller: "MainController", method: "root"
|
4
|
+
get url: "/add", controller: "MainController", method: "add_url"
|
5
|
+
get url: "/rm", controller: "MainController", method: "rm_url"
|
6
|
+
end
|
7
|
+
get url: "/", controller: "MainController", method: "root"
|
8
|
+
end
|
9
|
+
|
10
|
+
resource "homes" do
|
11
|
+
get url: "/", controller: "MainController", method: "root"
|
12
|
+
end
|
13
|
+
|
14
|
+
get url: "/", controller: "MainController", method: "root"
|
15
|
+
get url: "/add", controller: "MainController", method: "add_url"
|
16
|
+
get url: "/rm", controller: "MainController", method: "rm_url"
|
17
|
+
get url: "/debug", controller: "MainController", method: "debug"
|
18
|
+
get url: "/hello", controller: "MainController", method: "hello"
|
19
|
+
|
20
|
+
get url: "/image", controller: "MainController", method: "image"
|
21
|
+
get url: "/image/:image", controller: "MainController", method: "image"
|
22
|
+
get url: "img/:image", controller: "MainController", method: "image"
|
data/test/responder.rb
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
|
2
|
+
class TestNephosServerResponder < Test::Unit::TestCase
|
3
|
+
|
4
|
+
def test_content_type
|
5
|
+
assert_equal(
|
6
|
+
{'Content-type' => "KIND/TYPE" "; charset=" "CHARSET"},
|
7
|
+
Nephos::Responder.content_type("KIND", "TYPE", "CHARSET")
|
8
|
+
)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_ct_specific
|
12
|
+
p0 = {type: "text/plain"}
|
13
|
+
p1 = {type: "/"}
|
14
|
+
p2 = {type: "text/"}
|
15
|
+
p3 = {type: "/plain"}
|
16
|
+
p4 = {type: "textplain"}
|
17
|
+
p5 = {type: ""}
|
18
|
+
p6 = {type: 1}
|
19
|
+
p7 = {type: []}
|
20
|
+
p8 = {type: nil}
|
21
|
+
p9 = {}
|
22
|
+
assert Nephos::Responder.ct_specific(p0)
|
23
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p1) end
|
24
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p2) end
|
25
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p3) end
|
26
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p4) end
|
27
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p5) end
|
28
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p6) end
|
29
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p7) end
|
30
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p8) end
|
31
|
+
assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p9) end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_set_default_params_status
|
35
|
+
p1 = {status: 200}
|
36
|
+
p2 = {status: 300}
|
37
|
+
p3 = {status: nil}
|
38
|
+
p4 = {}
|
39
|
+
Nephos::Responder.set_default_params_status(p1)
|
40
|
+
Nephos::Responder.set_default_params_status(p2)
|
41
|
+
Nephos::Responder.set_default_params_status(p3)
|
42
|
+
Nephos::Responder.set_default_params_status(p4)
|
43
|
+
assert_equal({status: 200}, p1)
|
44
|
+
assert_equal({status: 300}, p2)
|
45
|
+
assert_equal({status: 200}, p3)
|
46
|
+
assert_equal({status: 200}, p4)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_set_default_params_type_1
|
50
|
+
p_ref = {type: Nephos::Responder.ct_specific({type: "text/plain"})}
|
51
|
+
p1 = {type: "text/plain"}
|
52
|
+
p2 = {type: "text"}
|
53
|
+
p3 = {type: "text/plain"}
|
54
|
+
Nephos::Responder.set_default_params_type(p1)
|
55
|
+
assert_equal p1, p_ref
|
56
|
+
assert_raise Nephos::Responder::InvalidContentType do
|
57
|
+
Nephos::Responder.set_default_params_type(p2) end
|
58
|
+
Nephos::Responder.set_default_params_type(p3)
|
59
|
+
assert_equal p_ref, p3
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_set_default_params_type_2
|
63
|
+
p1 = {plain: "bla"}
|
64
|
+
p2 = {html: "bla"}
|
65
|
+
p3 = {json: "bla", plain: "bla"}
|
66
|
+
p4 = {json: "bla", html: "bla"}
|
67
|
+
p5 = {json: "bla"}
|
68
|
+
Nephos::Responder.set_default_params_type(p1)
|
69
|
+
Nephos::Responder.set_default_params_type(p2)
|
70
|
+
Nephos::Responder.set_default_params_type(p3)
|
71
|
+
Nephos::Responder.set_default_params_type(p4)
|
72
|
+
Nephos::Responder.set_default_params_type(p5)
|
73
|
+
plain = Nephos::Responder.ct_specific({type: "text/plain"})
|
74
|
+
json = Nephos::Responder.ct_specific({type: "text/javascript"})
|
75
|
+
html = Nephos::Responder.ct_specific({type: "text/html"})
|
76
|
+
assert_equal plain, p1[:type]
|
77
|
+
assert_equal html, p2[:type]
|
78
|
+
assert_equal json, p3[:type]
|
79
|
+
assert_equal json, p4[:type]
|
80
|
+
assert_equal json, p5[:type]
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_render_empty
|
84
|
+
assert_equal(
|
85
|
+
[204, Nephos::Responder.ct_specific({type: "text/plain"}), [""]],
|
86
|
+
Nephos::Responder.render(:empty)
|
87
|
+
)
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
data/test/routing.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
class TestController < Nephos::Controller
|
2
|
+
def method
|
3
|
+
{plain: "test"}
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
class TestNephosServerRouting < Test::Unit::TestCase
|
8
|
+
|
9
|
+
# remove all seeds
|
10
|
+
Nephos::Route::ALL = []
|
11
|
+
|
12
|
+
def test_valid_routes
|
13
|
+
get url: "/", controller: "TestController", method: "method", silent: true
|
14
|
+
post url: "/", controller: "TestController", method: "method", silent: true
|
15
|
+
put url: "/", controller: "TestController", method: "method", silent: true
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
data/test/test.rb
CHANGED
data/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.12
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nephos-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- poulet_a
|
@@ -49,7 +49,6 @@ email:
|
|
49
49
|
- lib/nephos-server/routing/execute.rb
|
50
50
|
- lib/nephos-server/routing/load.rb
|
51
51
|
- lib/nephos-server/routing/controller.rb
|
52
|
-
- routes.rb.example
|
53
52
|
- README.md
|
54
53
|
- Rakefile
|
55
54
|
- Procfile
|
@@ -58,6 +57,12 @@ email:
|
|
58
57
|
- nephos-server.gemspec
|
59
58
|
- version
|
60
59
|
- test/test.rb
|
60
|
+
- test/responder.rb
|
61
|
+
- test/routing.rb
|
62
|
+
- routes.rb
|
63
|
+
- controllers/dataset.rb
|
64
|
+
- controllers/image.jpg
|
65
|
+
- controllers/main.rb
|
61
66
|
- bin/nephos-server
|
62
67
|
- bin/nephos-generator
|
63
68
|
executables:
|
@@ -73,6 +78,9 @@ files:
|
|
73
78
|
- Rakefile
|
74
79
|
- bin/nephos-generator
|
75
80
|
- bin/nephos-server
|
81
|
+
- controllers/dataset.rb
|
82
|
+
- controllers/image.jpg
|
83
|
+
- controllers/main.rb
|
76
84
|
- lib/nephos-server.rb
|
77
85
|
- lib/nephos-server/basic_errors.rb
|
78
86
|
- lib/nephos-server/routing/controller.rb
|
@@ -81,7 +89,9 @@ files:
|
|
81
89
|
- lib/nephos-server/server/main.rb
|
82
90
|
- lib/nephos-server/server/responder.rb
|
83
91
|
- nephos-server.gemspec
|
84
|
-
- routes.rb
|
92
|
+
- routes.rb
|
93
|
+
- test/responder.rb
|
94
|
+
- test/routing.rb
|
85
95
|
- test/test.rb
|
86
96
|
- version
|
87
97
|
homepage: https://github.com/pouleta/NephosRubyServer
|
data/routes.rb.example
DELETED