matterhorn_whymper 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/matterhorn/endpoint/group.rb +62 -30
- data/lib/matterhorn/endpoint/user.rb +184 -0
- data/lib/matterhorn_whymper/version.rb +1 -1
- data/lib/matterhorn_whymper.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Njk1NzdhNmE5NjdiNjBmNWY4ZGY4ODk0NjUyM2UxYWNjZjdjNzMyMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDU1ZDcxZTc5ZjYxMTk2MWU5ZGYxMjc3NzU0YjBkNDJkOGQ4ODQyMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OGQ1M2ZjMWZjMDY1MWFhMTc2Y2RhMTJhMmQ5OGJkNjhiMjhmNzllZmZhNzZj
|
10
|
+
MDRkNGNiZDU4ZjlkNDM5YWNhNzBkZTUzY2Q2ZTYyNWRhNzQyOTJmODAzYjYy
|
11
|
+
NjliYzQwNjZlODgwOWU4ZDVmMWY0MTRkOTk1MTQzMWQ4MWMxYzc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MmNiMThhOTg3MmUzNzcyMmY2ZjU5MTBhMzUyODlkNWExNWMwNjUxOGYxZTcz
|
14
|
+
ODZjZDViNWIzY2Q2M2YwYzdjMjI0M2UyY2QwNzVkM2JmNmRkZjU1NTI2YTBm
|
15
|
+
MmMxZjkxZjZhOGVmNTIyY2M5MzY0NjYzNTQyZmI3MTMwZmFmMTU=
|
@@ -35,11 +35,28 @@ class Matterhorn::Endpoint::Group < Matterhorn::Endpoint
|
|
35
35
|
|
36
36
|
# --------------------------------------------------------------------------------------- read ---
|
37
37
|
|
38
|
+
# Return a list of groups as a hash
|
39
|
+
# {
|
40
|
+
# 'groups' => {
|
41
|
+
# 'group' => [
|
42
|
+
# {
|
43
|
+
# 'id' => <group_id>,
|
44
|
+
# 'name' => <name>,
|
45
|
+
# 'description' => <description>,
|
46
|
+
# 'role' => <role>,
|
47
|
+
# 'memebers' => [ <username>, ... ],
|
48
|
+
# 'roles' => [ <role>, ...],
|
49
|
+
# },
|
50
|
+
# ...
|
51
|
+
# ]
|
52
|
+
# }
|
53
|
+
# }
|
54
|
+
#
|
38
55
|
def index(offset = 0, limit = 100)
|
39
56
|
groups = {}
|
40
57
|
begin
|
41
58
|
split_response http_endpoint_client.get(
|
42
|
-
"groups/groups.json"
|
59
|
+
"groups/groups.json?limit=#{limit}&offset=#{offset}"
|
43
60
|
)
|
44
61
|
groups = filter_groups(JSON.parse(response_body))
|
45
62
|
rescue => ex
|
@@ -114,40 +131,55 @@ class Matterhorn::Endpoint::Group < Matterhorn::Endpoint
|
|
114
131
|
|
115
132
|
|
116
133
|
def filter_groups(respons_hash)
|
117
|
-
|
118
|
-
|
134
|
+
unless respons_hash['groups']['group'].kind_of?(Array)
|
135
|
+
respons_hash['groups']['group'] = [ respons_hash['groups']['group'] ]
|
136
|
+
end
|
137
|
+
groups = { 'groups' => { 'group' => [] } }
|
119
138
|
respons_hash['groups']['group'].each do |group_hash|
|
120
|
-
|
121
|
-
groups[
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
139
|
+
next unless group_hash.kind_of?(Hash)
|
140
|
+
groups['groups']['group'] << {
|
141
|
+
'id' => group_hash['id'],
|
142
|
+
'name' => group_hash['name'],
|
143
|
+
'description' => group_hash['description'],
|
144
|
+
'role' => group_hash['role'],
|
145
|
+
'members' => filter_members(group_hash['members']),
|
146
|
+
'roles' => filter_roles(group_hash['roles'])
|
126
147
|
}
|
148
|
+
end
|
149
|
+
groups
|
150
|
+
end
|
127
151
|
|
128
|
-
groups[group_hash['id']][:members] =
|
129
|
-
if group_hash['members'].nil? then []
|
130
|
-
elsif group_hash['members'].kind_of?(String) then []
|
131
|
-
elsif group_hash['members']['member'].nil? then []
|
132
|
-
elsif group_hash['members']['member'].kind_of?(Array) then group_hash['members']['member']
|
133
|
-
elsif group_hash['members']['member'].kind_of?(String) then [ group_hash['members']['member'] ]
|
134
|
-
else []
|
135
|
-
end
|
136
|
-
|
137
|
-
groups[group_hash['id']][:roles] =
|
138
|
-
if group_hash['roles'].nil? then []
|
139
|
-
elsif group_hash['roles'].kind_of?(String) &&
|
140
|
-
group_hash['roles'].empty? then []
|
141
|
-
elsif group_hash['roles'].kind_of?(String) &&
|
142
|
-
!group_hash['roles'].empty? then [ group_hash['roles'] ]
|
143
|
-
elsif group_hash['roles']['role'].nil? then []
|
144
|
-
elsif group_hash['roles']['role'].kind_of?(Array) then group_hash['roles']['role'].map { |r| r['name'] }
|
145
|
-
elsif group_hash['roles']['role'].kind_of?(Hash) then [ group_hash['roles']['role']['name'] ]
|
146
|
-
else []
|
147
|
-
end
|
148
152
|
|
153
|
+
def filter_members(members_hash)
|
154
|
+
member_list = { 'member' => [] }
|
155
|
+
return member_list if members_hash.nil? ||
|
156
|
+
!members_hash.kind_of?(Hash) ||
|
157
|
+
members_hash['member'].nil?
|
158
|
+
unless members_hash['member'].kind_of?(Array)
|
159
|
+
members_hash['member'] = [ members_hash['member'] ]
|
149
160
|
end
|
150
|
-
|
161
|
+
members_hash['member'].each do |member|
|
162
|
+
next unless member.kind_of?(String)
|
163
|
+
member_list['member'] << member
|
164
|
+
end
|
165
|
+
member_list
|
166
|
+
end
|
167
|
+
|
168
|
+
|
169
|
+
def filter_roles(roles_hash)
|
170
|
+
role_list = { 'role' => [] }
|
171
|
+
return role_list if roles_hash.nil? ||
|
172
|
+
!roles_hash.kind_of?(Hash) ||
|
173
|
+
roles_hash['role'].nil?
|
174
|
+
unless roles_hash['role'].kind_of?(Array)
|
175
|
+
roles_hash['role'] = [ roles_hash['role'] ]
|
176
|
+
end
|
177
|
+
roles_hash['role'].each do |role|
|
178
|
+
next unless role.kind_of?(Hash) &&
|
179
|
+
!role['name'].nil?
|
180
|
+
role_list['role'] << role['name']
|
181
|
+
end
|
182
|
+
role_list
|
151
183
|
end
|
152
184
|
|
153
185
|
|
@@ -0,0 +1,184 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
# =================================================================== Matterhorn::Endpoint::User ===
|
4
|
+
|
5
|
+
class Matterhorn::Endpoint::User < Matterhorn::Endpoint
|
6
|
+
|
7
|
+
|
8
|
+
# -------------------------------------------------------------------------- endpoint methodes ---
|
9
|
+
|
10
|
+
# ------------------------------------------------------------------------------------- create ---
|
11
|
+
|
12
|
+
# Create a new user with username, password, name, email and a list of roles.
|
13
|
+
#
|
14
|
+
def create(username, password, name, email, roles)
|
15
|
+
done = false
|
16
|
+
begin
|
17
|
+
split_response http_endpoint_client.post(
|
18
|
+
"user-utils",
|
19
|
+
convert_to_form_param(username, password, name, email, roles)
|
20
|
+
)
|
21
|
+
done = true
|
22
|
+
rescue => ex
|
23
|
+
exception_handler('create', ex, {
|
24
|
+
409 => "An user with this username: #{username} already exist!"
|
25
|
+
}
|
26
|
+
)
|
27
|
+
end
|
28
|
+
done
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# --------------------------------------------------------------------------------------- read ---
|
33
|
+
|
34
|
+
# Return a list of users as a hash
|
35
|
+
# {
|
36
|
+
# 'users' => {
|
37
|
+
# 'user' => [
|
38
|
+
# {
|
39
|
+
# 'username' => <username>,
|
40
|
+
# 'name' => <name>,
|
41
|
+
# 'email' => <email>,
|
42
|
+
# 'roles' => [ <role>, ...]
|
43
|
+
# },
|
44
|
+
# ...
|
45
|
+
# ]
|
46
|
+
# }
|
47
|
+
# }
|
48
|
+
#
|
49
|
+
def index(offset = 0, limit = 100)
|
50
|
+
users = {}
|
51
|
+
begin
|
52
|
+
split_response http_endpoint_client.get(
|
53
|
+
"/user-utils/users.json?limit=#{limit}&offset=#{offset}"
|
54
|
+
)
|
55
|
+
users = filter_users(JSON.parse(response_body))
|
56
|
+
rescue => ex
|
57
|
+
exception_handler('index', ex, {})
|
58
|
+
end
|
59
|
+
users
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
# Return a given user as a hash
|
64
|
+
# {
|
65
|
+
# 'user' => {
|
66
|
+
# 'username' => <username>,
|
67
|
+
# 'name' => <name>,
|
68
|
+
# 'email' => <email>,
|
69
|
+
# 'roles' => [ <role>, ...]
|
70
|
+
# }
|
71
|
+
# }
|
72
|
+
#
|
73
|
+
def get(username)
|
74
|
+
user = nil
|
75
|
+
begin
|
76
|
+
split_response http_endpoint_client.get(
|
77
|
+
"user-utils/#{username}.json"
|
78
|
+
)
|
79
|
+
user = { 'user' => filter_user(JSON.parse(response_body)['user']) }
|
80
|
+
rescue => ex
|
81
|
+
exception_handler('create', ex, {
|
82
|
+
404 => "User[#{username}] not found!"
|
83
|
+
}
|
84
|
+
)
|
85
|
+
end
|
86
|
+
user
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
# ------------------------------------------------------------------------------------- update ---
|
91
|
+
|
92
|
+
def update(username, password, name, email, roles)
|
93
|
+
done = false
|
94
|
+
begin
|
95
|
+
split_response http_endpoint_client.put(
|
96
|
+
"user-utils/#{username}.json",
|
97
|
+
convert_to_form_param(nil, password, name, email, roles)
|
98
|
+
)
|
99
|
+
done = true
|
100
|
+
rescue => ex
|
101
|
+
exception_handler('create', ex, {
|
102
|
+
404 => "User[#{username}] not found!"
|
103
|
+
}
|
104
|
+
)
|
105
|
+
end
|
106
|
+
done
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
# ------------------------------------------------------------------------------------- delete ---
|
111
|
+
|
112
|
+
def delete(username)
|
113
|
+
done = false
|
114
|
+
begin
|
115
|
+
split_response http_endpoint_client.delete(
|
116
|
+
"user-utils/#{username}.json"
|
117
|
+
)
|
118
|
+
done = true
|
119
|
+
rescue => ex
|
120
|
+
exception_handler('create', ex, {
|
121
|
+
404 => "User[#{username}] not found!"
|
122
|
+
}
|
123
|
+
)
|
124
|
+
end
|
125
|
+
done
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
# ---------------------------------------------------------------------------- private section ---
|
130
|
+
private
|
131
|
+
|
132
|
+
def convert_to_form_param(username, password, name, email, roles)
|
133
|
+
form_param = {}
|
134
|
+
form_param['username'] = username.to_s unless username.nil?
|
135
|
+
form_param['password'] = password.to_s
|
136
|
+
form_param['name'] = name.to_s
|
137
|
+
form_param['email'] = email.to_s
|
138
|
+
form_param['roles'] = roles.to_s
|
139
|
+
form_param
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
def filter_users(respons_hash)
|
144
|
+
unless respons_hash['users']['user'].kind_of?(Array)
|
145
|
+
respons_hash['users']['user'] = [ respons_hash['users']['user'] ]
|
146
|
+
end
|
147
|
+
users = { 'users' => { 'user' => [] } }
|
148
|
+
respons_hash['users']['user'].each do |user_hash|
|
149
|
+
next unless user_hash.kind_of?(Hash)
|
150
|
+
users['users']['user'] << filter_user(user_hash)
|
151
|
+
end
|
152
|
+
users
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
def filter_user(user_hash)
|
157
|
+
return {} unless user_hash.kind_of?(Hash)
|
158
|
+
return {
|
159
|
+
'username' => user_hash['username'],
|
160
|
+
'name' => user_hash['name'],
|
161
|
+
'email' => user_hash['email'],
|
162
|
+
'roles' => filter_roles(user_hash['roles'])
|
163
|
+
}
|
164
|
+
end
|
165
|
+
|
166
|
+
|
167
|
+
def filter_roles(roles_hash)
|
168
|
+
role_list = { 'role' => [] }
|
169
|
+
return role_list if roles_hash.nil? ||
|
170
|
+
!roles_hash.kind_of?(Hash) ||
|
171
|
+
roles_hash['role'].nil?
|
172
|
+
unless roles_hash['role'].kind_of?(Array)
|
173
|
+
roles_hash['role'] = [ roles_hash['role'] ]
|
174
|
+
end
|
175
|
+
roles_hash['role'].each do |role|
|
176
|
+
next unless role.kind_of?(Hash) &&
|
177
|
+
!role['name'].nil?
|
178
|
+
role_list['role'] << role['name']
|
179
|
+
end
|
180
|
+
role_list
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
end # ----------------------------------------------------------- end Matterhorn::Endpoint::User ---
|
@@ -5,7 +5,7 @@ module MatterhornWhymper
|
|
5
5
|
|
6
6
|
# -------------------------------------------------------------------------- const definitions ---
|
7
7
|
|
8
|
-
VERSION = "1.
|
8
|
+
VERSION = "1.7.0"
|
9
9
|
|
10
10
|
|
11
11
|
end # -------------------------------------------------------------------- end MatterhornWhymper ---
|
data/lib/matterhorn_whymper.rb
CHANGED
@@ -14,6 +14,7 @@ require 'matterhorn/endpoint/group'
|
|
14
14
|
require 'matterhorn/endpoint/ingest'
|
15
15
|
require 'matterhorn/endpoint/series'
|
16
16
|
require 'matterhorn/endpoint/staticfiles'
|
17
|
+
require 'matterhorn/endpoint/user'
|
17
18
|
require 'matterhorn/endpoint/workflow'
|
18
19
|
require 'matterhorn/error'
|
19
20
|
require 'matterhorn/http_client'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: matterhorn_whymper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Fritschi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multipart-post
|
@@ -149,6 +149,7 @@ files:
|
|
149
149
|
- lib/matterhorn/endpoint/ingest.rb
|
150
150
|
- lib/matterhorn/endpoint/series.rb
|
151
151
|
- lib/matterhorn/endpoint/staticfiles.rb
|
152
|
+
- lib/matterhorn/endpoint/user.rb
|
152
153
|
- lib/matterhorn/endpoint/workflow.rb
|
153
154
|
- lib/matterhorn/error.rb
|
154
155
|
- lib/matterhorn/http_client.rb
|