authy 0.0.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,13 +1,13 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'dcu-typhoeus', :require => 'typhoeus'
3
+ gem 'httpclient'
4
4
 
5
5
  group :development do
6
6
  gem "rspec"
7
7
  gem 'pry'
8
- gem "yard", "~> 0.7"
9
- gem "rdoc", "~> 3.12"
10
- gem "jeweler", "~> 1.8.3"
8
+ gem "yard"
9
+ gem "rdoc"
10
+ gem "jeweler"
11
11
  gem "simplecov", ">= 0"
12
- gem "reek", "~> 1.2.8"
12
+ gem "reek"
13
13
  end
@@ -1,18 +1,10 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activesupport (3.2.11)
5
- i18n (~> 0.6)
6
- multi_json (~> 1.0)
7
4
  coderay (1.0.8)
8
- dcu-typhoeus (0.4.3)
9
- activesupport (~> 3.2)
10
- ffi (~> 1.0)
11
- mime-types (~> 1.18)
12
5
  diff-lcs (1.1.3)
13
- ffi (1.3.1)
14
6
  git (1.2.5)
15
- i18n (0.6.1)
7
+ httpclient (2.3.2)
16
8
  jeweler (1.8.4)
17
9
  bundler (~> 1.0)
18
10
  git (>= 1.2.5)
@@ -20,22 +12,18 @@ GEM
20
12
  rdoc
21
13
  json (1.7.6)
22
14
  method_source (0.8.1)
23
- mime-types (1.19)
24
15
  multi_json (1.5.0)
25
- pry (0.9.10)
16
+ pry (0.9.11.4)
26
17
  coderay (~> 1.0.5)
27
18
  method_source (~> 0.8)
28
- slop (~> 3.3.1)
19
+ slop (~> 3.4)
29
20
  rake (10.0.3)
30
21
  rdoc (3.12)
31
22
  json (~> 1.4)
32
- reek (1.2.13)
33
- ripper_ruby_parser (~> 0.0.7)
34
- ruby2ruby (~> 1.2.5)
35
- ruby_parser (~> 2.0)
36
- sexp_processor (~> 3.0)
37
- ripper_ruby_parser (0.0.8)
38
- sexp_processor (~> 3.0)
23
+ reek (1.3)
24
+ ruby2ruby (~> 2.0.0)
25
+ ruby_parser (~> 3.0.4)
26
+ sexp_processor
39
27
  rspec (2.12.0)
40
28
  rspec-core (~> 2.12.0)
41
29
  rspec-expectations (~> 2.12.0)
@@ -44,28 +32,28 @@ GEM
44
32
  rspec-expectations (2.12.1)
45
33
  diff-lcs (~> 1.1.3)
46
34
  rspec-mocks (2.12.1)
47
- ruby2ruby (1.2.5)
48
- ruby_parser (~> 2.0)
49
- sexp_processor (~> 3.0)
50
- ruby_parser (2.3.1)
51
- sexp_processor (~> 3.0)
52
- sexp_processor (3.2.0)
35
+ ruby2ruby (2.0.1)
36
+ ruby_parser (~> 3.0.0)
37
+ sexp_processor (~> 4.0)
38
+ ruby_parser (3.0.4)
39
+ sexp_processor (~> 4.1)
40
+ sexp_processor (4.1.4)
53
41
  simplecov (0.7.1)
54
42
  multi_json (~> 1.0)
55
43
  simplecov-html (~> 0.7.1)
56
44
  simplecov-html (0.7.1)
57
- slop (3.3.3)
45
+ slop (3.4.3)
58
46
  yard (0.8.3)
59
47
 
60
48
  PLATFORMS
61
49
  ruby
62
50
 
63
51
  DEPENDENCIES
64
- dcu-typhoeus
65
- jeweler (~> 1.8.3)
52
+ httpclient
53
+ jeweler
66
54
  pry
67
- rdoc (~> 3.12)
68
- reek (~> 1.2.8)
55
+ rdoc
56
+ reek
69
57
  rspec
70
58
  simplecov
71
- yard (~> 0.7)
59
+ yard
data/README.md CHANGED
@@ -42,9 +42,10 @@ __NOTE: Token verification is only enforced if the user has completed registrati
42
42
  response = Authy::API.verify(:id => user.authy_id, :token => 'token-user-entered')
43
43
 
44
44
  if response.ok?
45
- //token was valid, user can sign in
45
+ # token was valid, user can sign in
46
46
  else
47
- //token is invalid
47
+ # token is invalid
48
+ end
48
49
 
49
50
  ### Forcing Verification
50
51
 
@@ -59,10 +60,11 @@ If you wish to verify tokens even if the user has not yet complete registration,
59
60
  response = Authy::API.request_sms(:id => user.authy_id)
60
61
 
61
62
  if response.ok?
62
- //sms was sent
63
+ # sms was sent
63
64
  else
64
- response.
65
- //sms failed to send
65
+ response.errors
66
+ #sms failed to send
67
+ end
66
68
 
67
69
 
68
70
  This call will be ignored if the user is using the Authy Mobile App. If you still want to send
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.8
1
+ 1.0.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "authy"
8
- s.version = "0.0.8"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Authy", "David A. Cuadrado"]
12
- s.date = "2013-01-14"
12
+ s.date = "2013-01-24"
13
13
  s.description = "Ruby library to access Authy services"
14
14
  s.email = "krawek@gmail.com"
15
15
  s.executables = ["authy-api-console"]
@@ -48,33 +48,33 @@ Gem::Specification.new do |s|
48
48
  s.specification_version = 3
49
49
 
50
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
- s.add_runtime_dependency(%q<dcu-typhoeus>, [">= 0"])
51
+ s.add_runtime_dependency(%q<httpclient>, [">= 0"])
52
52
  s.add_development_dependency(%q<rspec>, [">= 0"])
53
53
  s.add_development_dependency(%q<pry>, [">= 0"])
54
- s.add_development_dependency(%q<yard>, ["~> 0.7"])
55
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
56
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
54
+ s.add_development_dependency(%q<yard>, [">= 0"])
55
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
56
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
57
57
  s.add_development_dependency(%q<simplecov>, [">= 0"])
58
- s.add_development_dependency(%q<reek>, ["~> 1.2.8"])
58
+ s.add_development_dependency(%q<reek>, [">= 0"])
59
59
  else
60
- s.add_dependency(%q<dcu-typhoeus>, [">= 0"])
60
+ s.add_dependency(%q<httpclient>, [">= 0"])
61
61
  s.add_dependency(%q<rspec>, [">= 0"])
62
62
  s.add_dependency(%q<pry>, [">= 0"])
63
- s.add_dependency(%q<yard>, ["~> 0.7"])
64
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
65
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
63
+ s.add_dependency(%q<yard>, [">= 0"])
64
+ s.add_dependency(%q<rdoc>, [">= 0"])
65
+ s.add_dependency(%q<jeweler>, [">= 0"])
66
66
  s.add_dependency(%q<simplecov>, [">= 0"])
67
- s.add_dependency(%q<reek>, ["~> 1.2.8"])
67
+ s.add_dependency(%q<reek>, [">= 0"])
68
68
  end
69
69
  else
70
- s.add_dependency(%q<dcu-typhoeus>, [">= 0"])
70
+ s.add_dependency(%q<httpclient>, [">= 0"])
71
71
  s.add_dependency(%q<rspec>, [">= 0"])
72
72
  s.add_dependency(%q<pry>, [">= 0"])
73
- s.add_dependency(%q<yard>, ["~> 0.7"])
74
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
75
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
73
+ s.add_dependency(%q<yard>, [">= 0"])
74
+ s.add_dependency(%q<rdoc>, [">= 0"])
75
+ s.add_dependency(%q<jeweler>, [">= 0"])
76
76
  s.add_dependency(%q<simplecov>, [">= 0"])
77
- s.add_dependency(%q<reek>, ["~> 1.2.8"])
77
+ s.add_dependency(%q<reek>, [">= 0"])
78
78
  end
79
79
  end
80
80
 
@@ -1,10 +1,11 @@
1
1
  $:.unshift File.expand_path("..", __FILE__)
2
2
 
3
- require 'bundler/setup'
4
-
5
- require 'typhoeus'
3
+ require 'httpclient'
4
+ require 'httpclient/include_client'
6
5
  require 'json'
6
+
7
7
  require 'authy/response'
8
8
  require 'authy/models/user'
9
9
  require 'authy/config'
10
10
  require 'authy/api'
11
+
@@ -4,7 +4,10 @@ module Authy
4
4
  # Authy.api_uri = 'http://test-authy-api.heroku.com/'
5
5
  #
6
6
  class API
7
- include Typhoeus
7
+ USER_AGENT = "authy-ruby"
8
+
9
+ extend HTTPClient::IncludeClient
10
+ include_http_client
8
11
 
9
12
  def self.register_user(attributes)
10
13
  api_key = attributes.delete(:api_key)
@@ -14,7 +17,7 @@ module Authy
14
17
  }
15
18
 
16
19
  url = "#{Authy.api_uri}/protected/json/users/new"
17
- response = Typhoeus::Request.post(url, :params => params)
20
+ response = http_client.post(url, :body => escape_query(params))
18
21
 
19
22
  Authy::User.new(response)
20
23
  end
@@ -29,7 +32,7 @@ module Authy
29
32
  user_id = params.delete(:id) || params.delete('id')
30
33
 
31
34
  url = "#{Authy.api_uri}/protected/json/verify/#{escape_for_url(token)}/#{escape_for_url(user_id)}"
32
- response = Typhoeus::Request.get(url, :params => {:api_key => Authy.api_key}.merge(params))
35
+ response = http_client.get(url, {:api_key => Authy.api_key}.merge(params))
33
36
 
34
37
  Authy::Response.new(response)
35
38
  end
@@ -41,7 +44,7 @@ module Authy
41
44
  user_id = params.delete(:id) || params.delete('id')
42
45
 
43
46
  url = "#{Authy.api_uri}/protected/json/sms/#{escape_for_url(user_id)}"
44
- response = Typhoeus::Request.get(url, :params => {:api_key => Authy.api_key}.merge(params))
47
+ response = http_client.get(url, {:api_key => Authy.api_key}.merge(params))
45
48
 
46
49
  Authy::Response.new(response)
47
50
  end
@@ -50,5 +53,34 @@ module Authy
50
53
  def self.escape_for_url(field)
51
54
  URI.escape(field.to_s.strip, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
52
55
  end
56
+
57
+ # Copied and extended from httpclient's HTTP::Message#escape_query()
58
+ def self.escape_query(query, namespace = nil) # :nodoc:
59
+ pairs = []
60
+ query.each { |attr, value|
61
+ left = namespace ? "#{namespace}[#{attr.to_s}]" : attr.to_s
62
+ if values = Array.try_convert(value)
63
+ values.each { |value|
64
+ if value.respond_to?(:read)
65
+ value = value.read
66
+ end
67
+
68
+ if value.kind_of?(Hash)
69
+ pairs.push(escape_query(value, left+"[]"))
70
+ else
71
+ pairs.push(HTTP::Message.escape(left+ '[]') << '=' << HTTP::Message.escape(value.to_s))
72
+ end
73
+ }
74
+ elsif values = Hash.try_convert(value)
75
+ pairs.push(escape_query(values, left.dup))
76
+ else
77
+ if value.respond_to?(:read)
78
+ value = value.read
79
+ end
80
+ pairs.push(HTTP::Message.escape(left) << '=' << HTTP::Message.escape(value.to_s))
81
+ end
82
+ }
83
+ pairs.join('&')
84
+ end
53
85
  end
54
86
  end
@@ -12,23 +12,30 @@ module Authy
12
12
  end
13
13
 
14
14
  def ok?
15
- @raw_response.code == 200
15
+ @raw_response.status == 200
16
16
  end
17
+ alias :success? :ok?
17
18
 
18
19
  def body
19
20
  @raw_response.body
20
21
  end
21
22
 
22
23
  def code
23
- @raw_response.code
24
+ @raw_response.status
24
25
  end
25
26
 
26
27
  def error_msg
27
- (@raw_response.curl_error_message == "No error" && self.empty?) ? self.body : @raw_response.curl_error_message
28
+ if ok?
29
+ "No error"
30
+ elsif self.empty?
31
+ self.body
32
+ else
33
+ self["message"] || "No error"
34
+ end
28
35
  end
29
36
 
30
37
  def errors
31
- self['errors'] || @errors
38
+ self["errors"] || @errors
32
39
  end
33
40
 
34
41
  protected
@@ -41,12 +48,9 @@ module Authy
41
48
  end
42
49
 
43
50
  def parse_body
44
- begin
45
- body = JSON.parse(@raw_response.body)
46
- body.each do |k,v|
47
- self[k] = v
48
- end
49
- rescue Exception => e
51
+ body = JSON.parse(@raw_response.body) rescue {}
52
+ body.each do |k,v|
53
+ self[k] = v
50
54
  end
51
55
  end
52
56
  end
@@ -1,9 +1,10 @@
1
+ require 'spec_helper'
2
+
1
3
  describe "Authy::Response" do
2
4
  before :each do
3
5
  @fake_response = OpenStruct.new
4
6
  @fake_response.body = {'v1' => 'r1','v2' => 42}.to_json
5
- @fake_response.code = 200
6
- @fake_response.curl_error_message = 'No error'
7
+ @fake_response.status = 200
7
8
 
8
9
  @response = Authy::Response.new(@fake_response)
9
10
  end
@@ -15,7 +16,7 @@ describe "Authy::Response" do
15
16
  it "should be ok if the return code is 200" do
16
17
  @response.ok?.should be_true
17
18
 
18
- @fake_response.code = 401
19
+ @fake_response.status = 401
19
20
  @response = Authy::Response.new(@fake_response)
20
21
  @response.ok?.should be_false
21
22
  end
@@ -24,6 +25,7 @@ describe "Authy::Response" do
24
25
  @response.error_msg.should == "No error"
25
26
 
26
27
  @fake_response.body = 'invalid json'
28
+ @fake_response.status = 401
27
29
  @response = Authy::Response.new(@fake_response)
28
30
 
29
31
  @response.error_msg.should == "invalid json"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: authy
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.8
5
+ version: 1.0.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Authy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-01-14 00:00:00.000000000 Z
13
+ date: 2013-01-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  version_requirements: !ruby/object:Gem::Requirement
@@ -19,7 +19,7 @@ dependencies:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
- name: dcu-typhoeus
22
+ name: httpclient
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  requirement: !ruby/object:Gem::Requirement
@@ -64,50 +64,50 @@ dependencies:
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - ~>
67
+ - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: '0.7'
69
+ version: '0'
70
70
  name: yard
71
71
  type: :development
72
72
  prerelease: false
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
- - - ~>
76
+ - - ! '>='
77
77
  - !ruby/object:Gem::Version
78
- version: '0.7'
78
+ version: '0'
79
79
  - !ruby/object:Gem::Dependency
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
- - - ~>
83
+ - - ! '>='
84
84
  - !ruby/object:Gem::Version
85
- version: '3.12'
85
+ version: '0'
86
86
  name: rdoc
87
87
  type: :development
88
88
  prerelease: false
89
89
  requirement: !ruby/object:Gem::Requirement
90
90
  none: false
91
91
  requirements:
92
- - - ~>
92
+ - - ! '>='
93
93
  - !ruby/object:Gem::Version
94
- version: '3.12'
94
+ version: '0'
95
95
  - !ruby/object:Gem::Dependency
96
96
  version_requirements: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
- - - ~>
99
+ - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
- version: 1.8.3
101
+ version: '0'
102
102
  name: jeweler
103
103
  type: :development
104
104
  prerelease: false
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
- - - ~>
108
+ - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
- version: 1.8.3
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  none: false
@@ -128,18 +128,18 @@ dependencies:
128
128
  version_requirements: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
- - - ~>
131
+ - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
- version: 1.2.8
133
+ version: '0'
134
134
  name: reek
135
135
  type: :development
136
136
  prerelease: false
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
- - - ~>
140
+ - - ! '>='
141
141
  - !ruby/object:Gem::Version
142
- version: 1.2.8
142
+ version: '0'
143
143
  description: Ruby library to access Authy services
144
144
  email: krawek@gmail.com
145
145
  executables:
@@ -182,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
182
  - !ruby/object:Gem::Version
183
183
  segments:
184
184
  - 0
185
- hash: 4514592161514013586
185
+ hash: -14009376793020186
186
186
  version: '0'
187
187
  required_rubygems_version: !ruby/object:Gem::Requirement
188
188
  none: false