authy 0.0.8 → 1.0.0

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.
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