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 +4 -4
- data/.github/workflows/test.yml +1 -1
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +15 -0
- data/Gemfile +18 -0
- data/README.md +4 -0
- data/graph_attack.gemspec +0 -21
- data/lib/graph_attack/rate_limit.rb +12 -6
- data/lib/graph_attack/version.rb +1 -1
- metadata +3 -104
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14073662874173af1e66adb16931c4e8817461c3f36a0ea341d75dbbafb39b1b
|
4
|
+
data.tar.gz: 58f889613e4ea79ce99b19b788ca837527192c85b0b212a77ce84b2355938720
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e9652eb2b3ec822942e58ba9d351fabc5a913ee8c7d1b06cef5a5574b85aa40e9c8140618aedd8ca1f4a30cf2559a9426762e39e2af8918e6e9b1806bdd8101
|
7
|
+
data.tar.gz: f0488943c372fa9bf2d0c48dae7d942b17cafe24ff3a81121fc97e0bd75ffe5d222bf527477d5279e4bcb04e906f327ea1baa2ccefafd9b99cfc11ee57100f83
|
data/.github/workflows/test.yml
CHANGED
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
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
|
+

|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
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
|
data/lib/graph_attack/version.rb
CHANGED
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.
|
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:
|
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.
|
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: []
|