nexaas-throttle 1.0.0 → 2.0.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: 239db002ccd08f97b093b62ac0769c8febb3781f
4
- data.tar.gz: dc712921f451ec379ffba1d71d5321dea329f592
3
+ metadata.gz: d04c7fa7e0cf23c2a2d1381c1eb971aea3d4cc89
4
+ data.tar.gz: fa011ca4b2fec123adc1f3efb834222634196c1f
5
5
  SHA512:
6
- metadata.gz: 04b82f2bddc6be8464287e23d6bd4eadee2382ceb6eb53a233b11696d280b14b89fdcf86b254b8a50109f5d9dcb340f183e460cda2658c8a9a603ebd073cf91b
7
- data.tar.gz: a1c58b5330e94c33fb306ade160ab3e36aca9f237d49a027a62cdb1d0f8bb30bbc1703d0baee7f18cdc56fd2e8c367e2a2d55f33fa98b3227033a7a77f0c84d4
6
+ metadata.gz: 474d0584b741c34e6a76a108d1d7a9f2b782d38e726e2a46d9fe599d6cf242c8cfff85dbe0d575ee11724f3daa0878f71568f354495bd6ccd3a38a33c9b83866
7
+ data.tar.gz: 8751747095078371f503f70c084146d575466b5bad8326c262857e18655ba19258b361d0deb27c21a4680abe0f3af944452c7a2060896b7f1412d93a9f4fa7c8
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.gem
2
2
  *.rbc
3
+ *.swp
3
4
  /.config
4
5
  /coverage/
5
6
  /InstalledFiles
data/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ ## v2.0
2
+ - The gem no longer checks if the request is made from an API client. See [#6](https://github.com/myfreecomm/nexaas-throttle/pull/6) for discussion.
3
+ ## v1.0
4
+ - Allow the configuration of user-agents to ignore when throttling. [#5](https://github.com/myfreecomm/nexaas-throttle/pull/5)
5
+ ### v0.1.0
6
+ - Initial commit
data/README.md CHANGED
@@ -94,7 +94,7 @@ end
94
94
  </tr>
95
95
  <tr>
96
96
  <td><code>ignored_user_agents</code></td>
97
- <td>Ignores how many User-Agent the application wants, in case of other applications from the same organization.</td>
97
+ <td>An array of User Agents that should be ignored by the throttler. Values are regexes that will be matched against the request User-Agent</td>
98
98
  <td><code>nil</code></td>
99
99
  </tr>
100
100
  </table>
@@ -104,6 +104,8 @@ end
104
104
  `Nexaas::Throttle` doesn't know how to identify a consumer. Some applications might rely on request IP, others on an API TOKEN. You must provide a way of getting an unique token
105
105
  that identify a request consumer.
106
106
 
107
+ If there is no token, the request will go through and won't be accounted for.
108
+
107
109
  `Nexaas::Throttle` do this by providing a configuration `request_identifier`, a class where your application would keep the logic that identifies a consumer. This class must have the following
108
110
  interface:
109
111
 
@@ -37,7 +37,8 @@ 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.
40
+ # An array of User Agents that should be ignored by the throttler.
41
+ # Values are regexes that will be matched against the request User-Agent.
41
42
  # Example: [/[Gg]oogle/, /Amazon/]
42
43
  # @return [Array]
43
44
  attr_accessor :ignored_user_agents
@@ -22,7 +22,7 @@ module Nexaas
22
22
  attr_reader :request, :token, :ignored_user_agents
23
23
 
24
24
  def validate
25
- return if ignore_user_agents? || assets? || !api? || token.blank?
25
+ return if ignore_user_agents? || assets? || token.blank?
26
26
  request.env["nexaas.token"] = token
27
27
  yield if block_given?
28
28
  end
@@ -32,11 +32,6 @@ module Nexaas
32
32
  path.match(/\/assets/).present? || path.match(extensions_regexp).present?
33
33
  end
34
34
 
35
- def api?
36
- content_type = (request.media_type || request.env["Content-Type"]).to_s
37
- %w(application/json application/xml).include?(content_type)
38
- end
39
-
40
35
  def extensions_regexp
41
36
  @assets_extensions ||= begin
42
37
  extensions = %w(css js png jpg gif)
@@ -1,5 +1,5 @@
1
1
  module Nexaas
2
2
  module Throttle
3
- VERSION = "1.0.0".freeze
3
+ VERSION = "2.0.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: 1.0.0
4
+ version: 2.0.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: 2017-04-12 00:00:00.000000000 Z
11
+ date: 2017-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -148,6 +148,7 @@ files:
148
148
  - ".rspec"
149
149
  - ".rubocop.yml"
150
150
  - ".travis.yml"
151
+ - CHANGELOG.md
151
152
  - Gemfile
152
153
  - LICENSE
153
154
  - README.md
@@ -182,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
183
  version: '0'
183
184
  requirements: []
184
185
  rubyforge_project:
185
- rubygems_version: 2.6.10
186
+ rubygems_version: 2.6.13
186
187
  signing_key:
187
188
  specification_version: 4
188
189
  summary: A tiny engine to allow throttling and blacklisting requests.