acts_as_textcaptcha 4.6.0 → 4.7.1

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: 7cd97fc4b0edc1a595beef3a1e871ff8b5937e6edfdea0dfa03ca530d691b326
4
- data.tar.gz: 8336141cfe3f343e3947bf535c1c272780e5fde2cef8aae361b744eaa742fc42
3
+ metadata.gz: 3f1a973275365e17fdda4a90bbf9469abcbc818b81ed3f37c30b090cabff938f
4
+ data.tar.gz: 115dabb78d67d6d0edd548c10ede333ddeb24f859b7cd5726944fe0d8c4bf218
5
5
  SHA512:
6
- metadata.gz: cd6b5ac95853b10106180ba45b8ec003470479f099908f79d3aede8143df3026eaa331668605ab64f74cee152f4a6eefe9d169df450b7a8c1ead66a0152f2df0
7
- data.tar.gz: 65a7bb0302f22b8d583a918002b5fe1c6b2ffaa5ad68ddbb8df1dbc0cde1a549cf007326cad0e6ae6b4c97ded7a9b28b4d9ced4f5afcea10596013fb51aacac3
6
+ metadata.gz: 9846e9e86ae795b99f02891e5576defe6d126b9867439f70bfd6c03e4c271f8febb504516ad858ffe70281427afbdb255bc6377f3b2938d34566ed1363cf0291
7
+ data.tar.gz: 01c9936aad7214e93fff9f402bbd75437535626d6c39a87d0687a2d90c91a6153718bd179c1fc608ca29d0c49d0c2e4890479d6d6a72851bd60963c4060fae0b
data/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  ## ActAsTextcaptcha
2
2
 
3
+ [![CI](https://img.shields.io/github/actions/workflow/status/matthutchinson/acts_as_textcaptcha/ci.yml?branch=main&style=flat)](https://github.com/matthutchinson/acts_as_textcaptcha/actions/workflows/ci.yml)
3
4
  [![Gem](https://img.shields.io/gem/v/acts_as_textcaptcha.svg?style=flat)](http://rubygems.org/gems/acts_as_textcaptcha)
4
- [![Travis](https://img.shields.io/travis/com/matthutchinson/acts_as_textcaptcha/master.svg?style=flat)](https://travis-ci.com/matthutchinson/acts_as_textcaptcha)
5
5
  [![Depfu](https://img.shields.io/depfu/matthutchinson/acts_as_textcaptcha.svg?style=flat)](https://depfu.com/github/matthutchinson/acts_as_textcaptcha)
6
- [![Maintainability](https://api.codeclimate.com/v1/badges/c67969dd7b921477bdcc/maintainability)](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/maintainability)
7
- [![Test Coverage](https://api.codeclimate.com/v1/badges/c67969dd7b921477bdcc/test_coverage)](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/test_coverage)
8
6
 
9
7
  ActsAsTextcaptcha provides spam protection for Rails models with text-based
10
8
  logic question captchas. Questions are fetched from [Rob
@@ -18,16 +16,13 @@ are a good idea visit [textcaptcha.com](https://textcaptcha.com).
18
16
 
19
17
  ## Requirements
20
18
 
21
- * [Ruby](http://ruby-lang.org/) >= 2.5
22
- * [Rails](http://github.com/rails/rails) >= 4
19
+ * [Ruby](http://ruby-lang.org/) >= 3.1
20
+ * [Rails](http://github.com/rails/rails) >= 6.1
23
21
  * A valid [Rails.cache](http://guides.rubyonrails.org/caching_with_rails.html#cache-stores) (not `:null_store`)
24
22
 
25
23
  ## Demo
26
24
 
27
- Try a [working demo here](https://acts-as-textcaptcha-demo.herokuapp.com)!
28
- Or one-click deploy your own [demo app](https://github.com/matthutchinson/acts_as_textcaptcha_demo) to Heroku.
29
-
30
- [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://www.heroku.com/deploy?template=https://github.com/matthutchinson/acts_as_textcaptcha_demo/tree/master)
25
+ Try a [working demo here](https://acts-as-textcaptcha.hiddenloop.dev)!
31
26
 
32
27
  ## Installation
33
28
 
@@ -210,8 +205,7 @@ The API may be unresponsive or return an unexpected response. If you've set
210
205
  ## Development
211
206
 
212
207
  Check out this repo and run `bin/setup`, this will install gem dependencies and
213
- generate docs. Use `bundle exec rake` to run tests and generate a coverage
214
- report.
208
+ generate docs. Use `bundle exec rake` to run tests.
215
209
 
216
210
  You can also run `bin/console` for an interactive prompt to experiment with the
217
211
  code.
@@ -245,9 +239,7 @@ remember to check it hasn't already been raised.
245
239
  Bug [reports](https://github.com/matthutchinson/acts_as_textcaptcha/issues) and
246
240
  [pull requests](https://github.com/matthutchinson/acts_as_textcaptcha/pulls) are
247
241
  welcome on GitHub. When submitting pull requests, remember to add tests covering
248
- any new behaviour, and ensure all tests are passing on
249
- [Travis](https://travis-ci.com/matthutchinson/acts_as_textcaptcha). Read the
250
- [contributing
242
+ any new behaviour, and ensure all tests are passing. Read the [contributing
251
243
  guidelines](https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/CONTRIBUTING.md)
252
244
  for more details.
253
245
 
@@ -257,10 +249,11 @@ Covenant](http://contributor-covenant.org) code of conduct. See
257
249
  [here](https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/CODE_OF_CONDUCT.md)
258
250
  for more details.
259
251
 
260
- ## Todo
252
+ ## Ideas
261
253
 
254
+ * Check if AI models can beat this approach
262
255
  * Allow translatable user supplied questions and answers in config
263
- * Allow `Net::HTTP` to be swapped out for any another HTTP client.
256
+ * Allow `Net::HTTP` to be swapped out for any HTTP client.
264
257
 
265
258
  ## License
266
259
 
@@ -274,10 +267,8 @@ The code is available as open source under the terms of
274
267
 
275
268
  ## Links
276
269
 
277
- * [Demo](https://acts-as-textcaptcha-demo.herokuapp.com)
278
- * [Travis CI](http://travis-ci.com/matthutchinson/acts_as_textcaptcha)
279
- * [Maintainability](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/maintainability)
280
- * [Test Coverage](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/test_coverage)
270
+ * [CI](https://github.com/matthutchinson/acts_as_textcaptcha/actions/workflows/ci.yml)
271
+ * [Demo](https://acts-as-textcaptcha.hiddenloop.dev)
281
272
  * [RDoc](http://rdoc.info/projects/matthutchinson/acts_as_textcaptcha)
282
273
  * [Wiki](http://wiki.github.com/matthutchinson/acts_as_textcaptcha/)
283
274
  * [Issues](http://github.com/matthutchinson/acts_as_textcaptcha/issues)
@@ -0,0 +1,34 @@
1
+ development: &common_settings
2
+ api_key: 'TEXTCAPTCHA_API_IDENT' # see https://textcaptcha.com for details
3
+ # api_endpoint: nil # Optional API URL to fetch questions and answers from
4
+ # raise_errors: false # Optional flag, if true errors will be raised if the API endpoint fails
5
+ # cache_expiry_minutes: 10 # Optional minutes for captcha answers to persist in the cache (default 10 minutes)
6
+
7
+ questions:
8
+ - question: 'Is ice hot or cold?'
9
+ answers: 'cold'
10
+ - question: 'what color is an orange?'
11
+ answers: 'orange'
12
+ - question: 'what is two plus 3?'
13
+ answers: '5,five'
14
+ - question: 'what is 5 times two?'
15
+ answers: '10,ten'
16
+ - question: 'How many colors in the list, green, brown, foot and blue?'
17
+ answers: '3,three'
18
+ - question: 'what is Georges name?'
19
+ answers: 'george'
20
+ - question: '11 minus 1?'
21
+ answers: '10,ten'
22
+ - question: 'is boiling water hot or cold?'
23
+ answers: 'hot'
24
+ - question: 'what color is my blue shirt today?'
25
+ answers: 'blue'
26
+ - question: 'what is 16 plus 4?'
27
+ answers: '20,twenty'
28
+
29
+ test:
30
+ <<: *common_settings
31
+ api_key: 'TEST_TEXTCAPTCHA_API_IDENT'
32
+
33
+ production:
34
+ <<: *common_settings
@@ -7,11 +7,8 @@ module ActsAsTextcaptcha
7
7
  BASE_URL = "http://textcaptcha.com"
8
8
 
9
9
  def initialize(api_key: nil, api_endpoint: nil, raise_errors: false)
10
- self.uri = if api_endpoint
11
- URI(api_endpoint)
12
- else
13
- URI("#{BASE_URL}/#{api_key}.json")
14
- end
10
+ self.uri = URI(api_endpoint || "#{BASE_URL}/#{api_key}.json")
11
+
15
12
  self.raise_errors = raise_errors || false
16
13
  rescue URI::InvalidURIError => e
17
14
  raise ApiKeyError.new(api_key, e)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActsAsTextcaptcha
4
- VERSION = "4.6.0"
4
+ VERSION = "4.7.1"
5
5
  end
metadata CHANGED
@@ -1,43 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_textcaptcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.0
4
+ version: 4.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Hutchinson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-14 00:00:00.000000000 Z
11
+ date: 2024-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: pry-byebug
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
13
  - !ruby/object:Gem::Dependency
42
14
  name: rake
43
15
  requirement: !ruby/object:Gem::Requirement
@@ -52,20 +24,6 @@ dependencies:
52
24
  - - ">="
53
25
  - !ruby/object:Gem::Version
54
26
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
27
  - !ruby/object:Gem::Dependency
70
28
  name: rdoc
71
29
  requirement: !ruby/object:Gem::Requirement
@@ -81,19 +39,19 @@ dependencies:
81
39
  - !ruby/object:Gem::Version
82
40
  version: '0'
83
41
  - !ruby/object:Gem::Dependency
84
- name: appraisal
42
+ name: rails
85
43
  requirement: !ruby/object:Gem::Requirement
86
44
  requirements:
87
- - - ">="
45
+ - - "~>"
88
46
  - !ruby/object:Gem::Version
89
- version: '0'
47
+ version: 8.0.1
90
48
  type: :development
91
49
  prerelease: false
92
50
  version_requirements: !ruby/object:Gem::Requirement
93
51
  requirements:
94
- - - ">="
52
+ - - "~>"
95
53
  - !ruby/object:Gem::Version
96
- version: '0'
54
+ version: 8.0.1
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: minitest
99
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,34 +66,6 @@ dependencies:
108
66
  - - ">="
109
67
  - !ruby/object:Gem::Version
110
68
  version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rails
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 7.0.2.2
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 7.0.2.2
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 0.19.1
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 0.19.1
139
69
  - !ruby/object:Gem::Dependency
140
70
  name: sqlite3
141
71
  requirement: !ruby/object:Gem::Requirement
@@ -177,27 +107,9 @@ extra_rdoc_files:
177
107
  - README.md
178
108
  - LICENSE
179
109
  files:
180
- - ".gitignore"
181
- - ".rubocop.yml"
182
- - ".simplecov"
183
- - ".travis.yml"
184
- - Appraisals
185
- - CHANGELOG.md
186
- - CODE_OF_CONDUCT.md
187
- - CONTRIBUTING.md
188
- - Gemfile
189
110
  - LICENSE
190
- - PULL_REQUEST_TEMPLATE.md
191
111
  - README.md
192
- - Rakefile
193
- - acts_as_textcaptcha.gemspec
194
- - bin/console
195
- - bin/setup
196
- - gemfiles/rails_3.gemfile
197
- - gemfiles/rails_4.gemfile
198
- - gemfiles/rails_5.gemfile
199
- - gemfiles/rails_6.gemfile
200
- - gemfiles/rails_7.gemfile
112
+ - config/textcaptcha.yml
201
113
  - lib/acts_as_textcaptcha.rb
202
114
  - lib/acts_as_textcaptcha/errors.rb
203
115
  - lib/acts_as_textcaptcha/framework/rails.rb
@@ -214,11 +126,10 @@ licenses:
214
126
  - MIT
215
127
  metadata:
216
128
  homepage_uri: https://github.com/matthutchinson/acts_as_textcaptcha
129
+ documentation_uri: https://rubydoc.info/gems/acts_as_textcaptcha
217
130
  changelog_uri: https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/CHANGELOG.md
218
- source_code_uri: https://github.com/matthutchinson/acts_as_textcaptcha
219
131
  bug_tracker_uri: https://github.com/matthutchinson/acts_as_textcaptcha/issues
220
132
  allowed_push_host: https://rubygems.org
221
- rubygems_mfa_required: 'true'
222
133
  post_install_message:
223
134
  rdoc_options:
224
135
  - "--title"
@@ -232,14 +143,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
232
143
  requirements:
233
144
  - - ">="
234
145
  - !ruby/object:Gem::Version
235
- version: '2.5'
146
+ version: '3.1'
236
147
  required_rubygems_version: !ruby/object:Gem::Requirement
237
148
  requirements:
238
149
  - - ">="
239
150
  - !ruby/object:Gem::Version
240
151
  version: '0'
241
152
  requirements: []
242
- rubygems_version: 3.3.3
153
+ rubygems_version: 3.5.22
243
154
  signing_key:
244
155
  specification_version: 4
245
156
  summary: A text-based logic question captcha for Rails
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /gemfiles/vendor/bundle
3
- /.yardoc
4
- /Gemfile.lock
5
- /_yardoc/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- /coverage/
11
- /config/
12
- *.gemfile.lock