gauthify 1.2.71 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gauthify.rb +100 -56
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 186493ce73d1b478cc8c22d6cdc3fce2094e2570
4
- data.tar.gz: 18f27284c7574c1464518c1f3944741f61c741d0
3
+ metadata.gz: e311b9a782b5ecd09e3c396f670053b37ec7a51f
4
+ data.tar.gz: 2e9a3a8aae36a74b92a5fb72469ff353632922e5
5
5
  SHA512:
6
- metadata.gz: 2b91681a277432740635d7c528528cbc24c2ec653795d2b5b5ba69776595b569055d3c3213a0a51ca48548b159af317f8cd76990d625139c877bde2e82fbba38
7
- data.tar.gz: 643ac6129ac629f8f5f813a9fc8de66127d8c81d41914374b1ace0e2ac8ad38f7e30b29c35debb2a337142c83368a07a242c995fb3a63c9e4a01127a72fc710f
6
+ metadata.gz: 317cfeeeb825f60d20fad2e9f5c7fb6a38e709450b7e7a4cf604dc15588aa7b78ba049cae422ee078ab381919cfb661312aa383218c7509b0d62bdc3a08a4f8c
7
+ data.tar.gz: 33675608a87b5bb139e3fb43cd62ae3d5f7b1c7e97309aa4a28be64a4e7463371d6e2b3a1e66694eca0fbb3b05190233a6418e349729b4e09589a7cd22f43f12
@@ -2,6 +2,7 @@ require 'net/http'
2
2
  require 'uri'
3
3
  require 'rest-client'
4
4
  require 'json'
5
+ require 'base64'
5
6
 
6
7
  class GAuthifyError < Exception
7
8
  <<-DOC
@@ -37,6 +38,12 @@ class NotFoundError < GAuthifyError
37
38
  DOC
38
39
  end
39
40
 
41
+ class ConflictError < GAuthifyError
42
+ <<-DOC
43
+ Raised when a conflicting resource exists (e.g. post an existing user)
44
+ DOC
45
+ end
46
+
40
47
 
41
48
  class ServerError < GAuthifyError
42
49
  <<-DOC
@@ -57,10 +64,11 @@ class GAuthify
57
64
 
58
65
  def initialize(api_key)
59
66
  @access_points = [
60
- 'https://api.gauthify.com/v1/',
61
- 'https://backup.gauthify.com/v1/'
67
+ 'https://alpha.gauthify.com/v1/',
68
+ 'https://beta.gauthify.com/v1/'
62
69
  ]
63
- @headers = {:authorization => api_key, :user_agent => 'GAuthify-Ruby/v1.271'}
70
+ @headers = {:authorization => "Basic #{Base64.encode64(":#{api_key}")}",
71
+ :user_agent => 'GAuthify-Ruby/v2.0'}
64
72
 
65
73
  end
66
74
 
@@ -76,7 +84,7 @@ class GAuthify
76
84
  rescue
77
85
  json_resp = false
78
86
  end
79
- if not json_resp.is_a? Hash or (status_code > 400 and not [401, 402, 406, 404].include?(status_code))
87
+ if not json_resp.is_a? Hash or (status_code > 400 and not [401, 402, 406, 404, 409].include?(status_code))
80
88
  raise RestClient::Exception
81
89
  end
82
90
  break
@@ -95,6 +103,9 @@ class GAuthify
95
103
  when 404
96
104
  json_resp = JSON.parse(e.http_body)
97
105
  raise NotFoundError.new(json_resp['error_message'], status_code, json_resp['error_code'], e.http_body), json_resp['error_message']
106
+ when 409
107
+ json_resp = JSON.parse(e.http_body)
108
+ raise ConflictError.new(json_resp['error_message'], status_code, json_resp['error_code'], e.http_body), json_resp['error_message']
98
109
  end
99
110
  end
100
111
  if each == @access_points[-1]
@@ -108,23 +119,29 @@ class GAuthify
108
119
  end
109
120
 
110
121
 
111
- def create_user(unique_id, display_name, email=nil, phone_number=nil)
122
+ def create_user(unique_id, display_name, email=nil, sms_number=nil, voice_number=nil, meta=nil)
112
123
  <<-DOC
113
- Creates new user (replaces with new if already exists)
124
+ Creates new user
114
125
  DOC
115
126
 
116
- params = {'display_name' => display_name}
127
+ params = {'unique_id' => unique_id, 'display_name' => display_name}
117
128
  if email
118
129
  params['email'] = email
119
130
  end
120
- if phone_number
121
- params['phone_number'] = phone_number
131
+ if sms_number
132
+ params['sms_number'] = sms_number
122
133
  end
123
- url_addon = "users/#{unique_id}/"
134
+ if voice_number
135
+ params['voice_number'] = voice_number
136
+ end
137
+ if meta
138
+ params['meta'] = meta.to_json
139
+ end
140
+ url_addon = "users/"
124
141
  return requests_handler('post', url_addon, params=params)
125
142
  end
126
143
 
127
- def update_user(unique_id, email=nil, phone_number=nil, meta=nil, reset_key = false)
144
+ def update_user(unique_id, email=nil, sms_number=nil, voice_number=nil, meta=nil, reset_key = false)
128
145
  <<-DOC
129
146
  Creates new user with a new secret key or resets if already exists
130
147
  DOC
@@ -133,8 +150,11 @@ class GAuthify
133
150
  if email
134
151
  params['email'] = email
135
152
  end
136
- if phone_number
137
- params['phone_number'] = phone_number
153
+ if sms_number
154
+ params['sms_number'] = sms_number
155
+ end
156
+ if voice_number
157
+ params['voice_number'] = voice_number
138
158
  end
139
159
  if meta
140
160
  params['meta'] = meta.to_json
@@ -142,7 +162,6 @@ class GAuthify
142
162
  if reset_key
143
163
  params['reset_key'] = 'true'
144
164
  end
145
- puts params
146
165
  url_addon = "users/#{unique_id}/"
147
166
  return requests_handler('put', url_addon, params=params)
148
167
  end
@@ -165,21 +184,21 @@ class GAuthify
165
184
  end
166
185
 
167
186
 
168
- def get_user(unique_id, auth_code=nil)
187
+ def get_user(unique_id)
169
188
  <<-DOC
170
- Returns a single user, checks the otp if provided
189
+ Returns a single user
171
190
  DOC
172
191
  url_addon = "users/#{unique_id}/"
173
- url_addon << "check/#{auth_code}" if auth_code
174
192
  return requests_handler('get', url_addon)
175
193
  end
176
194
 
177
- def get_user_by_token(unique_id)
195
+ def get_user_by_token(token)
178
196
  <<-DOC
179
197
  Returns a single user by ezGAuth token
180
198
  DOC
181
- url_addon = "token/#{unique_id}/"
182
- return requests_handler('get', url_addon)
199
+ params = {'token' => token}
200
+ url_addon = "token/"
201
+ return requests_handler('post', url_addon, params=params)
183
202
  end
184
203
 
185
204
  def check_auth(unique_id, auth_code, safe_mode = false)
@@ -187,10 +206,9 @@ class GAuthify
187
206
  Checks OTP returns True/False depending on OTP correctness.
188
207
  DOC
189
208
  begin
190
- response = get_user(unique_id, auth_code)
191
- if not response['provided_auth']
192
- raise ParameterError('auth_code not detected. Check if params sent via get request.')
193
- end
209
+ url_addon = "check/"
210
+ params = {'unique_id' => unique_id, 'auth_code' => auth_code}
211
+ response = requests_handler('post', url_addon, params=params)
194
212
  return response['authenticated']
195
213
  rescue GAuthifyError => e
196
214
  if safe_mode
@@ -202,27 +220,40 @@ class GAuthify
202
220
 
203
221
  end
204
222
 
223
+ def send_email(unique_id, email = nil)
224
+ <<-DOC
225
+ Sends email with the one time auth_code
226
+ DOC
227
+ url_addon = "email/"
228
+ params = {'unique_id' => unique_id}
229
+ if email
230
+ params['email'] = email
231
+ end
232
+ return requests_handler('post', url_addon, params=params)
233
+ end
205
234
 
206
- def send_sms(unique_id, phone_number = nil)
235
+ def send_sms(unique_id, sms_number = nil)
207
236
  <<-DOC
208
237
  Sends text message to phone number with the one time auth_code
209
238
  DOC
210
- url_addon = "users/#{unique_id}/sms/"
211
- if phone_number
212
- url_addon << "#{phone_number}/"
239
+ url_addon = "sms/"
240
+ params = {'unique_id' => unique_id}
241
+ if sms_number
242
+ params['sms_number'] = sms_number
213
243
  end
214
- return requests_handler('get', url_addon)
244
+ return requests_handler('post', url_addon, params=params)
215
245
  end
216
246
 
217
- def send_email(unique_id, email=nil)
247
+ def send_voice(unique_id, voice_number = nil)
218
248
  <<-DOC
219
- Sends email message to phone number with the one time auth_code
249
+ Makes a call to phone number with the one time auth_code
220
250
  DOC
221
- url_addon = "users/#{unique_id}/email/"
222
- if email
223
- url_addon << "#{email}/"
251
+ url_addon = "voice/"
252
+ params = {'unique_id' => unique_id}
253
+ if voice_number
254
+ params['voice_number'] = voice_number
224
255
  end
225
- return requests_handler('get', url_addon)
256
+ return requests_handler('post', url_addon, params=params)
226
257
  end
227
258
 
228
259
  def api_errors()
@@ -234,11 +265,15 @@ class GAuthify
234
265
  end
235
266
 
236
267
 
237
- def quick_test(test_email = nil, test_number = nil)
268
+ def quick_test(test_email = nil, test_sms_number = nil, test_voice_number = nil)
238
269
  <<-DOC
239
270
  Runs initial tests to make sure everything is working fine
240
271
  DOC
241
272
  account_name = 'testuser@gauthify.com'
273
+ begin
274
+ delete_user(account_name)
275
+ rescue NotFoundError => e
276
+ end
242
277
 
243
278
  def success()
244
279
  print("Success \n")
@@ -246,8 +281,10 @@ class GAuthify
246
281
 
247
282
  puts("1) Testing Creating a User...")
248
283
  result = create_user(account_name,
249
- account_name, email='firsttest@gauthify.com',
250
- phone_number='0123456789')
284
+ account_name,
285
+ email='firsttest@gauthify.com',
286
+ sms_number='9162627232',
287
+ voice_number='9162627233')
251
288
  if not result['unique_id'] == account_name
252
289
  raise Exception
253
290
  end
@@ -257,7 +294,10 @@ class GAuthify
257
294
  if not result['email'] == 'firsttest@gauthify.com'
258
295
  raise Exception
259
296
  end
260
- if not result['phone_number'] == '0123456789'
297
+ if not result['sms_number'] == '+19162627232'
298
+ raise Exception
299
+ end
300
+ if not result['voice_number'] == '+19162627233'
261
301
  raise Exception
262
302
  end
263
303
  puts(result)
@@ -300,26 +340,30 @@ class GAuthify
300
340
  puts(result)
301
341
  success()
302
342
  end
303
- if test_number
304
- puts("5B) Testing SMS to #{test_number}")
305
- send_sms(account_name, test_number)
343
+ if test_sms_number
344
+ puts("5B) Testing SMS to #{test_sms_number}")
345
+ send_sms(account_name, test_sms_number)
306
346
  success()
307
347
  end
308
- puts("6) Detection of provided auth...")
309
- result = get_user(account_name, 'test12')
310
- if not result['provided_auth']
311
- raise Exception
348
+ if test_voice_number
349
+ puts("5C) Calling #{test_voice_number}")
350
+ send_voice(account_name, test_voice_number)
351
+ success()
312
352
  end
313
- puts(result)
314
- success()
315
353
 
316
- puts("7) Testing updating email, phone, and meta")
317
- result = update_user(account_name, email='test@gauthify.com',
318
- phone_number='1234567890', meta={'a' => 'b'})
354
+ puts("6) Testing updating email, phone, and meta")
355
+ result = update_user(account_name,
356
+ email='test@gauthify.com',
357
+ sms_number='9162627235',
358
+ voice_number='9162627236',
359
+ meta={'a' => 'b'})
319
360
  if not result['email'] == 'test@gauthify.com'
320
361
  raise Exception
321
362
  end
322
- if not result['phone_number'] == '1234567890'
363
+ if not result['sms_number'] == '+19162627235'
364
+ raise Exception
365
+ end
366
+ if not result['voice_number'] == '+19162627236'
323
367
  raise Exception
324
368
  end
325
369
  if not result['meta']['a'] == 'b'
@@ -328,19 +372,19 @@ class GAuthify
328
372
  current_key = result['key']
329
373
  success()
330
374
 
331
- puts("8) Testing key/secret")
332
- result = update_user(account_name, nil, nil, nil, true)
375
+ puts("7) Testing key/secret")
376
+ result = update_user(account_name, nil, nil, nil, nil, true)
333
377
  puts(current_key, result['key'])
334
378
  if not result['key'] != current_key
335
379
  raise Exception
336
380
  end
337
381
  success()
338
382
 
339
- puts("9) Deleting Created User...")
383
+ puts("8) Deleting Created User...")
340
384
  result = delete_user(account_name)
341
385
  success()
342
386
 
343
- puts("10) Testing backup server...")
387
+ puts("9) Testing backup server...")
344
388
  current = @access_points[0]
345
389
  @access_points[0] = 'https://blah.gauthify.com/v1/'
346
390
  result = get_all_users()
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gauthify
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.71
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GAuthify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-08 00:00:00.000000000 Z
11
+ date: 2013-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client