onelogin 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d58de3abd209ce7e6de060541a04cb2ccc403645
4
- data.tar.gz: 01491005b2597087ba28e3cae0d4466129b4e453
3
+ metadata.gz: 8069da07a08e3fe1e504af1a9fc63291976e91c0
4
+ data.tar.gz: f042c302a74c09a7fd1b4b7ddc7e06de2b5d3220
5
5
  SHA512:
6
- metadata.gz: b484d5d34ac1b711ce41d32c217ddaeefd19e2c8b55d057e02b560bf0146171a6a6956cbd1f0301ce215ef4bd3a7183535c30a11b8fd82e18715e1df358c8085
7
- data.tar.gz: 326e7dc9c1485f2ba5322432038498e3bd8973f9b58e0847c612ad14a882a8cadbb74a58e2ff7cb7a42f8c318872a901a8466bc0f3418300ed4f02de5f199dce
6
+ metadata.gz: e57dbe81b5aed13dcac3a3eeef4fcc44daaccac3383d4e90703792100dff2e8010448e3b19b5e4b92c7c65bca0f15a68307d1a3715aa277d8cafeafb75b62f72
7
+ data.tar.gz: 57ce0509e3f806865283cbd8ca091a316cb8a16cf69d34bd25249a1d60ec5f06ec61eb17f655184251682c49ecae42259ca0d88e50089bd8c804d1a70c9a88be
data/README.md CHANGED
@@ -74,6 +74,14 @@ if users.nil?
74
74
  end
75
75
  ```
76
76
 
77
+ In some scenarios there is an attribute not provided or invalid that causes the error,
78
+ when that happens in addition to the error_description a error_attribute is available
79
+ with the name of the attribute that caused the issue. Accesible at the client like:
80
+
81
+ ```ruby
82
+ client.error_attribute
83
+ ```
84
+
77
85
  ### Authentication
78
86
 
79
87
  By default methods call internally to `get_access_token` if there is no valid access_token. You can also get tokens etc directly if needed.
@@ -312,7 +320,7 @@ enroll_factor = client.enroll_factor(user_id, auth_factors.first.id, 'My Device'
312
320
 
313
321
  # Get Enrolled Authentication Factors
314
322
  otp_devices = client.get_enrolled_factors(user_id)
315
-
323
+
316
324
  # Activate an Authentication Factor
317
325
  device_id = 0000000
318
326
  enrollment_response = client.activate_factor(user_id, device_id)
@@ -334,6 +342,26 @@ embed_token = "30e256c101cd0d2e731de1ec222e93c4be8a1572"
334
342
  apps = client.get_embed_apps("30e256c101cd0d2e731de1ec222e93c4be8a1572", "user@example.com")
335
343
  ```
336
344
 
345
+ ## Proxy Servers
346
+ If you're stuck behind a proxy then you can still use this SDK by providing at a minimum the
347
+ host address of your proxy server.
348
+
349
+ ```ruby
350
+ client = OneLogin::Api::Client.new(
351
+ client_id: 'some-client-id',
352
+ client_secret:'some-client-secret',
353
+ region: 'us',
354
+ proxy_host: 'https://blah.com',
355
+ proxy_port: '8080',
356
+ proxy_user: 'username',
357
+ proxy_pass: 'password'
358
+ )
359
+ ```
360
+
361
+ * `proxy_host` - required, the host address of your proxy server
362
+ * `proxy_port` - optional, the port number of your proxy server
363
+ * `proxy_user` - optional, the username for your proxy server
364
+ * `proxy_pass` - optional, the password for your proxy server
337
365
 
338
366
  ## Development
339
367
 
@@ -1,13 +1,13 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- httparty (0.16.0)
4
+ httparty (0.16.2)
5
5
  multi_xml (>= 0.5.2)
6
6
  mini_portile2 (2.3.0)
7
7
  multi_xml (0.6.0)
8
- nokogiri (1.8.2)
8
+ nokogiri (1.8.4)
9
9
  mini_portile2 (~> 2.3.0)
10
- onelogin (1.0.1)
10
+ onelogin (1.2.1)
11
11
  httparty (>= 0.13.7)
12
12
  nokogiri (>= 1.6.3.1)
13
13
 
@@ -24,10 +24,10 @@ OptionParser.new do |opts|
24
24
  options[:since] = s.iso8601
25
25
  end
26
26
 
27
- opts.on("-lLAST", "--LAST=LAST", Time, "Events since this many days ago") do |d|
27
+ opts.on("-lLAST", "--LAST=LAST", Integer, "Events since this many days ago") do |d|
28
28
  now = Date.today
29
29
  days_ago = (now - d)
30
- options[:since] = days_ago.iso8601
30
+ options[:since] = days_ago.strftime('%Y-%m-%dT%H:%M:%SZ')
31
31
  end
32
32
 
33
33
  opts.on("-uUNTIL", "--UNTIL=UNTIL", Time, "Events before this date") do |u|
@@ -42,12 +42,12 @@ OptionParser.new do |opts|
42
42
  options[:event_type_id] = t
43
43
  end
44
44
 
45
- opts.on("-uTYPE", "--user=TYPE", Integer, "Filter by user id") do |u|
45
+ opts.on("-uUSER", "--user=USER", Integer, "Filter by user id") do |u|
46
46
  options[:user_id] = u
47
47
  end
48
48
 
49
49
  # Sort direction is done by adding a + or - before the field name that you want to sort on
50
- opts.on("-zTYPE", "--sort=TYPE", String, "Sort by this field") do |s|
50
+ opts.on("-zSORT", "--sort=SORT", String, "Sort by this field") do |s|
51
51
  options[:sort] = s
52
52
  end
53
53
  end.parse!
@@ -0,0 +1,71 @@
1
+ require 'onelogin'
2
+ require 'optparse'
3
+ require 'optparse/time'
4
+
5
+ #
6
+ # This generates a report listing the last login date for all users who have logged into a specified app in the last x days.
7
+ #
8
+ # Usage:
9
+ # 1. Set your own CLIENT_ID and CLIENT_SECRET below
10
+ # 2. From terminal run "ruby last-app-user-login-to-csv.rb"
11
+ # 3. Use the command line args to filter events
12
+ #
13
+ # e.g. "ruby last-app-user-login-to-csv.rb -l 90" for last 90 days
14
+ #
15
+
16
+
17
+ # Parse CLI arguments
18
+ options = {
19
+ event_type_id: 8, # User Logged into an App
20
+ sort: '-created_at'
21
+ }
22
+
23
+ OptionParser.new do |opts|
24
+ opts.banner = "Usage: last-app-user-login-to-csv.rb [options]"
25
+
26
+ opts.on("-lLAST", "--LAST=LAST", Integer, "Events since this many days ago") do |d|
27
+ now = Date.today
28
+ days_ago = (now - d)
29
+ options[:since] = days_ago.strftime('%Y-%m-%dT%H:%M:%SZ')
30
+ end
31
+
32
+ end.parse!
33
+
34
+ client = OneLogin::Api::Client.new(
35
+ client_id: 'ONELOGIN_CLIENT_ID_GOES_HERE',
36
+ client_secret: 'ONELOGIN_CLIENT_SECRET_GOES_HERE',
37
+ region: 'us'
38
+ )
39
+
40
+ counter = 0
41
+
42
+ logins = {}
43
+
44
+ # build a hash from events which contains user_id and latest login date
45
+ client.get_events(options).each do |event|
46
+ key = "#{event.app_id}-#{event.user_id}"
47
+
48
+ unless logins[key]
49
+ logins[key] = {
50
+ app_id: event.app_id,
51
+ app_name: event.app_name,
52
+ user_id: event.user_id,
53
+ user_name: event.user_name,
54
+ last_login_at: event.created_at
55
+ }
56
+ end
57
+ end
58
+
59
+ CSV.open('last-login-by-app.csv', 'wb') do |csv|
60
+ puts "Exporting user logins to last-login-by-app.csv"
61
+
62
+ # header row
63
+ csv << ['app_id', 'app_name', 'user_id', 'user_name', 'last_login_at']
64
+
65
+ logins.each do |login|
66
+ csv << login[1].values
67
+ counter += 1
68
+ end
69
+ end
70
+
71
+ puts "Exported #{counter} user logins to last-login-by-app.csv"
@@ -16,9 +16,10 @@ module OneLogin
16
16
  #
17
17
  class Client
18
18
  include OneLogin::Api::Util
19
+ include HTTParty
19
20
 
20
21
  attr_accessor :client_id, :client_secret, :region
21
- attr_accessor :user_agent, :error, :error_description
22
+ attr_accessor :user_agent, :error, :error_description, :error_attribute
22
23
 
23
24
  NOKOGIRI_OPTIONS = Nokogiri::XML::ParseOptions::STRICT |
24
25
  Nokogiri::XML::ParseOptions::NONET
@@ -37,6 +38,10 @@ module OneLogin
37
38
  @region = options[:region] || 'us'
38
39
  @max_results = options[:max_results] || 1000
39
40
 
41
+ if options[:proxy_host]
42
+ self.class.http_proxy options[:proxy_host], options[:proxy_port], options[:proxy_user], options[:proxy_pass]
43
+ end
44
+
40
45
  validate_config
41
46
 
42
47
  @user_agent = DEFAULT_USER_AGENT
@@ -51,6 +56,7 @@ module OneLogin
51
56
  def clean_error
52
57
  @error = nil
53
58
  @error_description = nil
59
+ @error_attribute = nil
54
60
  end
55
61
 
56
62
  def extract_error_message_from_response(response)
@@ -59,7 +65,13 @@ module OneLogin
59
65
  if content && content.has_key?('status')
60
66
  status = content['status']
61
67
  if status.has_key?('message')
62
- message = status['message']
68
+ if status['message'].instance_of?(Hash)
69
+ if status['message'].has_key?('description')
70
+ message = status['message']['description']
71
+ end
72
+ else
73
+ message = status['message']
74
+ end
63
75
  elsif status.has_key?('type')
64
76
  message = status['type']
65
77
  end
@@ -67,6 +79,20 @@ module OneLogin
67
79
  message
68
80
  end
69
81
 
82
+ def extract_error_attribute_from_response(response)
83
+ attribute = nil
84
+ content = JSON.parse(response.body)
85
+ if content && content.has_key?('status')
86
+ status = content['status']
87
+ if status.has_key?('message') && status['message'].instance_of?(Hash)
88
+ if status['message'].has_key?('attribute')
89
+ attribute = status['message']['attribute']
90
+ end
91
+ end
92
+ end
93
+ attribute
94
+ end
95
+
70
96
  def expired?
71
97
  Time.now.utc > @expiration
72
98
  end
@@ -168,7 +194,7 @@ module OneLogin
168
194
  'grant_type' => 'client_credentials'
169
195
  }
170
196
 
171
- response = HTTParty.post(
197
+ response = self.class.post(
172
198
  url,
173
199
  headers: authorized_headers(false),
174
200
  body: data.to_json
@@ -210,7 +236,7 @@ module OneLogin
210
236
  'refresh_token' => @refresh_token
211
237
  }
212
238
 
213
- response = HTTParty.post(
239
+ response = self.class.post(
214
240
  url,
215
241
  headers: headers,
216
242
  body: data.to_json
@@ -250,7 +276,7 @@ module OneLogin
250
276
  access_token: @access_token
251
277
  }
252
278
 
253
- response = HTTParty.post(
279
+ response = self.class.post(
254
280
  url,
255
281
  headers: authorized_headers(false),
256
282
  body: data.to_json
@@ -285,7 +311,7 @@ module OneLogin
285
311
  begin
286
312
  url = url_for(GET_RATE_URL)
287
313
 
288
- response = HTTParty.get(
314
+ response = self.class.get(
289
315
  url,
290
316
  headers: authorized_headers
291
317
  )
@@ -327,7 +353,8 @@ module OneLogin
327
353
  model: OneLogin::Api::Models::User,
328
354
  headers: authorized_headers,
329
355
  max_results: @max_results,
330
- params: params
356
+ params: params,
357
+ client: self.class
331
358
  }
332
359
 
333
360
  return Cursor.new(url_for(GET_USERS_URL), options)
@@ -355,7 +382,7 @@ module OneLogin
355
382
 
356
383
  url = url_for(GET_USER_URL, user_id)
357
384
 
358
- response = HTTParty.get(
385
+ response = self.class.get(
359
386
  url,
360
387
  headers: authorized_headers
361
388
  )
@@ -419,7 +446,7 @@ module OneLogin
419
446
  begin
420
447
  url = url_for(GET_ROLES_FOR_USER_URL, user_id)
421
448
 
422
- response = HTTParty.get(
449
+ response = self.class.get(
423
450
  url,
424
451
  headers: authorized_headers
425
452
  )
@@ -454,7 +481,7 @@ module OneLogin
454
481
  begin
455
482
  url = url_for(GET_CUSTOM_ATTRIBUTES_URL)
456
483
 
457
- response = HTTParty.get(
484
+ response = self.class.get(
458
485
  url,
459
486
  headers: authorized_headers
460
487
  )
@@ -498,7 +525,7 @@ module OneLogin
498
525
  begin
499
526
  url = url_for(CREATE_USER_URL)
500
527
 
501
- response = HTTParty.post(
528
+ response = self.class.post(
502
529
  url,
503
530
  headers: authorized_headers,
504
531
  body: user_params.to_json
@@ -512,6 +539,7 @@ module OneLogin
512
539
  else
513
540
  @error = response.code.to_s
514
541
  @error_description = extract_error_message_from_response(response)
542
+ @error_attribute = extract_error_attribute_from_response(response)
515
543
  end
516
544
  rescue Exception => e
517
545
  @error = '500'
@@ -541,7 +569,7 @@ module OneLogin
541
569
  begin
542
570
  url = url_for(UPDATE_USER_URL, user_id)
543
571
 
544
- response = HTTParty.put(
572
+ response = self.class.put(
545
573
  url,
546
574
  headers: authorized_headers,
547
575
  body: user_params.to_json
@@ -555,6 +583,7 @@ module OneLogin
555
583
  else
556
584
  @error = response.code.to_s
557
585
  @error_description = extract_error_message_from_response(response)
586
+ @error_attribute = extract_error_attribute_from_response(response)
558
587
  end
559
588
  rescue Exception => e
560
589
  @error = '500'
@@ -583,7 +612,7 @@ module OneLogin
583
612
  'role_id_array' => role_ids
584
613
  }
585
614
 
586
- response = HTTParty.put(
615
+ response = self.class.put(
587
616
  url,
588
617
  headers: authorized_headers,
589
618
  body: data.to_json
@@ -594,6 +623,7 @@ module OneLogin
594
623
  else
595
624
  @error = response.code.to_s
596
625
  @error_description = extract_error_message_from_response(response)
626
+ @error_attribute = extract_error_attribute_from_response(response)
597
627
  end
598
628
  rescue Exception => e
599
629
  @error = '500'
@@ -622,7 +652,7 @@ module OneLogin
622
652
  'role_id_array' => role_ids
623
653
  }
624
654
 
625
- response = HTTParty.put(
655
+ response = self.class.put(
626
656
  url,
627
657
  headers: authorized_headers,
628
658
  body: data.to_json
@@ -633,6 +663,7 @@ module OneLogin
633
663
  else
634
664
  @error = response.code.to_s
635
665
  @error_description = extract_error_message_from_response(response)
666
+ @error_attribute = extract_error_attribute_from_response(response)
636
667
  end
637
668
  rescue Exception => e
638
669
  @error = '500'
@@ -665,7 +696,7 @@ module OneLogin
665
696
  'validate_policy' => validate_policy
666
697
  }
667
698
 
668
- response = HTTParty.put(
699
+ response = self.class.put(
669
700
  url,
670
701
  headers: authorized_headers,
671
702
  body: data.to_json
@@ -676,6 +707,7 @@ module OneLogin
676
707
  else
677
708
  @error = response.code.to_s
678
709
  @error_description = extract_error_message_from_response(response)
710
+ @error_attribute = extract_error_attribute_from_response(response)
679
711
  end
680
712
  rescue Exception => e
681
713
  @error = '500'
@@ -713,7 +745,7 @@ module OneLogin
713
745
  data['password_salt'] = password_salt
714
746
  end
715
747
 
716
- response = HTTParty.put(
748
+ response = self.class.put(
717
749
  url,
718
750
  headers: authorized_headers,
719
751
  body: data.to_json
@@ -724,6 +756,7 @@ module OneLogin
724
756
  else
725
757
  @error = response.code.to_s
726
758
  @error_description = extract_error_message_from_response(response)
759
+ @error_attribute = extract_error_attribute_from_response(response)
727
760
  end
728
761
  rescue Exception => e
729
762
  @error = '500'
@@ -752,7 +785,7 @@ module OneLogin
752
785
  'state' => state
753
786
  }
754
787
 
755
- response = HTTParty.put(
788
+ response = self.class.put(
756
789
  url,
757
790
  headers: authorized_headers,
758
791
  body: data.to_json
@@ -763,6 +796,7 @@ module OneLogin
763
796
  else
764
797
  @error = response.code.to_s
765
798
  @error_description = extract_error_message_from_response(response)
799
+ @error_attribute = extract_error_attribute_from_response(response)
766
800
  end
767
801
  rescue Exception => e
768
802
  @error = '500'
@@ -791,7 +825,7 @@ module OneLogin
791
825
  'custom_attributes' => custom_attributes
792
826
  }
793
827
 
794
- response = HTTParty.put(
828
+ response = self.class.put(
795
829
  url,
796
830
  headers: authorized_headers,
797
831
  body: data.to_json
@@ -802,6 +836,7 @@ module OneLogin
802
836
  else
803
837
  @error = response.code.to_s
804
838
  @error_description = extract_error_message_from_response(response)
839
+ @error_attribute = extract_error_attribute_from_response(response)
805
840
  end
806
841
  rescue Exception => e
807
842
  @error = '500'
@@ -825,7 +860,7 @@ module OneLogin
825
860
  begin
826
861
  url = url_for(LOG_USER_OUT_URL, user_id)
827
862
 
828
- response = HTTParty.put(
863
+ response = self.class.put(
829
864
  url,
830
865
  headers: authorized_headers
831
866
  )
@@ -835,6 +870,7 @@ module OneLogin
835
870
  else
836
871
  @error = response.code.to_s
837
872
  @error_description = extract_error_message_from_response(response)
873
+ @error_attribute = extract_error_attribute_from_response(response)
838
874
  end
839
875
  rescue Exception => e
840
876
  @error = '500'
@@ -865,7 +901,7 @@ module OneLogin
865
901
  'locked_until' => minutes
866
902
  }
867
903
 
868
- response = HTTParty.put(
904
+ response = self.class.put(
869
905
  url,
870
906
  headers: authorized_headers,
871
907
  body: data.to_json
@@ -876,6 +912,7 @@ module OneLogin
876
912
  else
877
913
  @error = response.code.to_s
878
914
  @error_description = extract_error_message_from_response(response)
915
+ @error_attribute = extract_error_attribute_from_response(response)
879
916
  end
880
917
  rescue Exception => e
881
918
  @error = '500'
@@ -899,7 +936,7 @@ module OneLogin
899
936
  begin
900
937
  url = url_for(DELETE_USER_URL, user_id)
901
938
 
902
- response = HTTParty.delete(
939
+ response = self.class.delete(
903
940
  url,
904
941
  headers: authorized_headers
905
942
  )
@@ -909,6 +946,7 @@ module OneLogin
909
946
  else
910
947
  @error = response.code.to_s
911
948
  @error_description = extract_error_message_from_response(response)
949
+ @error_attribute = extract_error_attribute_from_response(response)
912
950
  end
913
951
  rescue Exception => e
914
952
  @error = '500'
@@ -941,7 +979,7 @@ module OneLogin
941
979
  raise "username_or_email, password and subdomain are required parameters"
942
980
  end
943
981
 
944
- response = HTTParty.post(
982
+ response = self.class.post(
945
983
  url,
946
984
  headers: authorized_headers.merge({ 'Custom-Allowed-Origin-Header-1' => allowed_origin }),
947
985
  body: query_params.to_json
@@ -986,7 +1024,7 @@ module OneLogin
986
1024
  data['otp_token'] = otp_token
987
1025
  end
988
1026
 
989
- response = HTTParty.post(
1027
+ response = self.class.post(
990
1028
  url,
991
1029
  headers: authorized_headers.merge({ 'Custom-Allowed-Origin-Header-1' => allowed_origin }),
992
1030
  body: data.to_json
@@ -1054,7 +1092,7 @@ module OneLogin
1054
1092
  begin
1055
1093
  url = url_for(GET_ROLE_URL, role_id)
1056
1094
 
1057
- response = HTTParty.get(
1095
+ response = self.class.get(
1058
1096
  url,
1059
1097
  headers: authorized_headers
1060
1098
  )
@@ -1149,7 +1187,7 @@ module OneLogin
1149
1187
  begin
1150
1188
  url = url_for(GET_EVENT_URL, event_id)
1151
1189
 
1152
- response = HTTParty.get(
1190
+ response = self.class.get(
1153
1191
  url,
1154
1192
  headers: authorized_headers
1155
1193
  )
@@ -1191,7 +1229,7 @@ module OneLogin
1191
1229
  begin
1192
1230
  url = url_for(CREATE_EVENT_URL)
1193
1231
 
1194
- response = HTTParty.post(
1232
+ response = self.class.post(
1195
1233
  url,
1196
1234
  headers: authorized_headers,
1197
1235
  body: event_params.to_json
@@ -1202,6 +1240,7 @@ module OneLogin
1202
1240
  else
1203
1241
  @error = response.code.to_s
1204
1242
  @error_description = extract_error_message_from_response(response)
1243
+ @error_attribute = extract_error_attribute_from_response(response)
1205
1244
  end
1206
1245
  rescue Exception => e
1207
1246
  @error = '500'
@@ -1256,7 +1295,7 @@ module OneLogin
1256
1295
  begin
1257
1296
  url = url_for(GET_GROUP_URL, group_id)
1258
1297
 
1259
- response = HTTParty.get(
1298
+ response = self.class.get(
1260
1299
  url,
1261
1300
  headers: authorized_headers
1262
1301
  )
@@ -1311,7 +1350,7 @@ module OneLogin
1311
1350
  data['ip_address'] = ip_address
1312
1351
  end
1313
1352
 
1314
- response = HTTParty.post(
1353
+ response = self.class.post(
1315
1354
  url,
1316
1355
  headers: authorized_headers,
1317
1356
  body: data.to_json
@@ -1364,7 +1403,7 @@ module OneLogin
1364
1403
  data['otp_token'] = otp_token
1365
1404
  end
1366
1405
 
1367
- response = HTTParty.post(
1406
+ response = self.class.post(
1368
1407
  url,
1369
1408
  headers: authorized_headers,
1370
1409
  body: data.to_json
@@ -1402,7 +1441,7 @@ module OneLogin
1402
1441
  begin
1403
1442
  url = url_for(GET_FACTORS_URL, user_id)
1404
1443
 
1405
- response = HTTParty.get(
1444
+ response = self.class.get(
1406
1445
  url,
1407
1446
  :headers => authorized_headers
1408
1447
  )
@@ -1451,7 +1490,7 @@ module OneLogin
1451
1490
  'number'=> number
1452
1491
  }
1453
1492
 
1454
- response = HTTParty.post(
1493
+ response = self.class.post(
1455
1494
  url,
1456
1495
  :headers => authorized_headers,
1457
1496
  body: data.to_json
@@ -1488,7 +1527,7 @@ module OneLogin
1488
1527
  begin
1489
1528
  url = url_for(GET_ENROLLED_FACTORS_URL, user_id)
1490
1529
 
1491
- response = HTTParty.get(
1530
+ response = self.class.get(
1492
1531
  url,
1493
1532
  :headers => authorized_headers
1494
1533
  )
@@ -1530,7 +1569,7 @@ module OneLogin
1530
1569
  begin
1531
1570
  url = url_for(ACTIVATE_FACTOR_URL, user_id, device_id)
1532
1571
 
1533
- response = HTTParty.post(
1572
+ response = self.class.post(
1534
1573
  url,
1535
1574
  headers: authorized_headers
1536
1575
  )
@@ -1587,7 +1626,7 @@ module OneLogin
1587
1626
  data['state_token'] = state_token
1588
1627
  end
1589
1628
 
1590
- response = HTTParty.post(
1629
+ response = self.class.post(
1591
1630
  url,
1592
1631
  headers: authorized_headers,
1593
1632
  body: data.to_json
@@ -1622,7 +1661,7 @@ module OneLogin
1622
1661
  begin
1623
1662
  url = url_for(REMOVE_FACTOR_URL, user_id, device_id)
1624
1663
 
1625
- response = HTTParty.delete(
1664
+ response = self.class.delete(
1626
1665
  url,
1627
1666
  :headers => authorized_headers
1628
1667
  )
@@ -1664,7 +1703,7 @@ module OneLogin
1664
1703
  'email'=> email
1665
1704
  }
1666
1705
 
1667
- response = HTTParty.post(
1706
+ response = self.class.post(
1668
1707
  url,
1669
1708
  headers: authorized_headers,
1670
1709
  body: data.to_json
@@ -1712,7 +1751,7 @@ module OneLogin
1712
1751
  data['personal_email'] = personal_email
1713
1752
  end
1714
1753
 
1715
- response = HTTParty.post(
1754
+ response = self.class.post(
1716
1755
  url,
1717
1756
  headers: authorized_headers,
1718
1757
  body: data.to_json
@@ -1744,7 +1783,7 @@ module OneLogin
1744
1783
  clean_error
1745
1784
 
1746
1785
  begin
1747
- response = HTTParty.get(
1786
+ response = self.class.get(
1748
1787
  EMBED_APP_URL,
1749
1788
  headers: {
1750
1789
  'User-Agent' => @user_agent
@@ -19,6 +19,7 @@ class Cursor
19
19
  @headers = options[:headers] || {}
20
20
  @params = options[:params] || {}
21
21
  @max_results = options[:max_results]
22
+ @client = options[:client]
22
23
 
23
24
  @collection = []
24
25
  @after_cursor = options.fetch(:after_cursor, nil)
@@ -49,7 +50,7 @@ class Cursor
49
50
  def fetch_next_page
50
51
  @params = @params.merge(after_cursor: @after_cursor) if @after_cursor
51
52
 
52
- response = HTTParty.get(
53
+ response = @client.get(
53
54
  @url,
54
55
  headers: @headers,
55
56
  query: @params
@@ -1,3 +1,3 @@
1
1
  module OneLogin
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onelogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - OneLogin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-16 00:00:00.000000000 Z
11
+ date: 2018-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -105,6 +105,7 @@ files:
105
105
  - examples/all-users-to-csv.rb
106
106
  - examples/create-user.rb
107
107
  - examples/events-to-csv.rb
108
+ - examples/last-app-user-login-to-csv.rb
108
109
  - examples/list-users.rb
109
110
  - examples/rails-custom-login-page/.gitignore
110
111
  - examples/rails-custom-login-page/.ruby-version