jabber_admin 0.1.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 +5 -5
- data/.editorconfig +30 -0
- data/.gitignore +4 -2
- data/.rubocop.yml +35 -0
- data/.simplecov +5 -0
- data/.travis.yml +8 -6
- data/.yardopts +4 -0
- data/CHANGELOG.md +49 -0
- data/Gemfile +4 -2
- data/Makefile +108 -0
- data/README.md +145 -21
- data/Rakefile +5 -3
- data/bin/config.rb +11 -0
- data/bin/console +3 -3
- data/docker-compose.yml +15 -0
- data/jabber_admin.gemspec +34 -27
- data/lib/jabber_admin.rb +97 -34
- data/lib/jabber_admin/api_call.rb +110 -20
- data/lib/jabber_admin/commands.rb +6 -12
- data/lib/jabber_admin/commands/ban_account.rb +11 -10
- data/lib/jabber_admin/commands/create_room.rb +15 -10
- data/lib/jabber_admin/commands/create_room_with_opts.rb +20 -14
- data/lib/jabber_admin/commands/get_vcard.rb +84 -0
- data/lib/jabber_admin/commands/muc_register_nick.rb +26 -0
- data/lib/jabber_admin/commands/register.rb +16 -11
- data/lib/jabber_admin/commands/registered_users.rb +18 -0
- data/lib/jabber_admin/commands/restart.rb +8 -5
- data/lib/jabber_admin/commands/send_direct_invitation.rb +19 -16
- data/lib/jabber_admin/commands/send_stanza.rb +21 -0
- data/lib/jabber_admin/commands/send_stanza_c2s.rb +28 -0
- data/lib/jabber_admin/commands/set_nickname.rb +22 -0
- data/lib/jabber_admin/commands/set_presence.rb +37 -0
- data/lib/jabber_admin/commands/set_room_affiliation.rb +26 -0
- data/lib/jabber_admin/commands/set_vcard.rb +68 -0
- data/lib/jabber_admin/commands/subscribe_room.rb +19 -12
- data/lib/jabber_admin/commands/unregister.rb +13 -7
- data/lib/jabber_admin/commands/unsubscribe_room.rb +10 -7
- data/lib/jabber_admin/configuration.rb +6 -1
- data/lib/jabber_admin/exceptions.rb +41 -0
- data/lib/jabber_admin/version.rb +19 -1
- metadata +120 -25
- data/lib/jabber_admin/initializer.rb +0 -5
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JabberAdmin
|
4
|
+
module Commands
|
5
|
+
# Change a user affiliation in a MUC room. (eg. allow him to enter a
|
6
|
+
# members-only room)
|
7
|
+
#
|
8
|
+
# @see https://bit.ly/2G5MfbW
|
9
|
+
class SetRoomAffiliation
|
10
|
+
# Pass the correct data to the given callable.
|
11
|
+
#
|
12
|
+
# @param callable [Proc, #call] the callable to call
|
13
|
+
# @param user [String] user JID wo/ resource (eg. +tom@localhost+)
|
14
|
+
# @param room [String] room JID (eg. +room1@conference.localhost+)
|
15
|
+
# @param affiliation [String] the MUC/user affiliation (eg. +member+)
|
16
|
+
def self.call(callable, user:, room:, affiliation: 'member')
|
17
|
+
name, service = room.split('@')
|
18
|
+
callable.call('set_room_affiliation',
|
19
|
+
name: name,
|
20
|
+
service: service,
|
21
|
+
jid: user,
|
22
|
+
affiliation: affiliation)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JabberAdmin
|
4
|
+
module Commands
|
5
|
+
# Set contents in a vCard.
|
6
|
+
#
|
7
|
+
# Examples:
|
8
|
+
#
|
9
|
+
# JabberAdmin.set_vcard!(
|
10
|
+
# user: 'ac865680-9681-45da-8fee-8584053dde5b@jabber.local',
|
11
|
+
# 'org.orgunit[]' => %w[Marketing Production],
|
12
|
+
# fn: 'Max Mustermann',
|
13
|
+
# 'n.given': 'Max',
|
14
|
+
# 'n.family' => 'Mustermann'
|
15
|
+
# )
|
16
|
+
# # => {"org.orgunit[]"=>["Marketing", "Production"],
|
17
|
+
# # "n.family"=>"Mustermann",
|
18
|
+
# # :fn=>"Max Mustermann",
|
19
|
+
# # :"n.given"=>"Max"}
|
20
|
+
#
|
21
|
+
# @see https://bit.ly/2ZB9S6y
|
22
|
+
# @see https://bit.ly/3lAIGzO
|
23
|
+
# @see https://bit.ly/34MiviZ
|
24
|
+
class SetVcard
|
25
|
+
# Pass the correct data to the given callable.
|
26
|
+
#
|
27
|
+
# @param callable [Proc, #call] the callable to call
|
28
|
+
# @param args [Hash] the keys/values to set to the vCard
|
29
|
+
# (eg. +n.family+ for multiple levels)
|
30
|
+
# @param user [String] user JID wo/ resource (eg. +tom@localhost+)
|
31
|
+
# @param sym_args [Hash{Symbol => Mixed}] additional keys/values to
|
32
|
+
# set to the vCard
|
33
|
+
# @return [Hash] the vCard details
|
34
|
+
#
|
35
|
+
# rubocop:disable Metrics/MethodLength because the ejabberd REST API is
|
36
|
+
# hard to use in complex scenarios, so we have to work around it
|
37
|
+
# rubocop:disable Metrics/AbcSize dito
|
38
|
+
def self.call(callable, args = {}, user:, **sym_args)
|
39
|
+
args = args.merge(sym_args)
|
40
|
+
uid, host = user.split('@')
|
41
|
+
|
42
|
+
set = proc do |key, val|
|
43
|
+
parts = key.to_s.upcase.split('.')
|
44
|
+
body = { name: parts.shift, content: val }
|
45
|
+
meth = 'set_vcard'
|
46
|
+
|
47
|
+
unless parts.empty?
|
48
|
+
body[:subname] = parts.shift
|
49
|
+
meth = 'set_vcard2'
|
50
|
+
|
51
|
+
if body[:subname].end_with? '[]'
|
52
|
+
meth += '_multi'
|
53
|
+
body[:subname].delete_suffix!('[]')
|
54
|
+
body[:contents] = body.delete(:content)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
callable.call(meth, user: uid, host: host, **body)
|
59
|
+
end
|
60
|
+
|
61
|
+
args.each { |key, val| set[key, val] }
|
62
|
+
args
|
63
|
+
end
|
64
|
+
# rubocop:enable Metrics/MethodLength
|
65
|
+
# rubocop:enable Metrics/AbcSize
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -2,19 +2,26 @@
|
|
2
2
|
|
3
3
|
module JabberAdmin
|
4
4
|
module Commands
|
5
|
-
|
6
|
-
#
|
7
|
-
# https://
|
5
|
+
# Subscribe to a MUC conference, via the mucsub feature.
|
6
|
+
#
|
7
|
+
# @see https://bit.ly/2Ke7Zoy
|
8
8
|
class SubscribeRoom
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# @param [
|
12
|
-
# @param [
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
# Pass the correct data to the given callable.
|
10
|
+
#
|
11
|
+
# @param callable [Proc, #call] the callable to call
|
12
|
+
# @param user [String] user JID w/ resource (eg. +tom@localhost/dummy+)
|
13
|
+
# @param nick [String] the user nickname (eg. +TomTom+)
|
14
|
+
# @param room [String] room JID (eg. +room1@conference.localhost+)
|
15
|
+
# @param nodes [Array<String>] nodes comma separated
|
16
|
+
# (eg. +urn:xmpp:mucsub:nodes:messages+,
|
17
|
+
# +urn:xmpp:mucsub:nodes:affiliations+)
|
18
|
+
def self.call(callable, user:, nick:, room:, nodes: [])
|
19
|
+
callable.call('subscribe_room',
|
20
|
+
check_res_body: false,
|
21
|
+
user: user,
|
22
|
+
nick: nick,
|
23
|
+
room: room,
|
24
|
+
nodes: nodes.join(','))
|
18
25
|
end
|
19
26
|
end
|
20
27
|
end
|
@@ -2,14 +2,20 @@
|
|
2
2
|
|
3
3
|
module JabberAdmin
|
4
4
|
module Commands
|
5
|
-
|
6
|
-
#
|
7
|
-
# https://
|
5
|
+
# Unregister (delete) a user from the XMPP service.
|
6
|
+
#
|
7
|
+
# @see https://bit.ly/2wwYnDE
|
8
8
|
class Unregister
|
9
|
-
#
|
10
|
-
#
|
11
|
-
|
12
|
-
|
9
|
+
# Pass the correct data to the given callable.
|
10
|
+
#
|
11
|
+
# @param callable [Proc, #call] the callable to call
|
12
|
+
# @param user [String] user JID wo/ resource (eg. +tom@localhost+)
|
13
|
+
def self.call(callable, user:)
|
14
|
+
uid, host = user.split('@')
|
15
|
+
callable.call('unregister',
|
16
|
+
check_res_body: false,
|
17
|
+
user: uid,
|
18
|
+
host: host)
|
13
19
|
end
|
14
20
|
end
|
15
21
|
end
|
@@ -2,14 +2,17 @@
|
|
2
2
|
|
3
3
|
module JabberAdmin
|
4
4
|
module Commands
|
5
|
-
|
6
|
-
#
|
7
|
-
# https://
|
5
|
+
# Subscribe to a MUC conference, via the mucsub feature.
|
6
|
+
#
|
7
|
+
# @see https://bit.ly/2G5zcrj
|
8
8
|
class UnsubscribeRoom
|
9
|
-
#
|
10
|
-
#
|
11
|
-
|
12
|
-
|
9
|
+
# Pass the correct data to the given callable.
|
10
|
+
#
|
11
|
+
# @param callable [Proc, #call] the callable to call
|
12
|
+
# @param user [String] user JID w/ resource (eg. +tom@localhost/dummy+)
|
13
|
+
# @param room [String] room JID (eg. +room1@conference.localhost+)
|
14
|
+
def self.call(callable, user:, room:)
|
15
|
+
callable.call('unsubscribe_room', user: user, room: room)
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
@@ -1,7 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module JabberAdmin
|
4
|
+
# A JabberAdmin configuration definition. It is directly accessible via
|
5
|
+
# +JabberAdmin.configuration+ or
|
6
|
+
# +JabberAdmin.configure(&block(configuration))+ in a tapped variant.
|
7
|
+
#
|
8
|
+
# See the +JabberAdmin+ documentation for further details.
|
4
9
|
class Configuration
|
5
|
-
attr_accessor :
|
10
|
+
attr_accessor :username, :password, :url
|
6
11
|
end
|
7
12
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JabberAdmin
|
4
|
+
# The base exception which all other exceptions inherit. In case you want to
|
5
|
+
# use our error handling with the bang variants, you can rescue all
|
6
|
+
# exceptions like this:
|
7
|
+
#
|
8
|
+
# begin
|
9
|
+
# JabberAdmin.COMMAND!
|
10
|
+
# rescue JabberAdmin::Error => err
|
11
|
+
# # Do your error handling here
|
12
|
+
# end
|
13
|
+
class Error < StandardError
|
14
|
+
attr_accessor :response
|
15
|
+
|
16
|
+
# Create a new exception.
|
17
|
+
#
|
18
|
+
# @param msg [String] the excpetion message
|
19
|
+
# @param response [RestClient::Response] the response when available
|
20
|
+
def initialize(msg, response = nil)
|
21
|
+
@response = response
|
22
|
+
msg += " => #{response.body}" if response&.body
|
23
|
+
super(msg)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# This exception is raised when the request was denied due to premission
|
28
|
+
# issues or a general unavaliability of the command on the REST API. This
|
29
|
+
# simply means the response code from ejabberd was not 200 OK.
|
30
|
+
class RequestError < Error; end
|
31
|
+
|
32
|
+
# This exception is raised when the response from the ejabberd REST API
|
33
|
+
# indicated that the status of the command was not successful. In this case
|
34
|
+
# the response body includes a one (1). In case everything was fine, it
|
35
|
+
# includes a zero (0).
|
36
|
+
class CommandError < Error; end
|
37
|
+
|
38
|
+
# This exception is raised when we send an unknown command to the REST API.
|
39
|
+
# It will respond with a 404 status code in this case.
|
40
|
+
class UnknownCommandError < Error; end
|
41
|
+
end
|
data/lib/jabber_admin/version.rb
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module JabberAdmin
|
4
|
-
|
4
|
+
# The version constant of the gem. Increase this value
|
5
|
+
# in case of a gem release.
|
6
|
+
VERSION = '1.0.0'
|
7
|
+
|
8
|
+
class << self
|
9
|
+
# Returns the version of gem as a string.
|
10
|
+
#
|
11
|
+
# @return [String] the gem version as string
|
12
|
+
def version
|
13
|
+
VERSION
|
14
|
+
end
|
15
|
+
|
16
|
+
# Returns the version of the gem as a +Gem::Version+.
|
17
|
+
#
|
18
|
+
# @return [Gem::Version] the gem version as object
|
19
|
+
def gem_version
|
20
|
+
Gem::Version.new VERSION
|
21
|
+
end
|
22
|
+
end
|
5
23
|
end
|
metadata
CHANGED
@@ -1,15 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jabber_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Vogt
|
8
|
-
|
8
|
+
- Hermann Mayer
|
9
|
+
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2020-10-13 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 5.2.0
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 5.2.0
|
13
28
|
- !ruby/object:Gem::Dependency
|
14
29
|
name: rest-client
|
15
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -31,91 +46,163 @@ dependencies:
|
|
31
46
|
- !ruby/object:Gem::Version
|
32
47
|
version: 2.0.2
|
33
48
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
49
|
+
name: bundler
|
35
50
|
requirement: !ruby/object:Gem::Requirement
|
36
51
|
requirements:
|
37
52
|
- - ">="
|
38
53
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
40
|
-
|
54
|
+
version: '1.16'
|
55
|
+
- - "<"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '3'
|
58
|
+
type: :development
|
41
59
|
prerelease: false
|
42
60
|
version_requirements: !ruby/object:Gem::Requirement
|
43
61
|
requirements:
|
44
62
|
- - ">="
|
45
63
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
64
|
+
version: '1.16'
|
65
|
+
- - "<"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '3'
|
47
68
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
69
|
+
name: irb
|
49
70
|
requirement: !ruby/object:Gem::Requirement
|
50
71
|
requirements:
|
51
72
|
- - "~>"
|
52
73
|
- !ruby/object:Gem::Version
|
53
|
-
version: '1.
|
74
|
+
version: '1.2'
|
54
75
|
type: :development
|
55
76
|
prerelease: false
|
56
77
|
version_requirements: !ruby/object:Gem::Requirement
|
57
78
|
requirements:
|
58
79
|
- - "~>"
|
59
80
|
- !ruby/object:Gem::Version
|
60
|
-
version: '1.
|
81
|
+
version: '1.2'
|
61
82
|
- !ruby/object:Gem::Dependency
|
62
83
|
name: rake
|
63
84
|
requirement: !ruby/object:Gem::Requirement
|
64
85
|
requirements:
|
65
86
|
- - "~>"
|
66
87
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
88
|
+
version: '13.0'
|
68
89
|
type: :development
|
69
90
|
prerelease: false
|
70
91
|
version_requirements: !ruby/object:Gem::Requirement
|
71
92
|
requirements:
|
72
93
|
- - "~>"
|
73
94
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
95
|
+
version: '13.0'
|
75
96
|
- !ruby/object:Gem::Dependency
|
76
97
|
name: rspec
|
77
98
|
requirement: !ruby/object:Gem::Requirement
|
78
99
|
requirements:
|
79
100
|
- - "~>"
|
80
101
|
- !ruby/object:Gem::Version
|
81
|
-
version: '3.
|
102
|
+
version: '3.9'
|
82
103
|
type: :development
|
83
104
|
prerelease: false
|
84
105
|
version_requirements: !ruby/object:Gem::Requirement
|
85
106
|
requirements:
|
86
107
|
- - "~>"
|
87
108
|
- !ruby/object:Gem::Version
|
88
|
-
version: '3.
|
109
|
+
version: '3.9'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rubocop
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0.93'
|
117
|
+
type: :development
|
118
|
+
prerelease: false
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0.93'
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: rubocop-rspec
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '1.43'
|
131
|
+
type: :development
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '1.43'
|
89
138
|
- !ruby/object:Gem::Dependency
|
90
139
|
name: simplecov
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "<"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0.18'
|
145
|
+
type: :development
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "<"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0.18'
|
152
|
+
- !ruby/object:Gem::Dependency
|
153
|
+
name: vcr
|
91
154
|
requirement: !ruby/object:Gem::Requirement
|
92
155
|
requirements:
|
93
156
|
- - "~>"
|
94
157
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0
|
158
|
+
version: '6.0'
|
96
159
|
type: :development
|
97
160
|
prerelease: false
|
98
161
|
version_requirements: !ruby/object:Gem::Requirement
|
99
162
|
requirements:
|
100
163
|
- - "~>"
|
101
164
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0
|
103
|
-
|
165
|
+
version: '6.0'
|
166
|
+
- !ruby/object:Gem::Dependency
|
167
|
+
name: webmock
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '3.0'
|
173
|
+
type: :development
|
174
|
+
prerelease: false
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '3.0'
|
180
|
+
description: Library for the ejabberd RESTful admin API
|
104
181
|
email:
|
105
182
|
- henning.vogt@hausgold.de
|
183
|
+
- hermann.mayer@hausgold.de
|
106
184
|
executables: []
|
107
185
|
extensions: []
|
108
186
|
extra_rdoc_files: []
|
109
187
|
files:
|
188
|
+
- ".editorconfig"
|
110
189
|
- ".gitignore"
|
111
190
|
- ".rspec"
|
191
|
+
- ".rubocop.yml"
|
192
|
+
- ".simplecov"
|
112
193
|
- ".travis.yml"
|
194
|
+
- ".yardopts"
|
195
|
+
- CHANGELOG.md
|
113
196
|
- Gemfile
|
114
197
|
- LICENSE
|
198
|
+
- Makefile
|
115
199
|
- README.md
|
116
200
|
- Rakefile
|
201
|
+
- bin/config.rb
|
117
202
|
- bin/console
|
118
203
|
- bin/setup
|
204
|
+
- doc/assets/project.svg
|
205
|
+
- docker-compose.yml
|
119
206
|
- jabber_admin.gemspec
|
120
207
|
- lib/jabber_admin.rb
|
121
208
|
- lib/jabber_admin/api_call.rb
|
@@ -123,38 +210,46 @@ files:
|
|
123
210
|
- lib/jabber_admin/commands/ban_account.rb
|
124
211
|
- lib/jabber_admin/commands/create_room.rb
|
125
212
|
- lib/jabber_admin/commands/create_room_with_opts.rb
|
213
|
+
- lib/jabber_admin/commands/get_vcard.rb
|
214
|
+
- lib/jabber_admin/commands/muc_register_nick.rb
|
126
215
|
- lib/jabber_admin/commands/register.rb
|
216
|
+
- lib/jabber_admin/commands/registered_users.rb
|
127
217
|
- lib/jabber_admin/commands/restart.rb
|
128
218
|
- lib/jabber_admin/commands/send_direct_invitation.rb
|
219
|
+
- lib/jabber_admin/commands/send_stanza.rb
|
220
|
+
- lib/jabber_admin/commands/send_stanza_c2s.rb
|
221
|
+
- lib/jabber_admin/commands/set_nickname.rb
|
222
|
+
- lib/jabber_admin/commands/set_presence.rb
|
223
|
+
- lib/jabber_admin/commands/set_room_affiliation.rb
|
224
|
+
- lib/jabber_admin/commands/set_vcard.rb
|
129
225
|
- lib/jabber_admin/commands/subscribe_room.rb
|
130
226
|
- lib/jabber_admin/commands/unregister.rb
|
131
227
|
- lib/jabber_admin/commands/unsubscribe_room.rb
|
132
228
|
- lib/jabber_admin/configuration.rb
|
133
|
-
- lib/jabber_admin/
|
229
|
+
- lib/jabber_admin/exceptions.rb
|
134
230
|
- lib/jabber_admin/version.rb
|
135
231
|
homepage: https://github.com/hausgold/jabber_admin
|
136
232
|
licenses:
|
137
233
|
- MIT
|
138
234
|
metadata:
|
139
235
|
allowed_push_host: https://rubygems.org
|
140
|
-
post_install_message:
|
236
|
+
post_install_message:
|
141
237
|
rdoc_options: []
|
142
238
|
require_paths:
|
143
239
|
- lib
|
144
240
|
required_ruby_version: !ruby/object:Gem::Requirement
|
145
241
|
requirements:
|
146
|
-
- - "
|
242
|
+
- - "~>"
|
147
243
|
- !ruby/object:Gem::Version
|
148
|
-
version: '2.
|
244
|
+
version: '2.5'
|
149
245
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
246
|
requirements:
|
151
247
|
- - ">="
|
152
248
|
- !ruby/object:Gem::Version
|
153
249
|
version: '0'
|
154
250
|
requirements: []
|
155
|
-
|
156
|
-
|
157
|
-
signing_key:
|
251
|
+
rubygems_version: 3.1.4
|
252
|
+
signing_key:
|
158
253
|
specification_version: 4
|
159
|
-
summary: Library for the
|
254
|
+
summary: Library for the ejabberd RESTful admin API
|
160
255
|
test_files: []
|