jabber_admin 0.1.4 → 0.2.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.
Files changed (39) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +30 -0
  3. data/.gitignore +4 -2
  4. data/.rubocop.yml +33 -0
  5. data/.simplecov +3 -0
  6. data/.travis.yml +7 -3
  7. data/.yardopts +4 -0
  8. data/CHANGELOG.md +30 -0
  9. data/Gemfile +4 -2
  10. data/Makefile +100 -0
  11. data/README.md +142 -22
  12. data/Rakefile +5 -3
  13. data/bin/console +4 -3
  14. data/docker-compose.yml +15 -0
  15. data/jabber_admin.gemspec +22 -15
  16. data/lib/jabber_admin.rb +100 -34
  17. data/lib/jabber_admin/api_call.rb +106 -20
  18. data/lib/jabber_admin/commands.rb +6 -5
  19. data/lib/jabber_admin/commands/ban_account.rb +11 -10
  20. data/lib/jabber_admin/commands/create_room.rb +15 -10
  21. data/lib/jabber_admin/commands/create_room_with_opts.rb +20 -14
  22. data/lib/jabber_admin/commands/muc_register_nick.rb +26 -0
  23. data/lib/jabber_admin/commands/register.rb +16 -11
  24. data/lib/jabber_admin/commands/registered_users.rb +8 -6
  25. data/lib/jabber_admin/commands/restart.rb +8 -5
  26. data/lib/jabber_admin/commands/send_direct_invitation.rb +19 -16
  27. data/lib/jabber_admin/commands/send_stanza.rb +12 -10
  28. data/lib/jabber_admin/commands/send_stanza_c2s.rb +28 -0
  29. data/lib/jabber_admin/commands/set_nickname.rb +22 -0
  30. data/lib/jabber_admin/commands/set_presence.rb +37 -0
  31. data/lib/jabber_admin/commands/set_room_affiliation.rb +17 -12
  32. data/lib/jabber_admin/commands/subscribe_room.rb +19 -12
  33. data/lib/jabber_admin/commands/unregister.rb +13 -7
  34. data/lib/jabber_admin/commands/unsubscribe_room.rb +10 -7
  35. data/lib/jabber_admin/configuration.rb +6 -1
  36. data/lib/jabber_admin/exceptions.rb +40 -0
  37. data/lib/jabber_admin/version.rb +3 -1
  38. metadata +85 -16
  39. data/lib/jabber_admin/initializer.rb +0 -6
@@ -2,14 +2,17 @@
2
2
 
3
3
  module JabberAdmin
4
4
  module Commands
5
- ##
6
- # Subscribe to a MUC conference
7
- # https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#unsubscribe-room-unsubscribe-from-a-muc-conference
5
+ # Subscribe to a MUC conference, via the mucsub feature.
6
+ #
7
+ # @see https://bit.ly/2G5zcrj
8
8
  class UnsubscribeRoom
9
- # @param [user] Full JID, including some resource
10
- # @param [room] The room to subscribe
11
- def self.call(user:, room:)
12
- JabberAdmin::ApiCall.perform 'unsubscribe_room', user: user, room: room
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 :admin, :password, :api_host
10
+ attr_accessor :username, :password, :url
6
11
  end
7
12
  end
@@ -0,0 +1,40 @@
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
+ super(msg)
23
+ end
24
+ end
25
+
26
+ # This exception is raised when the request was denied due to premission
27
+ # issues or a general unavaliability of the command on the REST API. This
28
+ # simply means the response code from ejabberd was not 200 OK.
29
+ class RequestError < Error; end
30
+
31
+ # This exception is raised when the response from the ejabberd REST API
32
+ # indicated that the status of the command was not successful. In this case
33
+ # the response body includes a one (1). In case everything was fine, it
34
+ # includes a zero (0).
35
+ class CommandError < Error; end
36
+
37
+ # This exception is raised when we send an unknown command to the REST API.
38
+ # It will respond with a 404 status code in this case.
39
+ class UnknownCommandError < Error; end
40
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JabberAdmin
4
- VERSION = "0.1.4"
4
+ # The version constant of the gem. Increase this value
5
+ # in case of a gem release.
6
+ VERSION = '0.2.0'.freeze
5
7
  end
metadata CHANGED
@@ -1,49 +1,50 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jabber_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Vogt
8
+ - Hermann Mayer
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2018-01-23 00:00:00.000000000 Z
12
+ date: 2018-05-14 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: rest-client
15
+ name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
18
  - - ">="
21
19
  - !ruby/object:Gem::Version
22
- version: 2.0.2
20
+ version: 4.2.5
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
24
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '2.0'
30
25
  - - ">="
31
26
  - !ruby/object:Gem::Version
32
- version: 2.0.2
27
+ version: 4.2.5
33
28
  - !ruby/object:Gem::Dependency
34
- name: activesupport
29
+ name: rest-client
35
30
  requirement: !ruby/object:Gem::Requirement
36
31
  requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '2.0'
37
35
  - - ">="
38
36
  - !ruby/object:Gem::Version
39
- version: 4.2.5
37
+ version: 2.0.2
40
38
  type: :runtime
41
39
  prerelease: false
42
40
  version_requirements: !ruby/object:Gem::Requirement
43
41
  requirements:
42
+ - - "~>"
43
+ - !ruby/object:Gem::Version
44
+ version: '2.0'
44
45
  - - ">="
45
46
  - !ruby/object:Gem::Version
46
- version: 4.2.5
47
+ version: 2.0.2
47
48
  - !ruby/object:Gem::Dependency
48
49
  name: bundler
49
50
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +87,34 @@ dependencies:
86
87
  - - "~>"
87
88
  - !ruby/object:Gem::Version
88
89
  version: '3.0'
90
+ - !ruby/object:Gem::Dependency
91
+ name: rubocop
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rubocop-rspec
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
89
118
  - !ruby/object:Gem::Dependency
90
119
  name: simplecov
91
120
  requirement: !ruby/object:Gem::Requirement
@@ -100,18 +129,53 @@ dependencies:
100
129
  - - "~>"
101
130
  - !ruby/object:Gem::Version
102
131
  version: '0.15'
132
+ - !ruby/object:Gem::Dependency
133
+ name: vcr
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ type: :development
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: webmock
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.0'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.0'
103
160
  description: Library for the ejabberd RESTful admin API
104
161
  email:
105
162
  - henning.vogt@hausgold.de
163
+ - hermann.mayer@hausgold.de
106
164
  executables: []
107
165
  extensions: []
108
166
  extra_rdoc_files: []
109
167
  files:
168
+ - ".editorconfig"
110
169
  - ".gitignore"
111
170
  - ".rspec"
171
+ - ".rubocop.yml"
172
+ - ".simplecov"
112
173
  - ".travis.yml"
174
+ - ".yardopts"
175
+ - CHANGELOG.md
113
176
  - Gemfile
114
177
  - LICENSE
178
+ - Makefile
115
179
  - README.md
116
180
  - Rakefile
117
181
  - bin/console
@@ -119,6 +183,7 @@ files:
119
183
  - doc/assets/logo.png
120
184
  - doc/assets/project.png
121
185
  - doc/assets/project.xcf
186
+ - docker-compose.yml
122
187
  - jabber_admin.gemspec
123
188
  - lib/jabber_admin.rb
124
189
  - lib/jabber_admin/api_call.rb
@@ -126,17 +191,21 @@ files:
126
191
  - lib/jabber_admin/commands/ban_account.rb
127
192
  - lib/jabber_admin/commands/create_room.rb
128
193
  - lib/jabber_admin/commands/create_room_with_opts.rb
194
+ - lib/jabber_admin/commands/muc_register_nick.rb
129
195
  - lib/jabber_admin/commands/register.rb
130
196
  - lib/jabber_admin/commands/registered_users.rb
131
197
  - lib/jabber_admin/commands/restart.rb
132
198
  - lib/jabber_admin/commands/send_direct_invitation.rb
133
199
  - lib/jabber_admin/commands/send_stanza.rb
200
+ - lib/jabber_admin/commands/send_stanza_c2s.rb
201
+ - lib/jabber_admin/commands/set_nickname.rb
202
+ - lib/jabber_admin/commands/set_presence.rb
134
203
  - lib/jabber_admin/commands/set_room_affiliation.rb
135
204
  - lib/jabber_admin/commands/subscribe_room.rb
136
205
  - lib/jabber_admin/commands/unregister.rb
137
206
  - lib/jabber_admin/commands/unsubscribe_room.rb
138
207
  - lib/jabber_admin/configuration.rb
139
- - lib/jabber_admin/initializer.rb
208
+ - lib/jabber_admin/exceptions.rb
140
209
  - lib/jabber_admin/version.rb
141
210
  homepage: https://github.com/hausgold/jabber_admin
142
211
  licenses:
@@ -159,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
228
  version: '0'
160
229
  requirements: []
161
230
  rubyforge_project:
162
- rubygems_version: 2.6.11
231
+ rubygems_version: 2.7.6
163
232
  signing_key:
164
233
  specification_version: 4
165
234
  summary: Library for the ejabberd RESTful admin API
@@ -1,6 +0,0 @@
1
- # Fix pluralization of commands
2
- ActiveSupport::Inflector.inflections do |inflect|
3
- inflect.irregular 'create_room_with_opts', 'create_room_with_opts'
4
- inflect.irregular 'registered_users', 'registered_users'
5
- end
6
-