simple_captcha_audio 0.0.1 → 0.0.2
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/.rspec +2 -0
- data/CHANGELOG.md +3 -0
- data/README.md +7 -0
- data/lib/simple_captcha_audio/middleware.rb +29 -0
- data/lib/simple_captcha_audio/version.rb +1 -1
- data/lib/simple_captcha_audio/view.rb +10 -4
- data/simple_captcha_audio.gemspec +1 -0
- data/spec/audio_helpers_spec.rb +21 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/view_spec.rb +39 -0
- metadata +26 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 744b496bf6cb86d9fd89c876dacfe09800b6a50a
|
4
|
+
data.tar.gz: e32903dd4e9cbfa57137d8fad0f35d953ffcd5bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee4426266380ee3a939ad761aa684169dc44efd4a6365ee507b2c91b03653522a0f005318aa160f8ddd09a025de58baba18fd42a1c4e520a0655b8b710f1300c
|
7
|
+
data.tar.gz: 241441124d0eb64f258df1a0f5e54c9fbdd32424fafb46479a5c12cad0e78f2f093b40308a3fd9b99d6e8b57cb2dd52a989bb6dd049115b03c940a031324148a
|
data/.rspec
ADDED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -40,6 +40,13 @@ brew install espeak lame
|
|
40
40
|
brew install flac sox chromaprint
|
41
41
|
```
|
42
42
|
|
43
|
+
On ubuntu system
|
44
|
+
|
45
|
+
```
|
46
|
+
apt-get install espeak lame
|
47
|
+
apt-get install libsox-fmt-all sox libchromaprint-dev
|
48
|
+
```
|
49
|
+
|
43
50
|
## Contributing
|
44
51
|
|
45
52
|
1. Fork it ( https://github.com/[my-github-username]/simple_captcha_audio/fork )
|
@@ -35,5 +35,34 @@ module SimpleCaptcha
|
|
35
35
|
[status, headers, body]
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
def refresh_code(env)
|
40
|
+
request = Rack::Request.new(env)
|
41
|
+
|
42
|
+
request.session.delete :captcha
|
43
|
+
key = simple_captcha_key(nil, request)
|
44
|
+
options = {}
|
45
|
+
options[:field_value] = set_simple_captcha_data(key, options)
|
46
|
+
url = simple_captcha_image_url(key, options)
|
47
|
+
|
48
|
+
status = 200
|
49
|
+
id = request.params['id']
|
50
|
+
captcha_hidden_field_id = simple_captch_hidden_field_id(id)
|
51
|
+
|
52
|
+
audio_id = generate_audio_id(id)
|
53
|
+
audio_url = simple_captcha_audio_url(key, options)
|
54
|
+
|
55
|
+
body = %Q{
|
56
|
+
$("##{id}").attr('src', '#{url}');
|
57
|
+
$("##{audio_id}").attr('src', '#{audio_url}')
|
58
|
+
$("##{ captcha_hidden_field_id }").attr('value', '#{key}');
|
59
|
+
}
|
60
|
+
headers = {'Content-Type' => 'text/javascript; charset=utf-8', "Content-Disposition" => "inline; filename='captcha.js'", "Content-Length" => body.length.to_s}.merge(SimpleCaptcha.extra_response_headers)
|
61
|
+
[status, headers, [body]]
|
62
|
+
end
|
63
|
+
|
64
|
+
def generate_audio_id(id)
|
65
|
+
id.gsub('simple_captcha', simple_captcha_id_prefix)
|
66
|
+
end
|
38
67
|
end
|
39
68
|
end
|
@@ -4,9 +4,11 @@ module SimpleCaptcha
|
|
4
4
|
alias_method :__simple_captcha_options__, :simple_captcha_options
|
5
5
|
|
6
6
|
def simple_captcha_options(options = {})
|
7
|
-
|
7
|
+
super_options = __simple_captcha_options__(options)
|
8
8
|
|
9
|
-
|
9
|
+
key = super_options[:field_value]
|
10
|
+
|
11
|
+
super_options.merge({
|
10
12
|
audio: simple_captcha_audio(key, options)
|
11
13
|
})
|
12
14
|
end
|
@@ -15,7 +17,7 @@ module SimpleCaptcha
|
|
15
17
|
def simple_captcha_audio(simple_captcha_key, options = {})
|
16
18
|
url = simple_captcha_audio_url simple_captcha_key, options: options
|
17
19
|
id = simple_captcha_audio_id(options)
|
18
|
-
tag('audio', :src => url, :id => id)
|
20
|
+
tag('audio', :src => url, :id => id, controls: true)
|
19
21
|
end
|
20
22
|
|
21
23
|
def simple_captcha_audio_url(simple_captcha_key, options = {})
|
@@ -28,7 +30,11 @@ module SimpleCaptcha
|
|
28
30
|
end
|
29
31
|
|
30
32
|
def simple_captcha_audio_id(options={})
|
31
|
-
"
|
33
|
+
"#{ simple_captcha_id_prefix }-#{options[:field_value][0..10]}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def simple_captcha_id_prefix
|
37
|
+
"simple_captcha-audio"
|
32
38
|
end
|
33
39
|
end
|
34
40
|
end
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", '~> 1.6'
|
22
22
|
spec.add_development_dependency "rake", '~> 10.0'
|
23
|
+
spec.add_development_dependency "rspec", '~> 3.3.0'
|
23
24
|
spec.add_dependency "simple_captcha2", '~> 0.3.4'
|
24
25
|
spec.add_dependency "espeak-ruby", '~> 1.0.2'
|
25
26
|
spec.add_dependency "ruby-sox", '~> 0.0.3'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'simple_captcha/utils'
|
3
|
+
require 'simple_captcha_audio/audio_helpers'
|
4
|
+
|
5
|
+
class TestAudioHelper
|
6
|
+
include SimpleCaptcha::AudioHelpers
|
7
|
+
end
|
8
|
+
|
9
|
+
describe SimpleCaptcha::AudioHelpers do
|
10
|
+
let(:audio_helper_object) { TestAudioHelper.new }
|
11
|
+
|
12
|
+
context 'Constants' do
|
13
|
+
it { expect(SimpleCaptcha::AudioHelpers::TMP_FILES_PATH).to eq 'tmp/simple_captcha' }
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'Instance Methods' do
|
17
|
+
context '#generate_simple_captcha_audio' do
|
18
|
+
pending 'TODO: Write without too much mocks and stubs.'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
data/spec/view_spec.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'active_support/core_ext/hash'
|
3
|
+
require 'action_view'
|
4
|
+
require 'simple_captcha/view'
|
5
|
+
require 'simple_captcha_audio'
|
6
|
+
|
7
|
+
class TestView < ActionView::Base
|
8
|
+
include SimpleCaptcha::ViewHelper
|
9
|
+
end
|
10
|
+
|
11
|
+
describe SimpleCaptcha::ViewHelper do
|
12
|
+
let(:view_helper_object) { TestView.new }
|
13
|
+
let(:field_value) { '1234567890' }
|
14
|
+
let(:now) { Time.now.to_i }
|
15
|
+
|
16
|
+
context 'Instance Methods' do
|
17
|
+
context 'simple_captcha_options' do
|
18
|
+
before { expect(view_helper_object).to receive(:__simple_captcha_options__).and_return({}) }
|
19
|
+
it { expect(view_helper_object.simple_captcha_options(field_value: field_value).keys).to include :audio }
|
20
|
+
it { expect(view_helper_object.simple_captcha_options(field_value: field_value)[:audio]).to eq "<audio src=\"/simple_captcha?code=&time=#{now}&audio=true\" id=\"simple_captcha-audio-#{ field_value }\" controls=\"controls\" />" }
|
21
|
+
end
|
22
|
+
|
23
|
+
context '#simple_captcha_audio_id' do
|
24
|
+
it { expect(view_helper_object.send(:simple_captcha_audio_id, field_value: field_value)).to eq "simple_captcha-audio-#{ field_value }" }
|
25
|
+
end
|
26
|
+
|
27
|
+
context '#simple_captcha_id_prefix' do
|
28
|
+
it { expect(view_helper_object.send(:simple_captcha_id_prefix)).to eq 'simple_captcha-audio' }
|
29
|
+
end
|
30
|
+
|
31
|
+
context '#simple_captcha_audio_url' do
|
32
|
+
it { expect(view_helper_object.send(:simple_captcha_audio_url, 'some_dummy_id', time: now)).to eq "/simple_captcha?code=some_dummy_id&time=#{now}&audio=true" }
|
33
|
+
end
|
34
|
+
|
35
|
+
context '#simple_captcha_audio' do
|
36
|
+
it { expect(view_helper_object.send(:simple_captcha_audio, 'some_dummy_id', time: now, field_value: field_value)).to eq "<audio src=\"/simple_captcha?code=some_dummy_id&time=#{ now }&audio=true\" id=\"simple_captcha-audio-#{ field_value }\" controls=\"controls\" />" }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_captcha_audio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aditya Kapoor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.3.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.3.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: simple_captcha2
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +102,8 @@ extensions: []
|
|
88
102
|
extra_rdoc_files: []
|
89
103
|
files:
|
90
104
|
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- CHANGELOG.md
|
91
107
|
- Gemfile
|
92
108
|
- LICENSE.txt
|
93
109
|
- README.md
|
@@ -99,6 +115,9 @@ files:
|
|
99
115
|
- lib/simple_captcha_audio/view.rb
|
100
116
|
- lib/tasks/clean.rake
|
101
117
|
- simple_captcha_audio.gemspec
|
118
|
+
- spec/audio_helpers_spec.rb
|
119
|
+
- spec/spec_helper.rb
|
120
|
+
- spec/view_spec.rb
|
102
121
|
homepage: https://github.com/aditya-kapoor/simple-captcha-audio
|
103
122
|
licenses:
|
104
123
|
- MIT
|
@@ -119,9 +138,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
138
|
version: '0'
|
120
139
|
requirements: []
|
121
140
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
141
|
+
rubygems_version: 2.4.8
|
123
142
|
signing_key:
|
124
143
|
specification_version: 4
|
125
144
|
summary: Simple Audio Extension to Simple Captcha
|
126
|
-
test_files:
|
127
|
-
|
145
|
+
test_files:
|
146
|
+
- spec/audio_helpers_spec.rb
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
- spec/view_spec.rb
|