graph_attack 2.3.1 → 2.4.0

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
  SHA256:
3
- metadata.gz: bba106f336288a7576af88787f681758899e77b5a35297fa66b855d58bff3678
4
- data.tar.gz: c67dd2128bb5779c694de180c8518fc67c91cdd1e048448c420d00c910a2cc97
3
+ metadata.gz: 14073662874173af1e66adb16931c4e8817461c3f36a0ea341d75dbbafb39b1b
4
+ data.tar.gz: 58f889613e4ea79ce99b19b788ca837527192c85b0b212a77ce84b2355938720
5
5
  SHA512:
6
- metadata.gz: 73f2a6a48f8196c0c46a71aefb5d28c89a1a3aa3a024d9e65913388771dfd4cadcadcddcdce79d3022e82607cacd60f0f0533086cff2b69bd53bc212e2a26779
7
- data.tar.gz: 170bec4bf21761a476598de2166dbbfcb11cad9b403cc556a3e4d43f9411b0e2b694385f54ce3d9ac022c270d6c517b6b3ce0d7248c3ccb9c307e3986f1dfbf1
6
+ metadata.gz: 1e9652eb2b3ec822942e58ba9d351fabc5a913ee8c7d1b06cef5a5574b85aa40e9c8140618aedd8ca1f4a30cf2559a9426762e39e2af8918e6e9b1806bdd8101
7
+ data.tar.gz: f0488943c372fa9bf2d0c48dae7d942b17cafe24ff3a81121fc97e0bd75ffe5d222bf527477d5279e4bcb04e906f327ea1baa2ccefafd9b99cfc11ee57100f83
@@ -10,7 +10,7 @@ jobs:
10
10
  strategy:
11
11
  fail-fast: false
12
12
  matrix:
13
- ruby: ['2.7', '3.0', '3.1', '3.2', head]
13
+ ruby: ['3.0', '3.1', '3.2', '3.3', '3.4', head]
14
14
 
15
15
  services:
16
16
  redis:
data/.rubocop.yml CHANGED
@@ -1,4 +1,4 @@
1
- require:
1
+ plugins:
2
2
  - rubocop-rspec
3
3
  - rubocop-rake
4
4
 
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.3
1
+ 3.4.2
data/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
1
  unreleased
2
2
  ----------
3
3
 
4
+ v2.4.0
5
+ ------
6
+
7
+ Feature:
8
+ - Accept ConnectionPool instances as a Redis client.
9
+
10
+ Support:
11
+ - Drop Ruby 2.7 support.
12
+
4
13
  v2.3.1
5
14
  ------
6
15
 
@@ -28,6 +37,12 @@ v2.2.0
28
37
  Feature:
29
38
  - Skip throttling when rate limited field is nil (#19)
30
39
 
40
+ ⚠️ Possibly breaking change:
41
+ - If your app relied on `Redis.current`, please provide a `redis_client` option
42
+ explicitly, since
43
+ [`Redis.current` is deprecated](https://github.com/redis/redis-rb/commit/9745e22db65ac294be51ed393b584c0f8b72ae98)
44
+ and will be removed in Redis 5.
45
+
31
46
  v2.1.0
32
47
  ------
33
48
 
data/Gemfile CHANGED
@@ -6,3 +6,21 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
7
  # Specify your gem's dependencies in graph_attack.gemspec
8
8
  gemspec
9
+
10
+ # Development tasks runner.
11
+ gem 'rake'
12
+
13
+ # Testing framework.
14
+ gem 'rspec'
15
+
16
+ # CircleCI dependency to store spec results.
17
+ gem 'rspec_junit_formatter'
18
+
19
+ # Ruby code linter.
20
+ gem 'rubocop'
21
+
22
+ # RSpec extension for RuboCop.
23
+ gem 'rubocop-rspec'
24
+
25
+ # Rake extension for RuboCop
26
+ gem 'rubocop-rake'
data/README.md CHANGED
@@ -153,3 +153,7 @@ file for details.
153
153
 
154
154
  Hat tip to [Rack::Attack](https://github.com/kickstarter/rack-attack) for the
155
155
  the name.
156
+
157
+ Sponsored by [Cults](https://cults3d.com).
158
+
159
+ ![Cults. Logo](https://github.com/user-attachments/assets/3a51b90d-1033-4df5-a903-03668fc4b966)
data/graph_attack.gemspec CHANGED
@@ -30,25 +30,4 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  # A Redis-backed rate limiter.
32
32
  spec.add_dependency 'ratelimit', '>= 1.0.4'
33
-
34
- # Loads local dependencies.
35
- spec.add_development_dependency 'bundler', '~> 2.0'
36
-
37
- # Development tasks runner.
38
- spec.add_development_dependency 'rake', '~> 13.0'
39
-
40
- # Testing framework.
41
- spec.add_development_dependency 'rspec', '~> 3.0'
42
-
43
- # CircleCI dependency to store spec results.
44
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3'
45
-
46
- # Ruby code linter.
47
- spec.add_development_dependency 'rubocop', '~> 1.33.0'
48
-
49
- # RSpec extension for RuboCop.
50
- spec.add_development_dependency 'rubocop-rspec', '~> 2.12.1'
51
-
52
- # Rake extension for RuboCop
53
- spec.add_development_dependency 'rubocop-rake', '~> 0.6.0'
54
33
  end
@@ -25,10 +25,11 @@ module GraphAttack
25
25
  end
26
26
 
27
27
  def calls_exceeded_on_query?(rate_limited_field)
28
- rate_limit = Ratelimit.new(rate_limited_field, redis: redis_client)
29
- rate_limit.add(key)
30
-
31
- rate_limit.exceeded?(key, threshold: threshold, interval: interval)
28
+ with_redis_client do |redis_client|
29
+ rate_limit = Ratelimit.new(rate_limited_field, redis: redis_client)
30
+ rate_limit.add(key)
31
+ rate_limit.exceeded?(key, threshold: threshold, interval: interval)
32
+ end
32
33
  end
33
34
 
34
35
  def threshold
@@ -49,8 +50,13 @@ module GraphAttack
49
50
  )
50
51
  end
51
52
 
52
- def redis_client
53
- options[:redis_client] || GraphAttack.configuration.redis_client
53
+ def with_redis_client(&block)
54
+ client = options[:redis_client] || GraphAttack.configuration.redis_client
55
+ if client.respond_to?(:then)
56
+ client.then(&block)
57
+ else
58
+ block.call(client)
59
+ end
54
60
  end
55
61
 
56
62
  def on
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GraphAttack
4
- VERSION = '2.3.1'
4
+ VERSION = '2.4.0'
5
5
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graph_attack
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fanny Cheung
8
8
  - Sunny Ripert
9
- autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2023-03-06 00:00:00.000000000 Z
11
+ date: 2025-03-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: graphql
@@ -39,104 +38,6 @@ dependencies:
39
38
  - - ">="
40
39
  - !ruby/object:Gem::Version
41
40
  version: 1.0.4
42
- - !ruby/object:Gem::Dependency
43
- name: bundler
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: '2.0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: '2.0'
56
- - !ruby/object:Gem::Dependency
57
- name: rake
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '13.0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '13.0'
70
- - !ruby/object:Gem::Dependency
71
- name: rspec
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '3.0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '3.0'
84
- - !ruby/object:Gem::Dependency
85
- name: rspec_junit_formatter
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '0.3'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '0.3'
98
- - !ruby/object:Gem::Dependency
99
- name: rubocop
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: 1.33.0
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: 1.33.0
112
- - !ruby/object:Gem::Dependency
113
- name: rubocop-rspec
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: 2.12.1
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: 2.12.1
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop-rake
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: 0.6.0
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: 0.6.0
140
41
  description: GraphQL analyser for blocking & throttling
141
42
  email:
142
43
  - fanny@ynote.hk
@@ -175,7 +76,6 @@ homepage: https://github.com/sunny/graph_attack
175
76
  licenses: []
176
77
  metadata:
177
78
  rubygems_mfa_required: 'true'
178
- post_install_message:
179
79
  rdoc_options: []
180
80
  require_paths:
181
81
  - lib
@@ -190,8 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
90
  - !ruby/object:Gem::Version
191
91
  version: '0'
192
92
  requirements: []
193
- rubygems_version: 3.3.26
194
- signing_key:
93
+ rubygems_version: 3.6.2
195
94
  specification_version: 4
196
95
  summary: GraphQL analyser for blocking & throttling
197
96
  test_files: []