nephos-server 0.6.1 → 0.6.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: deb3406763cd858becf11305040bd3916c3151ef
4
- data.tar.gz: 840624b4879a929ce7b1555d598b7555b28f1f50
3
+ metadata.gz: 837711f9cdfb6dbb77a5c9c5a0964bd3f603c0c5
4
+ data.tar.gz: 1d69471c358c7a4e042dcabbbeb6d2002f55c1ed
5
5
  SHA512:
6
- metadata.gz: 2ce1336de3d50ec9e9dc42b1c3dab71f071f61c87158770191a62b42642220156aa729446b739f2438e0f758dadc28781934e94ddf4dbd41eb0465d89ea6d865
7
- data.tar.gz: a6c4b3d0cd26ed3d4c7f20d8ee81e4dee557df41d31b952225b9417cebcc075fc6b623f59c5b78351672fee16aad8c442918fb67064be51807826e94efdb98e0
6
+ metadata.gz: 807f30fb29bdc799e41180f9af31357aaae7c62118a551ff0e674419e6a6431b994e2a02c241a2e187d102dc3e5fea4349408c95fda63431f81f13dc62f0f4a9
7
+ data.tar.gz: 69442d3daba27976f008181bfaa7bff0746d0278267e24749962fae8320ee1961ed0a3ac5ec610021b8416e50ae45db67a7213a37551d4160a8243589f25b22a
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ v0.6.2
2
+ * Fix generator (bug when --application on current directory)
3
+ * Improve hooks (add the :only option)
4
+ * Improve documentation
5
+ * Improve routing (more tests, better duplicate / handlement)
6
+
1
7
  v0.6.1
2
8
  * Improve daemons
3
9
  * Improve Rakefile and tests structure
@@ -62,6 +62,10 @@ It will generate the route ``/home/index``, calling the ``MainController#root``
62
62
 
63
63
  ## URL Parameters
64
64
 
65
- **TODO**
65
+ **TODO: more documentation**
66
66
 
67
67
  place a ``/:param`` in your route. The parameter will be placed in the controller in the ``params`` method
68
+
69
+ ## Notes
70
+
71
+ * When a request is done, duplicate / are not counted. So, ``/resource/id`` is equivalent to ``////resource//id`` etc.
data/README.md CHANGED
@@ -128,10 +128,17 @@ end
128
128
  - Database creation
129
129
  - Web HTML with templating
130
130
 
131
+ Gitlab Continuous Integration:
131
132
  [![Gitlab Tests](https://gitlab.com/ci/projects/8973/status.png?ref=master)](https://gitlab.com/ci/projects/8973?ref=master)
132
133
 
134
+ Github version
133
135
  [![GitHub version](https://badge.fury.io/gh/pouleta%2FNephosRubyServer.svg)](http://badge.fury.io/gh/pouleta%2FNephosRubyServer)
134
136
 
137
+ Released version on ruby-gems
138
+ [![Gem Version](https://badge.fury.io/rb/nephos-server.svg)](http://badge.fury.io/rb/nephos-server)
139
+
140
+ Code Quality
135
141
  [![Code Climate](https://codeclimate.com/github/pouleta/NephosRubyServer/badges/gpa.svg)](https://codeclimate.com/github/pouleta/NephosRubyServer)
136
142
 
143
+ Nephos gem version
137
144
  [![Nephos Executables](https://badge.fury.io/rb/nephos.svg)](http://badge.fury.io/rb/nephos)
data/app/main.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  class MainController < Nephos::Controller
2
2
 
3
3
  before_action :fct_before_all
4
- before_action :fct_before_root, :root
5
- after_action :fct_after_root, :root
4
+ before_action :fct_before_root, only: [:root]
5
+ after_action :fct_after_root, only: :root
6
6
 
7
7
  def fct_before_all
8
8
  # puts "BEFORE ALL"
data/bin/nephos-generator CHANGED
@@ -105,7 +105,7 @@ EOF
105
105
 
106
106
  module Application
107
107
  def self.create_application_dir dir
108
- raise BinError, "Directory #{dir} already exists" if Dir.exists? dir
108
+ raise BinError, "Directory #{dir} already exists" if Dir.exists? dir and dir != "."
109
109
  Dir.mkdir dir
110
110
  end
111
111
 
@@ -32,14 +32,17 @@ module Nephos
32
32
 
33
33
  def self.parse_action_opts(opt)
34
34
  if opt.nil?
35
- return :'*'
35
+ if block_given? then yield :'*' else return [:'*'] end
36
36
  elsif opt.is_a? Hash
37
- raise "No implemented yet"
37
+ only = Array(opt[:only])
38
+ if block_given? then only.each{|e| yield e} else return only end
39
+ except = opt[:except]
40
+ raise "No implemented yet (except)" if except
38
41
  # parse :only and :except
39
42
  elsif opt.is_a? String or opt.is_a? Symbol
40
- return opt.to_sym
43
+ if block_given? then yield opt else return [opt] end
41
44
  else
42
- raise ArgumentError, "Invalid opts"
45
+ raise ArgumentError, "Invalid opt"
43
46
  end
44
47
  end
45
48
 
@@ -49,18 +52,22 @@ module Nephos
49
52
  # - if Hash, it will be parsed with rules :only and :except
50
53
  # - if String or Symbol, it will be parsed as :only
51
54
  def self.before_action(method, opt=nil)
52
- call = parse_action_opts(opt)
53
- @@before_action[call] ||= []
54
- @@before_action[call] << method.to_sym
55
+ parse_action_opts(opt) do |call|
56
+ @@before_action[call] ||= []
57
+ @@before_action[call] << method.to_sym
58
+ end
55
59
  end
56
60
 
57
61
  # see {#self.before_action}
58
62
  def self.after_action(method, opt=nil)
59
- call = parse_action_opts(opt)
60
- @@after_action[call] ||= []
61
- @@after_action[call] << method.to_sym
63
+ parse_action_opts(opt) do |call|
64
+ @@after_action[call] ||= []
65
+ @@after_action[call] << method.to_sym
66
+ end
62
67
  end
63
68
 
69
+ # It calls every registred hooks added to the @before_action list,
70
+ # including '*'
64
71
  def execute_before_action(call)
65
72
  call = call.to_sym
66
73
  methods = []
@@ -71,6 +78,7 @@ module Nephos
71
78
  end
72
79
  end
73
80
 
81
+ # see {#self.execute_before_action}
74
82
  def execute_after_action(call)
75
83
  call = call.to_sym
76
84
  methods = []
@@ -14,9 +14,10 @@ module Nephos
14
14
  params = what[:url].split('/').map do |p|
15
15
  p.match(/:\w+/) ? {p: "[^\/]+", name: p} : {p: p, name: nil}
16
16
  end
17
- url = params.map{|e| e[:p]}.join("/")
17
+ url = params.map{|e| e[:p]}.join("/+")
18
18
  url = "/" if url.empty?
19
19
  what[:match] = /^#{url}\/*$/
20
+ # remove : in :param, and / in /param
20
21
  what[:params] = params.map{|e| e[:name] && e[:name][1..-1]}[1..-1] || []
21
22
  end
22
23
 
data/test/router.rb CHANGED
@@ -59,7 +59,9 @@ class TestNephosServerRouter < Test::Unit::TestCase
59
59
  assert_equal "GET", first[:verb]
60
60
  assert_equal "TestController", first[:controller]
61
61
  assert_equal "method", first[:method]
62
- assert_equal /^\/\/*$/, first[:match]
62
+ assert "/".match(first[:match])
63
+ assert "//".match(first[:match])
64
+ assert "///".match(first[:match])
63
65
 
64
66
  reset_routes!
65
67
  post url: "/", controller: "TestController", method: "method", silent: true
@@ -67,7 +69,9 @@ class TestNephosServerRouter < Test::Unit::TestCase
67
69
  assert_equal "POST", first[:verb]
68
70
  assert_equal "TestController", first[:controller]
69
71
  assert_equal "method", first[:method]
70
- assert_equal /^\/\/*$/, first[:match]
72
+ assert "/".match(first[:match])
73
+ assert "//".match(first[:match])
74
+ assert "///".match(first[:match])
71
75
 
72
76
  reset_routes!
73
77
  put url: "/", controller: "TestController", method: "method", silent: true
@@ -75,14 +79,21 @@ class TestNephosServerRouter < Test::Unit::TestCase
75
79
  assert_equal "PUT", first[:verb]
76
80
  assert_equal "TestController", first[:controller]
77
81
  assert_equal "method", first[:method]
78
- assert_equal /^\/\/*$/, first[:match]
82
+ assert "/".match(first[:match])
83
+ assert "//".match(first[:match])
84
+ assert "///".match(first[:match])
79
85
  end
80
86
 
81
87
  def test_valid_routes_params
82
88
  reset_routes!
83
89
  get url: "/:what", controller: "TestController", method: "method", silent: true
84
90
  assert_equal "/:what", first[:url]
85
- assert_equal /^\/[^\/]+\/*$/, first[:match]
91
+ assert !"/".match(first[:match])
92
+ assert !"//".match(first[:match])
93
+ assert !"///".match(first[:match])
94
+ assert "/data".match(first[:match])
95
+ assert "/111".match(first[:match])
96
+ assert "/--_--".match(first[:match])
86
97
  end
87
98
 
88
99
  def test_valid_resources
@@ -102,7 +113,11 @@ class TestNephosServerRouter < Test::Unit::TestCase
102
113
  get url: "/:what", controller: "TestController", method: "method", silent: true
103
114
  end
104
115
  assert_equal "/home/:what", first[:url]
105
- assert_equal /^\/home\/[^\/]+\/*$/, first[:match]
116
+ assert !"/JOME/data".match(first[:match])
117
+ assert !"/1".match(first[:match])
118
+ assert !"/home".match(first[:match])
119
+ assert "/home/data".match(first[:match])
120
+ assert "/home/1".match(first[:match])
106
121
  end
107
122
 
108
123
  def test_valid_resources_params2
@@ -111,9 +126,19 @@ class TestNephosServerRouter < Test::Unit::TestCase
111
126
  get url: "/show", controller: "TestController", method: "method", silent: true
112
127
  end
113
128
  assert_equal "/:id/show", first[:url]
114
- assert_equal /^\/[^\/]+\/show\/*$/, first[:match]
129
+ assert !"/".match(first[:match])
130
+ assert !"/x".match(first[:match])
131
+ assert !"/xx".match(first[:match])
132
+ assert !"//1".match(first[:match])
133
+ assert !"/x/1".match(first[:match])
134
+ assert !"/1/x".match(first[:match])
135
+ assert !"/x//1".match(first[:match])
136
+ assert "/1/show".match(first[:match])
137
+ assert "/show/show".match(first[:match])
138
+ assert "/1//show".match(first[:match])
115
139
  end
116
140
 
141
+ REQ_GET_INDEX_ROOTx2 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"//index"})
117
142
  REQ_GET_INDEX = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/index"})
118
143
  REQ_POST_INDEX = Rack::Request.new({"REQUEST_METHOD"=>"POST", "PATH_INFO"=>"/index"})
119
144
  REQ_PUT_INDEX = Rack::Request.new({"REQUEST_METHOD"=>"PUT", "PATH_INFO"=>"/index"})
@@ -124,6 +149,7 @@ class TestNephosServerRouter < Test::Unit::TestCase
124
149
  reset_routes!
125
150
  get url: "/index", controller: "TestController", method: "method", silent: true
126
151
  post url: "/index", controller: "TestController", method: "method", silent: true
152
+ assert(Nephos::Router.new.find_route(REQ_GET_INDEX_ROOTx2))
127
153
  assert(Nephos::Router.new.find_route(REQ_GET_INDEX))
128
154
  assert(Nephos::Router.new.find_route(REQ_POST_INDEX))
129
155
  assert(!Nephos::Router.new.find_route(REQ_PUT_INDEX))
data/version CHANGED
@@ -1 +1 @@
1
- 0.6.1
1
+ 0.6.2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nephos-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - poulet_a
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-30 00:00:00.000000000 Z
11
+ date: 2015-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nomorebeer