matterhorn_whymper 1.4.0 → 1.5.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
- YjU3NTlmN2RjOGFhODc3NDY5YWFhMTY5MjhhNTk5MTY0NWZjZTBkNw==
4
+ ZDU0MzNhMzRhYWM3OTE3YTY1MTAxZThmMmI5M2MzMzFjOWQzNjkxMA==
5
5
  data.tar.gz: !binary |-
6
- ODNjMTU5OTMxNWVlZjVkOGQ0OTNiYzA5OWU0MTU4NzJmNjY0MDNjOA==
6
+ OGQzMjM1YzlmODA2NTE5OTBhMTVjNTRhYzZlOWYwYzYxNDE3MmQ1Mw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NWFjMDMyZDRkODBkYmU3MTA5Mjg3NzdmYzhkYzhlNzI4NzgyZTZjYmU3YjI0
10
- MDA5ZjNmNzVkMmE3Nzk1NmYyNWEzYjZlM2MzZTFmODA2YWQ4NzdmYTUzMTk0
11
- M2Q2OGQwM2MxYzNiNzNjMmE1NTZmNTY5MjZkM2NkYWNiNmQ1ZmY=
9
+ NjJjYjY0OWFkNWUzZjczODRkNzI2ZTViMjI2OWJjNjI3YjU0YzM1N2Y3YmYw
10
+ YWQ0YWQ2ODVjYWQwMDRiOTBlZmE3MzM5MjVkMmRhZDJhMzAzYTBiMjYwYWNj
11
+ ZGMxMGFmMzk1ZWRkZTc4NDQ3ZmFmMjJmMGM3YjJmOWEyM2Q3NmM=
12
12
  data.tar.gz: !binary |-
13
- MWEyMmYwMzVmMzA4YzQ3MDlhYzQyZmI4NmUzZWJiZGViMGEwZjA2OTc5MGM2
14
- OGUwYjBlZDVjZjRhYmJhZDczOWI2MjBhN2IwOTg3YjhlYjQ3OTRlODZmMTgy
15
- OGEwNzA5OGZjNWQxMTcxM2QxMTk1MTNiMmFjYjJiZWE5MDU2NzU=
13
+ Njg4NjVjYWU5ZTk5NTk2Y2Y1M2EwYjY0ZjIwY2U5MTA0Yjc1MzVjNmYzYjli
14
+ YjkyMjFiNTU4NzE3ODhjMTBjYTdkMjJiZGNiMmFmNzUzOWMxMmRmYWEwYjI4
15
+ ZTIwMjFkZGZiODdiMjk2MjE1NjBjMjhlMTAyMGM1N2IyYTM3ZGY=
@@ -0,0 +1,154 @@
1
+ require 'json'
2
+
3
+ # ================================================================== Matterhorn::Endpoint::Group ===
4
+
5
+ class Matterhorn::Endpoint::Group < Matterhorn::Endpoint
6
+
7
+
8
+ # -------------------------------------------------------------------------- endpoint methodes ---
9
+
10
+ # ------------------------------------------------------------------------------------- create ---
11
+
12
+ # Create a new group with name and descritption.
13
+ # The group_id will be created from the name -> downcase and underscore.
14
+ # If a role is unknown to the system, it will be created.
15
+ # If a user is unknown only the relation ship beteen the group and the member will be stored.
16
+ # The user will not be created!
17
+ #
18
+ def create(name, description = nil, roles = nil, users = nil)
19
+ done = false
20
+ begin
21
+ split_response http_endpoint_client.post(
22
+ "groups",
23
+ convert_to_form_param(name, description, roles, users)
24
+ )
25
+ done = true
26
+ rescue => ex
27
+ exception_handler('create', ex, {
28
+ 400 => "Group name: #{name} too long!"
29
+ }
30
+ )
31
+ end
32
+ done
33
+ end
34
+
35
+
36
+ # --------------------------------------------------------------------------------------- read ---
37
+
38
+ def index(offset = 0, limit = 100)
39
+ groups = {}
40
+ begin
41
+ split_response http_endpoint_client.get(
42
+ "groups/groups.json"
43
+ )
44
+ groups = filter_groups(JSON.parse(response_body))
45
+ rescue => ex
46
+ exception_handler('index', ex, {})
47
+ end
48
+ groups
49
+ end
50
+
51
+
52
+
53
+ # ------------------------------------------------------------------------------------- update ---
54
+
55
+ def update(group_id, name, description = nil, roles = nil, users = nil)
56
+ done = false
57
+ begin
58
+ split_response http_endpoint_client.put(
59
+ "groups/#{group_id}",
60
+ convert_to_form_param(name, description, roles, users)
61
+ )
62
+ done = true
63
+ rescue => ex
64
+ exception_handler('create', ex, {
65
+ 400 => "Group name: #{name} too long!",
66
+ 404 => "Group[#{group_id}] not found!"
67
+ }
68
+ )
69
+ end
70
+ done
71
+ end
72
+
73
+
74
+ # ------------------------------------------------------------------------------------- delete ---
75
+
76
+ def delete(group_id)
77
+ done = false
78
+ begin
79
+ split_response http_endpoint_client.delete(
80
+ "groups/#{group_id}"
81
+ )
82
+ done = true
83
+ rescue => ex
84
+ exception_handler('create', ex, {
85
+ 404 => "Group[#{group_id}] not found!"
86
+ }
87
+ )
88
+ end
89
+ done
90
+ end
91
+
92
+
93
+ # ---------------------------------------------------------------------------- private section ---
94
+ private
95
+
96
+ def convert_to_form_param(name, description, roles, users)
97
+ form_param = {}
98
+ form_param['name'] = name.to_s
99
+ if description.kind_of?(String)
100
+ form_param['description'] = description
101
+ end
102
+ if roles.kind_of?(String)
103
+ form_param['roles'] = roles
104
+ elsif roles.kind_of?(Array)
105
+ form_param['roles'] = roles.compact.join(',')
106
+ end
107
+ if users.kind_of?(String)
108
+ form_param['users'] = users
109
+ elsif users.kind_of?(Array)
110
+ form_param['users'] = users.compact.join(',')
111
+ end
112
+ form_param
113
+ end
114
+
115
+
116
+ def filter_groups(respons_hash)
117
+ MatterhornWhymper.logger.debug { respons_hash.inspect }
118
+ groups = { }
119
+ 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'],
126
+ }
127
+
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
+
149
+ end
150
+ groups
151
+ end
152
+
153
+
154
+ end # ---------------------------------------------------------- end Matterhorn::Endpoint::Group ---
@@ -5,7 +5,7 @@ module MatterhornWhymper
5
5
 
6
6
  # -------------------------------------------------------------------------- const definitions ---
7
7
 
8
- VERSION = "1.4.0"
8
+ VERSION = "1.5.0"
9
9
 
10
10
 
11
11
  end # -------------------------------------------------------------------- end MatterhornWhymper ---
@@ -9,6 +9,7 @@ require 'matterhorn/acl'
9
9
  require 'matterhorn/dublin_core'
10
10
  require 'matterhorn/endpoint'
11
11
  require 'matterhorn/endpoint/event'
12
+ require 'matterhorn/endpoint/group'
12
13
  require 'matterhorn/endpoint/ingest'
13
14
  require 'matterhorn/endpoint/series'
14
15
  require 'matterhorn/endpoint/staticfiles'
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.0
4
+ version: 1.5.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-07-21 00:00:00.000000000 Z
11
+ date: 2015-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multipart-post
@@ -141,6 +141,7 @@ files:
141
141
  - lib/matterhorn/dublin_core.rb
142
142
  - lib/matterhorn/endpoint.rb
143
143
  - lib/matterhorn/endpoint/event.rb
144
+ - lib/matterhorn/endpoint/group.rb
144
145
  - lib/matterhorn/endpoint/ingest.rb
145
146
  - lib/matterhorn/endpoint/series.rb
146
147
  - lib/matterhorn/endpoint/staticfiles.rb