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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Yzg4Y2YxYzliNDRkMzg2Yzk4OGViZThkYWVkNWNlY2E4Y2Y3NDliZA==
4
+ Njk1NzdhNmE5NjdiNjBmNWY4ZGY4ODk0NjUyM2UxYWNjZjdjNzMyMw==
5
5
  data.tar.gz: !binary |-
6
- MThlMWRkNjQ0ZWZmMWI3ZWI5NDA0MjdmZmZjOWNkMDQ3MmJlZTZlMA==
6
+ NDU1ZDcxZTc5ZjYxMTk2MWU5ZGYxMjc3NzU0YjBkNDJkOGQ4ODQyMA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmU2OGQxOGU1ZmE0ODlmYWNlMjdmODc0ZmZhMDk3YjUzMWQ2MDIzMTg3YTUx
10
- OWNkMDc2YjYxMzEyZDlhNjNlN2IzZjA4ZTAxNmUzYTk0NDRjMzE3MjZiMTBm
11
- NjQyYTg0MGZkMjA1NjA3MDAwZmRhNjgwMzFmYTc4MjFlNGQyOWE=
9
+ OGQ1M2ZjMWZjMDY1MWFhMTc2Y2RhMTJhMmQ5OGJkNjhiMjhmNzllZmZhNzZj
10
+ MDRkNGNiZDU4ZjlkNDM5YWNhNzBkZTUzY2Q2ZTYyNWRhNzQyOTJmODAzYjYy
11
+ NjliYzQwNjZlODgwOWU4ZDVmMWY0MTRkOTk1MTQzMWQ4MWMxYzc=
12
12
  data.tar.gz: !binary |-
13
- YzQ1ODRjZWJmODBjOWQ5YjMwOTk2OWJhZTljYTQxZTM0Yzk5Yzk0OTk1YWI2
14
- Y2I1ZDA0M2QxOGVhZjZiNDRjNDE0NjYyMDZhNWMzOWNmM2YxMDY3OTJkNDg2
15
- NzEzYWU3ZDRlYWI4YjJiYjdmYzgyZWI1ZDM1ZmI0N2QzYTMzOTA=
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
- MatterhornWhymper.logger.debug { respons_hash.inspect }
118
- groups = { }
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[group_hash['id']] = {
122
- :group_id => group_hash['id'],
123
- :name => group_hash['name'],
124
- :description => group_hash['description'],
125
- :role => group_hash['role'],
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
- groups
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.6.0"
8
+ VERSION = "1.7.0"
9
9
 
10
10
 
11
11
  end # -------------------------------------------------------------------- end MatterhornWhymper ---
@@ -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.6.0
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-02 00:00:00.000000000 Z
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