openfire_rest_api 0.2.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ff493c42b1fa2f69c09d564ac703702fa22c86f
4
- data.tar.gz: d945019c048d502b8bba6e40ceeb1db2c445855b
3
+ metadata.gz: c1e7166e7597e0db73fb466f68a031e1a5ad0024
4
+ data.tar.gz: 1e45e87588576e50db7ca5c96b94708199b0c591
5
5
  SHA512:
6
- metadata.gz: 15b1abc9b605b932818d2d89ac6ce648a2ef1a0af184e506482f45d34157cba35e4d9d6bbc61068795f8b0b04111ddc17a9fc81c81ef57bc32094527ceb57fb2
7
- data.tar.gz: eae63c86a6f3b5f0a3a60a28dba79df33541709c18493d054ac4e84eed00d069d451f735730cd820f6da1da5ef2b0c07322b021763256cbc2deff9042fe0d964
6
+ metadata.gz: 51e5ec14c482737e2c12197be43a4a19dd37329301fe1fb9db29eceeeac9e3b8b04a433105ac78cca1c5778ed532eebec06556316a418003254caceaf6476097
7
+ data.tar.gz: 653f7d5f2eee848f4eb3219f9eeb796f4df5c7ab6764f576751acd0de8e0e7586ba7f60ed69307c7b2215468f979e3b20f36069c618b65b97e0fc2b44448faba
data/CHANGELOG.md CHANGED
@@ -9,3 +9,7 @@
9
9
  ## v0.2.1
10
10
 
11
11
  * Added optional filters to get users method
12
+
13
+ ## v1.0.0
14
+
15
+ * Added methods to manage user roster and chatrooms.
data/lib/openfire/api.rb CHANGED
@@ -43,84 +43,94 @@ module Openfire
43
43
  def get_user_groups(username)
44
44
  request = web_request('GET', "/users/#{username}/groups", { }, default_headers)
45
45
  body = request[:body]['groupname']
46
-
47
46
  body.is_a?(Array) ? body : [body]
48
47
  end
49
48
 
50
49
  def add_user_to_group(username, groupname)
51
50
  request = web_request('POST', "/users/#{username}/groups/#{groupname}", { }, default_headers)
52
-
53
51
  (request[:status_code] == 201)
54
52
  end
55
53
 
56
54
  def add_user_to_groups(username, groupnames)
57
55
  payload = { groupname: groupnames }.to_json
58
-
59
56
  request = web_request('POST', "/users/#{username}/groups", payload, default_headers)
60
-
61
57
  (request[:status_code] == 201)
62
58
  end
63
59
 
64
60
  def delete_user_from_group(username, groupname)
65
61
  request = web_request('DELETE', "/users/#{username}/groups/#{groupname}", { }, default_headers)
66
-
67
62
  (request[:status_code] == 200)
68
63
  end
69
64
 
70
65
  def delete_user_from_groups(username, groupnames)
71
66
  payload = { groupname: groupnames }.to_json
72
-
73
67
  request = web_request('DELETE', "/users/#{username}/groups", payload, default_headers)
74
-
75
68
  (request[:status_code] == 200)
76
69
  end
77
70
 
78
71
  def get_user_roster(username)
79
- raise 'not implemented'
72
+ request = web_request('GET', "/users/#{username}/roster", { }, default_headers)
73
+ Openfire::UserRoster.new(request[:body])
80
74
  end
81
75
 
82
76
  def create_user_roster(username, roster_data={})
83
- raise 'not implemented'
77
+ request = web_request('POST', "/users/#{username}/roster", roster_data.to_json, default_headers)
78
+ (request[:status_code] == 201)
84
79
  end
85
80
 
86
81
  def delete_user_roster(username, jid)
87
- raise 'not implemented'
82
+ request = web_request('DELETE', "/users/#{username}/roster/#{jid}", { }, default_headers)
83
+ (request[:status_code] == 200)
88
84
  end
89
85
 
90
86
  def update_user_roster(username, jid, roster_data={})
91
- raise 'not implemented'
87
+ request = web_request('PUT', "/users/#{username}/roster/#{jid}", roster_data.to_json, default_headers)
88
+ (request[:status_code] == 200)
92
89
  end
93
90
 
94
- def get_chatrooms
95
- raise 'not implemented'
91
+ def get_chatrooms(filters={})
92
+ request = web_request('GET', '/chatrooms', filters, default_headers)
93
+ request[:body]['chatroom'].map { |x| Openfire::ChatRoom.new(x) }
96
94
  end
97
95
 
98
96
  def get_chatroom(room_name)
99
- raise 'not implemented'
97
+ request = web_request('GET', "/chatrooms/#{room_name}", { }, default_headers)
98
+ Openfire::ChatRoom.new(request[:body])
100
99
  end
101
100
 
102
101
  def get_chatroom_participants(room_name)
103
- raise 'not implemented'
102
+ request = web_request('GET', "/chatrooms/#{room_name}/participants", { }, default_headers)
103
+ request[:body]
104
+ end
105
+
106
+ def get_chatroom_occupants(room_name)
107
+ request = web_request('GET', "/chatrooms/#{room_name}/occupants", { }, default_headers)
108
+ request[:body]
104
109
  end
105
110
 
106
111
  def create_chatroom(room_data={})
107
- raise 'not implemented'
112
+ request = web_request('POST', '/chatrooms', room_data.to_json, default_headers)
113
+ (request[:status_code] == 201)
108
114
  end
109
115
 
110
116
  def delete_chatroom(room_name)
111
- raise 'not implemented'
117
+ request = web_request('DELETE', "/chatrooms/#{room_name}", { }, default_headers)
118
+ (request[:status_code] == 200)
112
119
  end
113
120
 
114
121
  def update_chatroom(room_name, room_data={})
115
- raise 'not implemented'
122
+ request = web_request('PUT', "/chatrooms/#{room_name}", room_data.to_json, default_headers)
123
+ (request[:status_code] == 200)
116
124
  end
117
125
 
118
- def add_user_to_chatroom(room_name, username_or_jid, role)
119
- raise 'not implemented'
126
+ def add_user_to_chatroom(room_name, role, username_or_jid, params={})
127
+ request = web_request('POST', "/chatrooms/#{room_name}/#{role}/#{username_or_jid}", params, default_headers)
128
+ (request[:status_code] == 201)
120
129
  end
121
130
 
122
- def delete_user_from_chatroom(room_name, username_or_jid, role)
123
- raise 'not implemented'
131
+ def delete_user_from_chatroom(room_name, role, username_or_jid, params={})
132
+ request = web_request('DELETE', "/chatrooms/#{room_name}/#{role}/#{username_or_jid}", params, default_headers)
133
+ (request[:status_code] == 200)
124
134
  end
125
135
 
126
136
  def get_system_properties
@@ -138,7 +148,6 @@ module Openfire
138
148
  '@key' => property_name,
139
149
  '@value' => value
140
150
  }.to_json
141
-
142
151
  request = web_request('POST', '/system/properties', payload, default_headers)
143
152
  (request[:status_code] == 201)
144
153
  end
@@ -153,7 +162,6 @@ module Openfire
153
162
  '@key' => property_name,
154
163
  '@value' => value
155
164
  }.to_json
156
-
157
165
  request = web_request('PUT', "/system/properties/#{property_name}", payload, default_headers)
158
166
  (request[:status_code] == 200)
159
167
  end
@@ -191,7 +199,6 @@ module Openfire
191
199
  def get_sessions
192
200
  request = web_request('GET', '/sessions', { }, default_headers)
193
201
  data = request[:body]['session']
194
-
195
202
  if data.is_a?(Array)
196
203
  data.map { |x| Openfire::Session.new(x) }
197
204
  else
@@ -202,7 +209,6 @@ module Openfire
202
209
  def get_user_sessions(username)
203
210
  request = web_request('GET', "/sessions/#{username}", { }, default_headers)
204
211
  data = request[:body]['session']
205
-
206
212
  if data.is_a?(Array)
207
213
  data.map { |x| Openfire::Session.new(x) }
208
214
  else
@@ -217,8 +223,8 @@ module Openfire
217
223
 
218
224
  def send_broadcast_message(message_text)
219
225
  payload = { body: message_text }.to_json
220
-
221
226
  request = web_request('POST', '/messages/users', payload, default_headers)
227
+ (request[:status_code] == 201)
222
228
  end
223
229
 
224
230
  private
@@ -0,0 +1,26 @@
1
+ module Openfire
2
+ class ChatRoom
3
+ attr_accessor :room_name, :natural_name, :description, :subject, :password,
4
+ :creation_date, :modification_date, :max_users, :persistent, :publicRoom,
5
+ :registrationEnabled, :can_anyone_discover_jid, :can_occupants_change_subject,
6
+ :can_occupants_invite, :can_change_nickname, :log_enabled, :login_restricted_to_nickname,
7
+ :members_only, :moderated, :broadcast_presence_roles, :owners, :admins, :members,
8
+ :outcasts, :owner_groups, :admin_groups, :member_groups, :outcast_groups
9
+
10
+ def initialize(attributes={})
11
+ attributes.each do |k,v|
12
+ self.send("#{to_underscore(k)}=", v)
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def to_underscore(val)
19
+ val.gsub(/::/, '/').
20
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
21
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
22
+ tr("-", "_").
23
+ downcase
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ module Openfire
2
+ class UserRoster
3
+ attr_accessor :jid, :nickname, :subscription_type, :groups
4
+
5
+ def initialize(attributes={})
6
+ attributes.each do |k,v|
7
+ self.send("#{to_underscore(k)}=", v)
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def to_underscore(val)
14
+ val.gsub(/::/, '/').
15
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
16
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
17
+ tr("-", "_").
18
+ downcase
19
+ end
20
+ end
21
+ end
@@ -1,11 +1,13 @@
1
1
  require "openfire_rest_api/version"
2
2
 
3
3
  require 'openfire/api'
4
+ require 'openfire/chat_room'
4
5
  require 'openfire/group'
5
6
  require 'openfire/session'
6
7
  require 'openfire/sessions_count'
7
8
  require 'openfire/system_property'
8
9
  require 'openfire/user'
10
+ require 'openfire/user_roster'
9
11
 
10
12
  # external dependencies
11
13
  require 'rest-client'
@@ -1,3 +1,3 @@
1
1
  module OpenfireRestApi
2
- VERSION = "0.2.1"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openfire_rest_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias Hick
@@ -64,11 +64,13 @@ files:
64
64
  - LICENSE.md
65
65
  - README.md
66
66
  - lib/openfire/api.rb
67
+ - lib/openfire/chat_room.rb
67
68
  - lib/openfire/group.rb
68
69
  - lib/openfire/session.rb
69
70
  - lib/openfire/sessions_count.rb
70
71
  - lib/openfire/system_property.rb
71
72
  - lib/openfire/user.rb
73
+ - lib/openfire/user_roster.rb
72
74
  - lib/openfire_rest_api.rb
73
75
  - lib/openfire_rest_api/version.rb
74
76
  homepage: https://github.com/unformattmh/openfire_rest_api