jabber_admin 0.1.4 → 0.2.0

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