rails_limiter 0.3.1 → 0.3.3
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/rails_limiter/rails_limiter.rb +7 -8
- data/lib/rails_limiter/version.rb +1 -1
- metadata +30 -50
- data/test/dummy/log/test.log +0 -60
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/293460f7bea2aea456231b769212f36f +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/5daa64d9601a1dd14726112003d08364 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/b45890d98668c132fee5cae4b15320d9 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/daa0e3c217673cb0ebb89d97438a1b80 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9cf139bea369504bef86ddebb06326e974e0674
|
4
|
+
data.tar.gz: e7601947fffb4e78cf111cdd5998a5763831e108
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccfb5bab3bf040b46f4640093482a75b210fc201bfd8aec08955b479f0360e8ce8e25c4b5c1ac4333b907de3c7968a5aa30f213aef0725c95f2d30784d0998a7
|
7
|
+
data.tar.gz: 5f39f197c60a320ff1ec4e9358985b1c88ee869b8beab9f9d8f4e313d2882e0e48898d3ba25c44e925d65d095a120e2940f099b19d8f2d99f32b068b3de0121e
|
@@ -3,10 +3,9 @@ require 'active_support/core_ext/object/blank'
|
|
3
3
|
module RailsLimiter::RailsLimiter
|
4
4
|
def limit(key, max, expire_in, url)
|
5
5
|
valid, ttl = process_limit(key, max, expire_in)
|
6
|
-
|
6
|
+
|
7
7
|
unless valid
|
8
|
-
|
9
|
-
redirect_to url
|
8
|
+
render :status => 429, :json => {:message => "You exceeded your requests limit of #{max}. Try again in #{ttl} seconds"}
|
10
9
|
return
|
11
10
|
end
|
12
11
|
end
|
@@ -15,17 +14,17 @@ module RailsLimiter::RailsLimiter
|
|
15
14
|
def get_connexion
|
16
15
|
@connexion ||= RailsLimiter::Init.configuration.connexion
|
17
16
|
end
|
18
|
-
|
17
|
+
|
19
18
|
def process_limit(key, max, expire_in = 1.day.seconds.to_i)
|
20
19
|
get_connexion
|
21
|
-
|
20
|
+
|
22
21
|
val = @connexion.get(key)
|
23
|
-
|
22
|
+
|
24
23
|
if val.blank?
|
25
24
|
# si connexion ne possède pas de valeur pour la clé, on la créée
|
26
25
|
@connexion.set(key, 1)
|
27
26
|
@connexion.expire(key, expire_in)
|
28
|
-
|
27
|
+
|
29
28
|
[true, 0]
|
30
29
|
elsif val.to_i < max
|
31
30
|
# si connexion possède la clé, on incrémente
|
@@ -36,4 +35,4 @@ module RailsLimiter::RailsLimiter
|
|
36
35
|
[false, @connexion.ttl(key)]
|
37
36
|
end
|
38
37
|
end
|
39
|
-
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_limiter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Séveno
|
8
|
+
- Jean-Philippe Lecaille
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2017-12-12 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rails
|
@@ -41,6 +42,7 @@ dependencies:
|
|
41
42
|
description: To limit the requests number of a user on an action's controller
|
42
43
|
email:
|
43
44
|
- jseveno@gmail.com
|
45
|
+
- jplecaille@gmail.com
|
44
46
|
executables: []
|
45
47
|
extensions: []
|
46
48
|
extra_rdoc_files: []
|
@@ -86,7 +88,6 @@ files:
|
|
86
88
|
- test/dummy/config/locales/en.yml
|
87
89
|
- test/dummy/config/routes.rb
|
88
90
|
- test/dummy/db/test.sqlite3
|
89
|
-
- test/dummy/log/test.log
|
90
91
|
- test/dummy/public/404.html
|
91
92
|
- test/dummy/public/422.html
|
92
93
|
- test/dummy/public/500.html
|
@@ -94,16 +95,6 @@ files:
|
|
94
95
|
- test/dummy/script/rails
|
95
96
|
- test/dummy/test/functional/test_controller_test.rb
|
96
97
|
- test/dummy/test/unit/helpers/test_helper_test.rb
|
97
|
-
- test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
|
98
|
-
- test/dummy/tmp/cache/assets/test/sprockets/293460f7bea2aea456231b769212f36f
|
99
|
-
- test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
|
100
|
-
- test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
|
101
|
-
- test/dummy/tmp/cache/assets/test/sprockets/5daa64d9601a1dd14726112003d08364
|
102
|
-
- test/dummy/tmp/cache/assets/test/sprockets/b45890d98668c132fee5cae4b15320d9
|
103
|
-
- test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
104
|
-
- test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
105
|
-
- test/dummy/tmp/cache/assets/test/sprockets/daa0e3c217673cb0ebb89d97438a1b80
|
106
|
-
- test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
107
98
|
- test/rails_limiter_test.rb
|
108
99
|
- test/test_helper.rb
|
109
100
|
homepage: https://github.com/idolweb/rails_limiter
|
@@ -126,59 +117,48 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
117
|
version: '0'
|
127
118
|
requirements: []
|
128
119
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
120
|
+
rubygems_version: 2.6.14
|
130
121
|
signing_key:
|
131
122
|
specification_version: 4
|
132
123
|
summary: To limit the requests number of a user on an action's controller
|
133
124
|
test_files:
|
134
|
-
- test/dummy/app/assets/javascripts/application.js
|
135
|
-
- test/dummy/app/assets/javascripts/test.js
|
136
|
-
- test/dummy/app/assets/stylesheets/application.css
|
137
|
-
- test/dummy/app/assets/stylesheets/test.css
|
138
125
|
- test/dummy/app/controllers/application_controller.rb
|
139
126
|
- test/dummy/app/controllers/test_controller.rb
|
140
|
-
- test/dummy/app/helpers/application_helper.rb
|
141
|
-
- test/dummy/app/helpers/test_helper.rb
|
142
|
-
- test/dummy/app/views/layouts/application.html.erb
|
143
127
|
- test/dummy/app/views/test/index.html.erb
|
144
128
|
- test/dummy/app/views/test/redirect.html.erb
|
145
|
-
- test/dummy/
|
146
|
-
- test/dummy/
|
147
|
-
- test/dummy/
|
148
|
-
- test/dummy/
|
149
|
-
- test/dummy/
|
129
|
+
- test/dummy/app/views/layouts/application.html.erb
|
130
|
+
- test/dummy/app/assets/javascripts/test.js
|
131
|
+
- test/dummy/app/assets/javascripts/application.js
|
132
|
+
- test/dummy/app/assets/stylesheets/application.css
|
133
|
+
- test/dummy/app/assets/stylesheets/test.css
|
134
|
+
- test/dummy/app/helpers/test_helper.rb
|
135
|
+
- test/dummy/app/helpers/application_helper.rb
|
136
|
+
- test/dummy/test/unit/helpers/test_helper_test.rb
|
137
|
+
- test/dummy/test/functional/test_controller_test.rb
|
138
|
+
- test/dummy/config/routes.rb
|
139
|
+
- test/dummy/config/locales/en.yml
|
150
140
|
- test/dummy/config/environments/production.rb
|
141
|
+
- test/dummy/config/environments/development.rb
|
151
142
|
- test/dummy/config/environments/test.rb
|
143
|
+
- test/dummy/config/environment.rb
|
144
|
+
- test/dummy/config/application.rb
|
145
|
+
- test/dummy/config/database.yml
|
146
|
+
- test/dummy/config/boot.rb
|
152
147
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
153
|
-
- test/dummy/config/initializers/inflections.rb
|
154
148
|
- test/dummy/config/initializers/mime_types.rb
|
155
|
-
- test/dummy/config/initializers/rails_limiter.rb
|
156
|
-
- test/dummy/config/initializers/secret_token.rb
|
157
149
|
- test/dummy/config/initializers/session_store.rb
|
158
150
|
- test/dummy/config/initializers/wrap_parameters.rb
|
159
|
-
- test/dummy/config/
|
160
|
-
- test/dummy/config/
|
151
|
+
- test/dummy/config/initializers/rails_limiter.rb
|
152
|
+
- test/dummy/config/initializers/secret_token.rb
|
153
|
+
- test/dummy/config/initializers/inflections.rb
|
161
154
|
- test/dummy/config.ru
|
162
|
-
- test/dummy/
|
163
|
-
- test/dummy/
|
164
|
-
- test/dummy/public/
|
155
|
+
- test/dummy/script/rails
|
156
|
+
- test/dummy/Rakefile
|
157
|
+
- test/dummy/public/favicon.ico
|
165
158
|
- test/dummy/public/422.html
|
166
159
|
- test/dummy/public/500.html
|
167
|
-
- test/dummy/public/
|
168
|
-
- test/dummy/
|
160
|
+
- test/dummy/public/404.html
|
161
|
+
- test/dummy/db/test.sqlite3
|
169
162
|
- test/dummy/README.rdoc
|
170
|
-
- test/dummy/script/rails
|
171
|
-
- test/dummy/test/functional/test_controller_test.rb
|
172
|
-
- test/dummy/test/unit/helpers/test_helper_test.rb
|
173
|
-
- test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
|
174
|
-
- test/dummy/tmp/cache/assets/test/sprockets/293460f7bea2aea456231b769212f36f
|
175
|
-
- test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
|
176
|
-
- test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
|
177
|
-
- test/dummy/tmp/cache/assets/test/sprockets/5daa64d9601a1dd14726112003d08364
|
178
|
-
- test/dummy/tmp/cache/assets/test/sprockets/b45890d98668c132fee5cae4b15320d9
|
179
|
-
- test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
180
|
-
- test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
181
|
-
- test/dummy/tmp/cache/assets/test/sprockets/daa0e3c217673cb0ebb89d97438a1b80
|
182
|
-
- test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
183
|
-
- test/rails_limiter_test.rb
|
184
163
|
- test/test_helper.rb
|
164
|
+
- test/rails_limiter_test.rb
|
data/test/dummy/log/test.log
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
2
|
-
-----------------------------------------------------------------
|
3
|
-
TestControllerTest: test_can_access_to_index_until_max_is_reached
|
4
|
-
-----------------------------------------------------------------
|
5
|
-
Processing by TestController#index as HTML
|
6
|
-
Rendered test/index.html.erb within layouts/application (0.5ms)
|
7
|
-
Completed 200 OK in 26ms (Views: 25.4ms | ActiveRecord: 0.0ms)
|
8
|
-
Processing by TestController#index as HTML
|
9
|
-
Rendered test/index.html.erb within layouts/application (0.1ms)
|
10
|
-
Completed 200 OK in 1ms (Views: 0.8ms | ActiveRecord: 0.0ms)
|
11
|
-
Processing by TestController#index as HTML
|
12
|
-
Redirected to http://test.host/test/redirect
|
13
|
-
Filter chain halted as #<Proc:0x007f92e3b13d48@/Users/jplecaille/Documents/Developpement/rails_limiter/test/dummy/app/controllers/test_controller.rb:2> rendered or redirected
|
14
|
-
Completed 302 Found in 1ms (Views: 0.8ms | ActiveRecord: 0.0ms)
|
15
|
-
[1m[35m (0.1ms)[0m rollback transaction
|
16
|
-
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
17
|
-
----------------------------
|
18
|
-
RailsLimiterTest: test_truth
|
19
|
-
----------------------------
|
20
|
-
[1m[35m (0.0ms)[0m rollback transaction
|
21
|
-
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
22
|
-
-----------------------------------------------------------------
|
23
|
-
TestControllerTest: test_can_access_to_index_until_max_is_reached
|
24
|
-
-----------------------------------------------------------------
|
25
|
-
Processing by TestController#index as HTML
|
26
|
-
Rendered test/index.html.erb within layouts/application (0.6ms)
|
27
|
-
Completed 200 OK in 19ms (Views: 18.5ms | ActiveRecord: 0.0ms)
|
28
|
-
Processing by TestController#index as HTML
|
29
|
-
Rendered test/index.html.erb within layouts/application (0.0ms)
|
30
|
-
Completed 200 OK in 1ms (Views: 0.7ms | ActiveRecord: 0.0ms)
|
31
|
-
Processing by TestController#index as HTML
|
32
|
-
Redirected to http://test.host/test/redirect
|
33
|
-
Filter chain halted as #<Proc:0x007fbc014bb7b0@/Users/jplecaille/Documents/Developpement/rails_limiter/test/dummy/app/controllers/test_controller.rb:2> rendered or redirected
|
34
|
-
Completed 302 Found in 1ms (Views: 0.7ms | ActiveRecord: 0.0ms)
|
35
|
-
[1m[35m (0.1ms)[0m rollback transaction
|
36
|
-
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
37
|
-
----------------------------
|
38
|
-
RailsLimiterTest: test_truth
|
39
|
-
----------------------------
|
40
|
-
[1m[35m (0.0ms)[0m rollback transaction
|
41
|
-
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
42
|
-
-----------------------------------------------------------------
|
43
|
-
TestControllerTest: test_can_access_to_index_until_max_is_reached
|
44
|
-
-----------------------------------------------------------------
|
45
|
-
Processing by TestController#index as HTML
|
46
|
-
Rendered test/index.html.erb within layouts/application (0.6ms)
|
47
|
-
Completed 200 OK in 14ms (Views: 13.4ms | ActiveRecord: 0.0ms)
|
48
|
-
Processing by TestController#index as HTML
|
49
|
-
Rendered test/index.html.erb within layouts/application (0.0ms)
|
50
|
-
Completed 200 OK in 1ms (Views: 0.7ms | ActiveRecord: 0.0ms)
|
51
|
-
Processing by TestController#index as HTML
|
52
|
-
Redirected to http://test.host/test/redirect
|
53
|
-
Filter chain halted as #<Proc:0x007f7fe5a07b40@/Users/jplecaille/Documents/Developpement/rails_limiter/test/dummy/app/controllers/test_controller.rb:2> rendered or redirected
|
54
|
-
Completed 302 Found in 1ms (Views: 0.7ms | ActiveRecord: 0.0ms)
|
55
|
-
[1m[35m (0.1ms)[0m rollback transaction
|
56
|
-
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
57
|
-
----------------------------
|
58
|
-
RailsLimiterTest: test_truth
|
59
|
-
----------------------------
|
60
|
-
[1m[35m (0.0ms)[0m rollback transaction
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|