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