onelogin 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,6 +24,7 @@ class Cursor
24
24
  @headers = options[:headers] || {}
25
25
  @params = options[:params] || {}
26
26
  @max_results = options[:max_results]
27
+ @container = options[:container] || 'data'
27
28
 
28
29
  @collection = []
29
30
  @after_cursor = options.fetch(:after_cursor, nil)
@@ -64,10 +65,16 @@ class Cursor
64
65
 
65
66
  if json.nil?
66
67
  raise OneLogin::Api::ApiException.new("Response could not be parsed", 500)
67
- elsif !json.key?("data") && json["status"]["error"] == true
68
+ elsif !json.has_key?(@container) && json.has_key?('status') && json["status"]["error"] == true
68
69
  raise OneLogin::Api::ApiException.new(extract_error_message_from_response(response), json["status"]["code"])
70
+ elsif !json.has_key?(@container) && json.has_key?('statusCode')
71
+ raise OneLogin::Api::ApiException.new(extract_error_message_from_response(response), json["statusCode"])
69
72
  else
70
- results = json['data'].flatten
73
+
74
+ results = json[@container]
75
+ if @container == "data"
76
+ results = results.flatten
77
+ end
71
78
 
72
79
  @collection += if results_remaining < results.size
73
80
  results.slice(0, results_remaining)
@@ -81,9 +88,13 @@ class Cursor
81
88
  end
82
89
 
83
90
  def after_cursor(json)
84
- return unless json['pagination']
85
-
86
- json['pagination'].fetch('after_cursor', nil)
91
+ value = nil
92
+ if json.has_key?('pagination')
93
+ value = json['pagination'].fetch('after_cursor', nil)
94
+ elsif json.has_key?('afterCursor')
95
+ value = json['afterCursor']
96
+ end
97
+ value
87
98
  end
88
99
 
89
100
  def results_remaining
@@ -8,11 +8,13 @@ require 'onelogin/api/models/group'
8
8
  require 'onelogin/api/models/mfa'
9
9
  require 'onelogin/api/models/onelogin_token'
10
10
  require 'onelogin/api/models/otp_device'
11
+ require 'onelogin/api/models/privilege'
11
12
  require 'onelogin/api/models/rate_limit'
12
13
  require 'onelogin/api/models/role'
13
14
  require 'onelogin/api/models/saml_endpoint_response'
14
15
  require 'onelogin/api/models/session_token_info'
15
16
  require 'onelogin/api/models/session_token_mfa_info'
17
+ require 'onelogin/api/models/statement'
16
18
  require 'onelogin/api/models/user_data'
17
19
  require 'onelogin/api/models/user_metadata'
18
20
  require 'onelogin/api/models/user'
@@ -0,0 +1,51 @@
1
+ require 'onelogin/api/models/statement'
2
+
3
+ module OneLogin
4
+ module Api
5
+ module Models
6
+
7
+ class Privilege
8
+
9
+ attr_accessor :id, :name, :version, :statements
10
+
11
+ def initialize(*args)
12
+ if args.length == 1
13
+ self.from_data(args[0])
14
+ else
15
+ self.from_values(args[0],args[1], args[2], args[3])
16
+ end
17
+ end
18
+
19
+ def from_data(data)
20
+ @id = data['id']
21
+ @name = data['name']
22
+ @version = data['privilege']['Version']
23
+ statements_data = data['privilege']['Statement']
24
+ @statements = []
25
+ for statement_data in statements_data
26
+ @statements << Statement.new(statement_data)
27
+ end
28
+ end
29
+
30
+ def from_values(id, name, version, statements)
31
+ @id = id
32
+ @name = name
33
+ @version = version
34
+ @statements = []
35
+ for statement in statements
36
+ if statement.instance_of?(Statement)
37
+ @statements << statement
38
+ elsif statement.instance_of?(Hash) && statement.has_key?('Effect') && statement.has_key?('Action') && statement.has_key?('Scope')
39
+ @statements << Statement.new(statement['Effect'], statement['Action'], statement['Scope'])
40
+ end
41
+ end
42
+ end
43
+
44
+ def get_valid_actions
45
+ return
46
+ Constants.VALID_ACTIONS
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,36 @@
1
+ module OneLogin
2
+ module Api
3
+ module Models
4
+
5
+ class Statement
6
+
7
+ attr_accessor :effect, :actions, :scopes
8
+
9
+ def initialize(*args)
10
+ if args.length == 1
11
+ self.from_data(args[0])
12
+ else
13
+ self.from_values(args[0], args[1], args[2])
14
+ end
15
+ end
16
+
17
+ def from_data(data)
18
+ @effect = data['Effect']? data['Effect'] : "Allow"
19
+ @actions = data['Action']? data['Action'] : []
20
+ @scopes = data['Scope']? data['Scope'] : []
21
+ end
22
+
23
+ def from_values(effect, actions, scopes)
24
+ @effect = effect
25
+ @actions = actions
26
+ @scopes = scopes
27
+ end
28
+
29
+ def get_valid_actions
30
+ return
31
+ Constants.VALID_ACTIONS
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -67,6 +67,92 @@ module OneLogin
67
67
 
68
68
  # Embed Apps URL
69
69
  EMBED_APP_URL = "https://api.onelogin.com/client/apps/embed2"
70
+
71
+ # Privileges URLS
72
+ LIST_PRIVILEGES_URL = "https://api.%s.onelogin.com/api/1/privileges"
73
+ CREATE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges"
74
+ UPDATE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s"
75
+ GET_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s"
76
+ DELETE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s"
77
+ GET_ROLES_ASSIGNED_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/roles"
78
+ ASSIGN_ROLES_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/roles"
79
+ REMOVE_ROLE_FROM_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/roles/%s"
80
+ GET_USERS_ASSIGNED_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/users"
81
+ ASSIGN_USERS_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/users"
82
+ REMOVE_USER_FROM_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/users/%s"
83
+ VALID_ACTIONS = [
84
+ "apps:List",
85
+ "apps:Get",
86
+ "apps:Create",
87
+ "apps:Update",
88
+ "apps:Delete",
89
+ "apps:ManageRoles",
90
+ "apps:ManageUsers",
91
+ "directories:List",
92
+ "directories:Get",
93
+ "directories:Create",
94
+ "directories:Update",
95
+ "directories:Delete",
96
+ "directories:SyncUsers",
97
+ "directories:RefreshSchema",
98
+ "events:List",
99
+ "events:Get",
100
+ "mappings:List",
101
+ "mappings:Get",
102
+ "mappings:Create",
103
+ "mappings:Update",
104
+ "mappings:Delete",
105
+ "mappings:ReapplyAll",
106
+ "policies:List",
107
+ "policies:user:Get",
108
+ "policies:user:Create",
109
+ "policies:user:Update",
110
+ "policies:user:Delete",
111
+ "policies:app:Get",
112
+ "policies:app:Create",
113
+ "policies:app:Update",
114
+ "policies:app:Delete",
115
+ "privileges:List",
116
+ "privileges:Get",
117
+ "privileges:Create",
118
+ "privileges:Update",
119
+ "privileges:Delete",
120
+ "privileges:ListUsers",
121
+ "privileges:ListRoles",
122
+ "privileges:ManageUsers",
123
+ "privileges:ManageRoles",
124
+ "reports:List",
125
+ "reports:Get",
126
+ "reports:Create",
127
+ "reports:Update",
128
+ "reports:Delete",
129
+ "reports:Run",
130
+ "roles:List",
131
+ "roles:Get",
132
+ "roles:Create",
133
+ "roles:Update",
134
+ "roles:Delete",
135
+ "roles:ManageUsers",
136
+ "roles:ManageApps",
137
+ "trustedidp:List",
138
+ "trustedidp:Get",
139
+ "trustedidp:Create",
140
+ "trustedidp:Update",
141
+ "trustedidp:Delete",
142
+ "users:List",
143
+ "users:Get",
144
+ "users:Create",
145
+ "users:Update",
146
+ "users:Delete",
147
+ "users:Unlock",
148
+ "users:ResetPassword",
149
+ "users:ForceLogout",
150
+ "users:Invite",
151
+ "users:ReapplyMappings",
152
+ "users:ManageRoles",
153
+ "users:ManageApps",
154
+ "users:GenerateTempMfaToken"
155
+ ]
70
156
  end
71
157
  end
72
158
  end
@@ -5,18 +5,24 @@ module OneLogin
5
5
  def extract_error_message_from_response(response)
6
6
  message = ''
7
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']
8
+ if content
9
+ if content.has_key?('status')
10
+ status = content['status']
11
+ if status.has_key?('message')
12
+ if status['message'].instance_of?(Hash)
13
+ if status['message'].has_key?('description')
14
+ message = status['message']['description']
15
+ end
16
+ else
17
+ message = status['message']
14
18
  end
15
- else
16
- message = status['message']
19
+ elsif status.has_key?('type')
20
+ message = status['type']
17
21
  end
18
- elsif status.has_key?('type')
19
- message = status['type']
22
+ elsif content.has_key?('message')
23
+ message = content['message']
24
+ elsif content.has_key?('name')
25
+ message = content['name']
20
26
  end
21
27
  end
22
28
  message
@@ -36,6 +42,14 @@ module OneLogin
36
42
  attribute
37
43
  end
38
44
 
45
+ def extract_status_code_from_response(response)
46
+ status_code = ''
47
+ content = JSON.parse(response.body)
48
+ if content && content.has_key?('statusCode')
49
+ status_code = content['statusCode']
50
+ end
51
+ status_code
52
+ end
39
53
  end
40
54
  end
41
55
  end
@@ -1,3 +1,3 @@
1
1
  module OneLogin
2
- VERSION = "1.3.0"
2
+ VERSION = "1.3.1"
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.3.0
4
+ version: 1.3.1
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-27 00:00:00.000000000 Z
11
+ date: 2019-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -228,11 +228,13 @@ files:
228
228
  - lib/onelogin/api/models/mfa.rb
229
229
  - lib/onelogin/api/models/onelogin_token.rb
230
230
  - lib/onelogin/api/models/otp_device.rb
231
+ - lib/onelogin/api/models/privilege.rb
231
232
  - lib/onelogin/api/models/rate_limit.rb
232
233
  - lib/onelogin/api/models/role.rb
233
234
  - lib/onelogin/api/models/saml_endpoint_response.rb
234
235
  - lib/onelogin/api/models/session_token_info.rb
235
236
  - lib/onelogin/api/models/session_token_mfa_info.rb
237
+ - lib/onelogin/api/models/statement.rb
236
238
  - lib/onelogin/api/models/user.rb
237
239
  - lib/onelogin/api/models/user_data.rb
238
240
  - lib/onelogin/api/models/user_metadata.rb
@@ -263,7 +265,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
263
265
  version: '0'
264
266
  requirements: []
265
267
  rubyforge_project: http://www.rubygems.org/gems/onelogin-ruby-sdk
266
- rubygems_version: 2.4.8
268
+ rubygems_version: 2.2.2
267
269
  signing_key:
268
270
  specification_version: 4
269
271
  summary: OneLogin's Ruby SDK.