openfire_rest_api 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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