nexaas-throttle 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cb1900d065141e8dc4b5384ff4b10c21dfdf043
4
- data.tar.gz: 618e61a05861dadcd008de417c9dc2e849db9184
3
+ metadata.gz: f56136a362918eb1468dbe7e0ba6b51c3f74c047
4
+ data.tar.gz: 3a5c43b886faa83d35cbd1501a5367d6a9da1d3f
5
5
  SHA512:
6
- metadata.gz: 97f5de60d31737b5ac144e9142933cc85717b4fc643ef8face97a2cc6c25245aec597f3a9483eac0705c4b032791dc1c5617200737d45946ec52bd1bb5fed11c
7
- data.tar.gz: 1f2227b57f27d51ba9c2085a9f581a4bbe70b09b8b61ac7fff20e12878c95a46d17346dc989748592020a63aad444ea1999abdf53f6adab787ceb53f3ab93a29
6
+ metadata.gz: 4c5fe3080a4613d73281f30a45e26520b3de6f36c2944fa1ae196333c8407ccd7754f65d2ffa4812792bcaa6767f2ba77451fe26a7cefd70ba61d5de99742d0e
7
+ data.tar.gz: 5d815288a6a313a0f2e1c585bcf073e5b12d3ff863c770eda71d0c7695e945ae848858665a34b0cdc6948a8e4e54233803941451a0ee174812ece2cf4117da91
data/README.md CHANGED
@@ -91,6 +91,11 @@ end
91
91
  </pre>
92
92
  </td>
93
93
  </tr>
94
+ <tr>
95
+ <td><code>ignored_user_agents</code></td>
96
+ <td>Ignores how many User-Agent the application wants, in case of other applications from the same organization.</td>
97
+ <td><code>nil</code></td>
98
+ </tr>
94
99
  </table>
95
100
 
96
101
  ### Request Identification
@@ -145,4 +150,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/myfree
145
150
  ## License
146
151
 
147
152
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
148
-
@@ -37,6 +37,11 @@ module Nexaas
37
37
  # @return [Hash]
38
38
  attr_reader :redis_options
39
39
 
40
+ # Ignores how many User-Agent the application wants, in case of other applications from the same organization.
41
+ # Example: ["Google", "Amazons"]
42
+ # @return [Array]
43
+ attr_accessor :ignored_user_agents
44
+
40
45
  alias_method :throttleable?, :throttle
41
46
  alias_method :trackable?, :track
42
47
 
@@ -47,6 +52,7 @@ module Nexaas
47
52
  @limit = 60
48
53
  @request_identifier = nil
49
54
  @redis_options = default_redis_options
55
+ @ignored_user_agents = nil
50
56
  end
51
57
 
52
58
  def check!
@@ -3,9 +3,10 @@ require "base64"
3
3
  module Nexaas
4
4
  module Throttle
5
5
  class Guardian
6
- def initialize(request, request_identifier)
6
+ def initialize(request, configuration)
7
7
  @request = request
8
- @token = request_identifier.new(request).token
8
+ @token = configuration.request_identifier.new(request).token
9
+ @ignored_user_agents = configuration.ignored_user_agents
9
10
  end
10
11
 
11
12
  def throttle!
@@ -18,10 +19,10 @@ module Nexaas
18
19
 
19
20
  private
20
21
 
21
- attr_reader :request, :token
22
+ attr_reader :request, :token, :ignored_user_agents
22
23
 
23
24
  def validate
24
- return if assets? || !api? || token.blank?
25
+ return if ignore_user_agents? || assets? || !api? || token.blank?
25
26
  request.env["nexaas.token"] = token
26
27
  yield if block_given?
27
28
  end
@@ -42,6 +43,10 @@ module Nexaas
42
43
  /\.(#{extensions.join("|")})/
43
44
  end
44
45
  end
46
+
47
+ def ignore_user_agents?
48
+ ignored_user_agents && ignored_user_agents.include?(request.user_agent)
49
+ end
45
50
  end
46
51
  end
47
52
  end
@@ -8,7 +8,7 @@ module Rack
8
8
  end
9
9
 
10
10
  def self.guardian(request)
11
- Nexaas::Throttle::Guardian.new(request, configuration.request_identifier)
11
+ Nexaas::Throttle::Guardian.new(request, configuration)
12
12
  end
13
13
 
14
14
  def self.throttled?(req)
@@ -1,5 +1,5 @@
1
1
  module Nexaas
2
2
  module Throttle
3
- VERSION = "0.1.0".freeze
3
+ VERSION = "0.2.0".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexaas-throttle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wanderson Policarpo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-27 00:00:00.000000000 Z
11
+ date: 2017-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  version: '0'
183
183
  requirements: []
184
184
  rubyforge_project:
185
- rubygems_version: 2.5.1
185
+ rubygems_version: 2.5.2
186
186
  signing_key:
187
187
  specification_version: 4
188
188
  summary: A tiny engine to allow throttling and blacklisting requests.