onelogin 1.2.3 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/examples/all-users-to-csv.rb +2 -1
- data/examples/last-app-user-login-to-csv.rb +2 -1
- data/lib/onelogin/api/apiexception.rb +10 -0
- data/lib/onelogin/api/client.rb +39 -58
- data/lib/onelogin/api/cursor.rb +18 -8
- data/lib/onelogin/api/models/user.rb +5 -2
- data/lib/onelogin/api/models/user_data.rb +1 -1
- data/lib/onelogin/api/util.rb +2 -0
- data/lib/onelogin/api/util/parser.rb +42 -0
- data/lib/onelogin/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fca4bd8901e5234c12acd2fcbf85179634aeb25
|
4
|
+
data.tar.gz: 8b7e7cb38fac5a432812cd12705c55e4539f4fac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 671935da852605381ade21ea1ee8dffb13f788a6ee50af30842a7e4edc5edba97b30a112280f69a9ec817c73b20f6e65eec189e95cc1b3c23c47a9d86a25bc3c
|
7
|
+
data.tar.gz: bc7473a57abbbcb9fd20637c589d32f57e27f29089dd1af4e9d641193c019c14267c331ea6aad91c8a1d0368029a9eebfd0c84928d5d177bc5ae39f400a2b1c7
|
data/README.md
CHANGED
@@ -41,6 +41,7 @@ If you don't have an account you can [sign up for a free developer account here]
|
|
41
41
|
|client_secret|Required: A valid OneLogin API client_secret|
|
42
42
|
|region| Optional: `us` or `eu`. Defaults to `us` |
|
43
43
|
|max_results| Optional: Defaults to 1000 |
|
44
|
+
|timeout| Optional: Defaults to 60 (requires httparty > 0.16.2) |
|
44
45
|
|
45
46
|
```ruby
|
46
47
|
require 'onelogin'
|
@@ -12,7 +12,8 @@ require 'onelogin'
|
|
12
12
|
client = OneLogin::Api::Client.new(
|
13
13
|
client_id: 'ONELOGIN_CLIENT_ID',
|
14
14
|
client_secret:'ONELOGIN_CLIENT_SECRET',
|
15
|
-
region: 'us'
|
15
|
+
region: 'us',
|
16
|
+
max_results: 50000
|
16
17
|
)
|
17
18
|
|
18
19
|
attribute_names = ['id', 'external_id', 'email', 'username', 'firstname', 'lastname', 'distinguished_name',
|
data/lib/onelogin/api/client.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'onelogin/version'
|
2
|
-
require 'onelogin/api/
|
2
|
+
require 'onelogin/api/apiexception'
|
3
3
|
require 'onelogin/api/cursor'
|
4
|
+
require 'onelogin/api/util'
|
4
5
|
require 'json'
|
5
6
|
require 'httparty'
|
6
7
|
require 'nokogiri'
|
@@ -38,6 +39,10 @@ module OneLogin
|
|
38
39
|
@region = options[:region] || 'us'
|
39
40
|
@max_results = options[:max_results] || 1000
|
40
41
|
|
42
|
+
if options[:timeout] and defined? self.class.default_timeout
|
43
|
+
self.class.default_timeout options[:timeout]
|
44
|
+
end
|
45
|
+
|
41
46
|
if options[:proxy_host]
|
42
47
|
self.class.http_proxy options[:proxy_host], options[:proxy_port], options[:proxy_user], options[:proxy_pass]
|
43
48
|
end
|
@@ -59,40 +64,6 @@ module OneLogin
|
|
59
64
|
@error_attribute = nil
|
60
65
|
end
|
61
66
|
|
62
|
-
def extract_error_message_from_response(response)
|
63
|
-
message = ''
|
64
|
-
content = JSON.parse(response.body)
|
65
|
-
if content && content.has_key?('status')
|
66
|
-
status = content['status']
|
67
|
-
if status.has_key?('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
|
75
|
-
elsif status.has_key?('type')
|
76
|
-
message = status['type']
|
77
|
-
end
|
78
|
-
end
|
79
|
-
message
|
80
|
-
end
|
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
|
-
|
96
67
|
def expired?
|
97
68
|
Time.now.utc > @expiration
|
98
69
|
end
|
@@ -202,11 +173,16 @@ module OneLogin
|
|
202
173
|
|
203
174
|
if response.code == 200
|
204
175
|
json_data = JSON.parse(response.body)
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
176
|
+
if json_data.has_key?('status')
|
177
|
+
@error = json_data['status']['code'].to_s
|
178
|
+
@error_description = extract_error_message_from_response(response)
|
179
|
+
else
|
180
|
+
token = OneLogin::Api::Models::OneLoginToken.new(json_data)
|
181
|
+
@access_token = token.access_token
|
182
|
+
@refresh_token = token.refresh_token
|
183
|
+
@expiration = token.created_at + token.expires_in
|
184
|
+
return token
|
185
|
+
end
|
210
186
|
else
|
211
187
|
@error = response.code.to_s
|
212
188
|
@error_description = extract_error_message_from_response(response)
|
@@ -244,11 +220,16 @@ module OneLogin
|
|
244
220
|
|
245
221
|
if response.code == 200
|
246
222
|
json_data = JSON.parse(response.body)
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
223
|
+
if json_data.has_key?('status')
|
224
|
+
@error = json_data['status']['code'].to_s
|
225
|
+
@error_description = extract_error_message_from_response(response)
|
226
|
+
else
|
227
|
+
token = OneLogin::Api::Models::OneLoginToken.new(json_data)
|
228
|
+
@access_token = token.access_token
|
229
|
+
@refresh_token = token.refresh_token
|
230
|
+
@expiration = token.created_at + token.expires_in
|
231
|
+
return token
|
232
|
+
end
|
252
233
|
else
|
253
234
|
@error = response.code.to_s
|
254
235
|
@error_description = extract_error_message_from_response(response)
|
@@ -1140,13 +1121,13 @@ module OneLogin
|
|
1140
1121
|
prepare_token
|
1141
1122
|
|
1142
1123
|
begin
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1124
|
+
options = {
|
1125
|
+
model: OneLogin::Api::Models::EventType,
|
1126
|
+
headers: authorized_headers,
|
1127
|
+
max_results: @max_results
|
1128
|
+
}
|
1148
1129
|
|
1149
|
-
|
1130
|
+
return Cursor.new(self.class, url_for(GET_EVENT_TYPES_URL), options)
|
1150
1131
|
|
1151
1132
|
rescue Exception => e
|
1152
1133
|
@error = '500'
|
@@ -1168,14 +1149,14 @@ module OneLogin
|
|
1168
1149
|
prepare_token
|
1169
1150
|
|
1170
1151
|
begin
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1152
|
+
options = {
|
1153
|
+
model: OneLogin::Api::Models::Event,
|
1154
|
+
headers: authorized_headers,
|
1155
|
+
max_results: @max_results,
|
1156
|
+
params: params
|
1157
|
+
}
|
1177
1158
|
|
1178
|
-
|
1159
|
+
return Cursor.new(self.class, url_for(GET_EVENTS_URL), options)
|
1179
1160
|
|
1180
1161
|
rescue Exception => e
|
1181
1162
|
@error = '500'
|
data/lib/onelogin/api/cursor.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'onelogin/api/apiexception'
|
2
|
+
require 'onelogin/api/util'
|
3
|
+
|
1
4
|
# Cursor
|
2
5
|
#
|
3
6
|
# Used for paginating requests to the OneLogin API
|
@@ -5,6 +8,7 @@
|
|
5
8
|
# Returns an enumerable object
|
6
9
|
class Cursor
|
7
10
|
include Enumerable
|
11
|
+
include OneLogin::Api::Util
|
8
12
|
|
9
13
|
# Create a new instance of the Cursor.
|
10
14
|
#
|
@@ -58,16 +62,22 @@ class Cursor
|
|
58
62
|
|
59
63
|
json = response.parsed_response
|
60
64
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
+
if json.nil?
|
66
|
+
raise OneLogin::Api::ApiException.new("Response could not be parsed", 500)
|
67
|
+
elsif !json.key?("data") && json["status"]["error"] == true
|
68
|
+
raise OneLogin::Api::ApiException.new(extract_error_message_from_response(response), json["status"]["code"])
|
65
69
|
else
|
66
|
-
results
|
67
|
-
end
|
70
|
+
results = json['data'].flatten
|
68
71
|
|
69
|
-
|
70
|
-
|
72
|
+
@collection += if results_remaining < results.size
|
73
|
+
results.slice(0, results_remaining)
|
74
|
+
else
|
75
|
+
results
|
76
|
+
end
|
77
|
+
|
78
|
+
@after_cursor = after_cursor(json)
|
79
|
+
@last_cursor_empty = @after_cursor.nil?
|
80
|
+
end
|
71
81
|
end
|
72
82
|
|
73
83
|
def after_cursor(json)
|
@@ -7,7 +7,7 @@ module OneLogin
|
|
7
7
|
attr_accessor :id, :external_id, :email, :username, :firstname, :lastname, :distinguished_name,
|
8
8
|
:phone, :company, :department, :status, :state, :member_of, :samaccountname, :userprincipalname,
|
9
9
|
:group_id, :role_ids, :custom_attributes, :openid_name, :locale_code, :comment, :directory_id,
|
10
|
-
:title, :manager_ad_id, :trusted_idp_id, :activated_at, :created_at, :updated_at,
|
10
|
+
:title, :manager_ad_id, :trusted_idp_id, :manager_user_id, :activated_at, :created_at, :updated_at,
|
11
11
|
:password_changed_at, :invitation_sent_at, :invalid_login_attempts, :last_login, :locked_until
|
12
12
|
|
13
13
|
def initialize(data)
|
@@ -36,6 +36,7 @@ module OneLogin
|
|
36
36
|
@directory_id = data['directory_id']
|
37
37
|
@manager_ad_id = data['manager_ad_id']
|
38
38
|
@trusted_idp_id = data['trusted_idp_id']
|
39
|
+
@manager_user_id = data['manager_user_id']
|
39
40
|
@activated_at = data['activated_at']? Time.iso8601(data['activated_at']) : nil
|
40
41
|
@created_at = data['created_at']? Time.iso8601(data['created_at']) : nil
|
41
42
|
@updated_at = data['updated_at']? Time.iso8601(data['updated_at']) : nil
|
@@ -77,6 +78,7 @@ module OneLogin
|
|
77
78
|
user_data.directory_id = @directory_id
|
78
79
|
user_data.manager_ad_id = @manager_ad_id
|
79
80
|
user_data.trusted_idp_id = @trusted_idp_id
|
81
|
+
user_data.manager_user_id = @manager_user_id
|
80
82
|
return user_data
|
81
83
|
end
|
82
84
|
|
@@ -123,7 +125,8 @@ module OneLogin
|
|
123
125
|
"openid_name"=> self.openid_name,
|
124
126
|
"directory_id"=> self.directory_id,
|
125
127
|
"manager_ad_id"=> self.manager_ad_id,
|
126
|
-
"trusted_idp_id"=> self.trusted_idp_id
|
128
|
+
"trusted_idp_id"=> self.trusted_idp_id,
|
129
|
+
"manager_user_id"=> self.manager_user_id
|
127
130
|
}
|
128
131
|
end
|
129
132
|
end
|
@@ -6,7 +6,7 @@ module OneLogin
|
|
6
6
|
|
7
7
|
attr_accessor :id, :external_id, :email, :username, :firstname, :lastname, :distinguished_name,
|
8
8
|
:phone, :company, :department, :status, :state, :member_of, :samaccountname, :userprincipalname,
|
9
|
-
:title, :openid_name, :locale_code, :directory_id, :manager_ad_id, :trusted_idp_id
|
9
|
+
:title, :openid_name, :locale_code, :directory_id, :manager_ad_id, :trusted_idp_id, :manager_user_id
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
data/lib/onelogin/api/util.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'onelogin/api/util/constants'
|
2
2
|
require 'onelogin/api/util/url_builder'
|
3
|
+
require 'onelogin/api/util/parser'
|
3
4
|
|
4
5
|
module OneLogin
|
5
6
|
module Api
|
6
7
|
module Util
|
7
8
|
include OneLogin::Api::Util::Constants
|
8
9
|
include OneLogin::Api::Util::UrlBuilder
|
10
|
+
include OneLogin::Api::Util::Parser
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module OneLogin
|
2
|
+
module Api
|
3
|
+
module Util
|
4
|
+
module Parser
|
5
|
+
def extract_error_message_from_response(response)
|
6
|
+
message = ''
|
7
|
+
content = JSON.parse(response.body)
|
8
|
+
if content && content.has_key?('status')
|
9
|
+
status = content['status']
|
10
|
+
if status.has_key?('message')
|
11
|
+
if status['message'].instance_of?(Hash)
|
12
|
+
if status['message'].has_key?('description')
|
13
|
+
message = status['message']['description']
|
14
|
+
end
|
15
|
+
else
|
16
|
+
message = status['message']
|
17
|
+
end
|
18
|
+
elsif status.has_key?('type')
|
19
|
+
message = status['type']
|
20
|
+
end
|
21
|
+
end
|
22
|
+
message
|
23
|
+
end
|
24
|
+
|
25
|
+
def extract_error_attribute_from_response(response)
|
26
|
+
attribute = nil
|
27
|
+
content = JSON.parse(response.body)
|
28
|
+
if content && content.has_key?('status')
|
29
|
+
status = content['status']
|
30
|
+
if status.has_key?('message') && status['message'].instance_of?(Hash)
|
31
|
+
if status['message'].has_key?('attribute')
|
32
|
+
attribute = status['message']['attribute']
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
attribute
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/onelogin/version.rb
CHANGED
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.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OneLogin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -213,6 +213,7 @@ files:
|
|
213
213
|
- examples/rails-custom-login-page/vendor/.keep
|
214
214
|
- lib/onelogin.rb
|
215
215
|
- lib/onelogin/api.rb
|
216
|
+
- lib/onelogin/api/apiexception.rb
|
216
217
|
- lib/onelogin/api/client.rb
|
217
218
|
- lib/onelogin/api/cursor.rb
|
218
219
|
- lib/onelogin/api/models.rb
|
@@ -237,6 +238,7 @@ files:
|
|
237
238
|
- lib/onelogin/api/models/user_metadata.rb
|
238
239
|
- lib/onelogin/api/util.rb
|
239
240
|
- lib/onelogin/api/util/constants.rb
|
241
|
+
- lib/onelogin/api/util/parser.rb
|
240
242
|
- lib/onelogin/api/util/url_builder.rb
|
241
243
|
- lib/onelogin/version.rb
|
242
244
|
- onelogin.gemspec
|
@@ -261,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
261
263
|
version: '0'
|
262
264
|
requirements: []
|
263
265
|
rubyforge_project: http://www.rubygems.org/gems/onelogin-ruby-sdk
|
264
|
-
rubygems_version: 2.
|
266
|
+
rubygems_version: 2.4.8
|
265
267
|
signing_key:
|
266
268
|
specification_version: 4
|
267
269
|
summary: OneLogin's Ruby SDK.
|