ringcaptcha 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.
Files changed (3) hide show
  1. data/lib/ringcaptcha.rb +85 -0
  2. metadata +68 -46
  3. checksums.yaml +0 -7
@@ -0,0 +1,85 @@
1
+ require 'open-uri'
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+ module RingCaptcha
6
+ class RingCaptchaRequestError < StandardError; end
7
+
8
+ class RingCaptchaVerification
9
+
10
+ attr_reader :status, :message, :transaction_id, :phone_number, :geolocation, :phone_type, :carrier_name
11
+
12
+ def initialize(json)
13
+ @transaction_id = json.has_key?("id") ? json["id"] : false
14
+ @phone_number = json.has_key?("phone") ? json["phone"] : false
15
+ @geolocation = json.has_key?("geolocation") ? json["geolocation"] : false
16
+ @message = json.has_key?("message") ? json["message"] : false
17
+ @phone_type = json.has_key?("phone_type") ? json["phone_type"] : false
18
+ @carrier_name = json.has_key?("carrier") ? json["carrier"] : false
19
+ end
20
+
21
+ end
22
+
23
+ class RingCaptcha
24
+ @@rc_server = 'api.ringcaptcha.com'
25
+ @@user_agent = 'ringcaptcha-ruby/1.0'
26
+
27
+ attr_accessor :secure
28
+
29
+ def initialize(app_key, secret_key)
30
+ @app_key = app_key
31
+ @secret_key = secret_key
32
+ @retry_attempts = 0
33
+ @secure = true
34
+ @status = -1
35
+ end
36
+
37
+ def is_valid?(pin_code, token)
38
+ #TODO Check parameters
39
+ data = {secret_key: @secret_key, token: token, code: pin_code}
40
+ sanitize_data(data)
41
+ server = (@secure ? "https://" : "http://") + @@rc_server
42
+ resource = "#{@app_key}/verify"
43
+ begin
44
+ response = verify_rest_call(server, resource, data)
45
+ body = JSON.parse(response.body)
46
+ @status = response.class.name == "Net::HTTPOK" ? body['status'] == "SUCCESS" : 0
47
+ rescue => e
48
+ @status = 0
49
+ @message = e.message
50
+ return false
51
+ end
52
+
53
+ return RingCaptchaVerification.new(body)
54
+
55
+ end
56
+
57
+ private
58
+
59
+ def sanitize_data(data)
60
+ data.each do |key,value|
61
+ data[key] = URI::encode(value).strip
62
+ end
63
+ end
64
+
65
+ def verify_rest_call(server, resource, data, port=80)
66
+ port = @secure ? 443 : port
67
+ url = "#{server}:#{port}/#{resource}"
68
+
69
+ uri = URI.parse(url)
70
+ https = Net::HTTP.new(uri.host,uri.port)
71
+ https.use_ssl = @secure
72
+ req = Net::HTTP::Post.new(uri.path, initheader = {'User-Agent' => @@user_agent})
73
+ req.set_form_data(data)
74
+ res = https.request(req)
75
+
76
+ case res
77
+ when Net::HTTPSuccess, Net::HTTPRedirection
78
+ res
79
+ else
80
+ raise RingCaptchaRequestError, 'ERROR_PROCESING_REQUEST'
81
+ end
82
+
83
+ end
84
+ end
85
+ end
metadata CHANGED
@@ -1,72 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ringcaptcha
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Martin Cocaro
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2014-04-15 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2014-04-17 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
14
21
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
21
22
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
24
26
  - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
27
+ - !ruby/object:Gem::Version
28
+ hash: 9
29
+ segments:
30
+ - 1
31
+ - 3
32
+ version: "1.3"
34
33
  type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rake
35
37
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
41
49
  description: library to access to RingCaptcha API
42
- email:
50
+ email:
43
51
  - martin@ringcaptcha.com
44
52
  executables: []
53
+
45
54
  extensions: []
55
+
46
56
  extra_rdoc_files: []
47
- files: []
57
+
58
+ files:
59
+ - ./lib/ringcaptcha.rb
48
60
  homepage: http://ringcaptcha.com
49
- licenses:
61
+ licenses:
50
62
  - MIT
51
- metadata: {}
52
63
  post_install_message:
53
64
  rdoc_options: []
54
- require_paths:
65
+
66
+ require_paths:
55
67
  - lib
56
- required_ruby_version: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - '>='
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- required_rubygems_version: !ruby/object:Gem::Requirement
62
- requirements:
63
- - - '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ hash: 3
83
+ segments:
84
+ - 0
85
+ version: "0"
66
86
  requirements: []
87
+
67
88
  rubyforge_project:
68
- rubygems_version: 2.0.3
89
+ rubygems_version: 1.8.15
69
90
  signing_key:
70
- specification_version: 4
91
+ specification_version: 3
71
92
  summary: library to access to RingCaptcha API
72
93
  test_files: []
94
+
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 9867d05cec8c6f43cf6ca12156ab09234b8b7613
4
- data.tar.gz: c63fe3e68439bfb8139baa8555c420aa6a847b39
5
- SHA512:
6
- metadata.gz: 1e052238f00064c5baac23c5b7574ced972c0e14becfd04f7cc5309d6226573e9763efce39c41870577590054bd753c5f36d0b692bb0bf10e0710c6e9229ed31
7
- data.tar.gz: fd5d3d716f04a67879115468407d3efd220cb338fb64d1fff59946c8307426662b64f0cc9b741deb2172bb15cdd0780bea1c78119a49e91041bb6e9f898d29bc