ringcaptcha 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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