lita 3.3.1 → 4.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +3 -0
  4. data/lib/lita.rb +45 -97
  5. data/lib/lita/adapter.rb +38 -17
  6. data/lib/lita/adapters/shell.rb +5 -3
  7. data/lib/lita/authorization.rb +109 -60
  8. data/lib/lita/builder.rb +38 -0
  9. data/lib/lita/callback.rb +37 -0
  10. data/lib/lita/cli.rb +2 -0
  11. data/lib/lita/config.rb +1 -18
  12. data/lib/lita/configurable.rb +29 -0
  13. data/lib/lita/configuration.rb +179 -0
  14. data/lib/lita/configuration_validator.rb +66 -0
  15. data/lib/lita/daemon.rb +4 -11
  16. data/lib/lita/default_configuration.rb +146 -0
  17. data/lib/lita/errors.rb +9 -0
  18. data/lib/lita/handler.rb +5 -264
  19. data/lib/lita/handler/chat_router.rb +130 -0
  20. data/lib/lita/handler/common.rb +114 -0
  21. data/lib/lita/handler/event_router.rb +77 -0
  22. data/lib/lita/handler/http_router.rb +26 -0
  23. data/lib/lita/handlers/authorization.rb +13 -18
  24. data/lib/lita/handlers/deprecation_check.rb +24 -0
  25. data/lib/lita/handlers/help.rb +5 -3
  26. data/lib/lita/handlers/info.rb +2 -2
  27. data/lib/lita/http_callback.rb +29 -0
  28. data/lib/lita/http_route.rb +41 -26
  29. data/lib/lita/namespace.rb +23 -0
  30. data/lib/lita/rack_app.rb +29 -2
  31. data/lib/lita/registry.rb +133 -0
  32. data/lib/lita/robot.rb +58 -20
  33. data/lib/lita/route_validator.rb +12 -4
  34. data/lib/lita/rspec.rb +23 -14
  35. data/lib/lita/rspec/handler.rb +93 -23
  36. data/lib/lita/rspec/matchers/chat_route_matcher.rb +48 -0
  37. data/lib/lita/rspec/matchers/deprecated.rb +36 -0
  38. data/lib/lita/rspec/matchers/event_route_matcher.rb +27 -0
  39. data/lib/lita/rspec/matchers/http_route_matcher.rb +18 -60
  40. data/lib/lita/user.rb +0 -6
  41. data/lib/lita/util.rb +1 -8
  42. data/lib/lita/version.rb +1 -1
  43. data/lita.gemspec +1 -0
  44. data/spec/lita/adapter_spec.rb +25 -7
  45. data/spec/lita/adapters/shell_spec.rb +24 -4
  46. data/spec/lita/authorization_spec.rb +57 -38
  47. data/spec/lita/builder_spec.rb +39 -0
  48. data/spec/lita/config_spec.rb +0 -24
  49. data/spec/lita/configuration_spec.rb +222 -0
  50. data/spec/lita/configuration_validator_spec.rb +112 -0
  51. data/spec/lita/daemon_spec.rb +2 -2
  52. data/spec/lita/default_configuration_spec.rb +254 -0
  53. data/spec/lita/handler/chat_router_spec.rb +192 -0
  54. data/spec/lita/handler/common_spec.rb +272 -0
  55. data/spec/lita/handler/event_router_spec.rb +54 -0
  56. data/spec/lita/handler/http_router_spec.rb +106 -0
  57. data/spec/lita/handler_spec.rb +20 -291
  58. data/spec/lita/handlers/authorization_spec.rb +9 -11
  59. data/spec/lita/handlers/deprecation_check_spec.rb +21 -0
  60. data/spec/lita/handlers/help_spec.rb +31 -9
  61. data/spec/lita/handlers/info_spec.rb +2 -2
  62. data/spec/lita/handlers/room_spec.rb +5 -3
  63. data/spec/lita/robot_spec.rb +30 -11
  64. data/spec/lita/rspec_spec.rb +71 -31
  65. data/spec/lita/user_spec.rb +2 -2
  66. data/spec/lita_spec.rb +62 -4
  67. data/spec/spec_helper.rb +7 -0
  68. data/templates/locales/en.yml +56 -4
  69. data/templates/plugin/gemspec.tt +1 -0
  70. data/templates/plugin/spec/spec_helper.tt +4 -0
  71. metadata +54 -8
  72. data/lib/lita/rspec/matchers/event_subscription_matcher.rb +0 -67
  73. data/lib/lita/rspec/matchers/route_matcher.rb +0 -69
  74. data/spec/lita/rack_app_spec.rb +0 -92
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3fb362ba4822b42cb6cd4a6b662d39fd23d94da
4
- data.tar.gz: 98201ad5cf62ba5a964ce1ea80b93e298fad4b02
3
+ metadata.gz: 6aba9ae845dbe0d8fcbeedca12735d4cde375b44
4
+ data.tar.gz: 7afcedf903295c434f39390884c7f7fe8465c181
5
5
  SHA512:
6
- metadata.gz: d4afd73a337dcf17183156546037c762d8e7c7d27870c55532f98d9228c83f4c11608352f1ccc71947e7ec072e9a6e523351eaf321a7a25f2540d432e34758ca
7
- data.tar.gz: 3629b9e414f35a09444017aff288126ec737adc9d64695bf520497f7e59bbb43e757e56e3c40bde26f35caf40a260253404870fff3ad86c89263af0c51762eb9
6
+ metadata.gz: 174c6be0c949ee3fd83753348d65c862b6313b5f77164b6c6b928946524e1913adbd07c886f352ce9daedc19e8243a5016bb623e352701e8bfdc369ac1f9aa26
7
+ data.tar.gz: ce15b54ce11d9efcb90b6b6db82a246625d6b38154db75fdac127629ef1a60892e60e0a607d31d1853a539538d781285d89fbd22557ac1fef8d5dc67e623b823
@@ -31,4 +31,4 @@ StringLiterals:
31
31
  TrailingComma:
32
32
  Enabled: false
33
33
  TrivialAccessors:
34
- AllowPredicates: true
34
+ Enabled: false
@@ -6,6 +6,9 @@ before_install:
6
6
  - gem update --system
7
7
  services:
8
8
  - redis-server
9
+ branches:
10
+ except:
11
+ - /^v[0-9]/
9
12
  notifications:
10
13
  webhooks:
11
14
  urls:
@@ -14,6 +14,8 @@ require "puma"
14
14
  require "rack"
15
15
  require "redis-namespace"
16
16
 
17
+ require_relative "lita/registry"
18
+
17
19
  # The main namespace for Lita. Provides a global registry of adapters and
18
20
  # handlers, as well as global configuration, logger, and Redis store.
19
21
  module Lita
@@ -21,43 +23,24 @@ module Lita
21
23
  REDIS_NAMESPACE = "lita"
22
24
 
23
25
  class << self
24
- # The global registry of adapters.
25
- # @return [Hash] A map of adapter keys to adapter classes.
26
- def adapters
27
- @adapters ||= {}
28
- end
26
+ include Registry::Mixins
29
27
 
30
- # The global configuration object. Provides user settings for the robot.
31
- # @return [Lita::Config] The Lita configuration object.
32
- def config
33
- @config ||= Config.default_config
34
- end
28
+ # A special mode to ensure that tests written for Lita 3 plugins continue to work.
29
+ # @return [Boolean] Whether or not version 3 compatibility mode is active.
30
+ # @since 4.0.0
31
+ attr_accessor :version_3_compatibility_mode
32
+ alias_method :version_3_compatibility_mode?, :version_3_compatibility_mode
35
33
 
36
- # Yields the global configuration object. Called by the user in a
37
- # lita_config.rb file.
38
- # @yieldparam [Lita::Configuration] config The global configuration object.
39
- # @return [void]
40
- def configure
41
- yield config
42
- end
43
-
44
- # The global registry of handlers.
45
- # @return [Set] The set of handlers.
46
- def handlers
47
- @handlers ||= Set.new
48
- end
49
-
50
- # The global registry of hook handler objects.
51
- # @return [Hash] A hash mapping hook names to sets of objects that handle them.
52
- # @since 3.2.0
53
- def hooks
54
- @hooks ||= Hash.new { |h, k| h[k] = Set.new }
55
- end
34
+ # A mode that makes minor changes to the Lita runtime to improve testability.
35
+ # @return [Boolean] Whether or not test mode is active.
36
+ # @since 4.0.0
37
+ attr_accessor :test_mode
38
+ alias_method :test_mode?, :test_mode
56
39
 
57
40
  # The global Logger object.
58
41
  # @return [::Logger] The global Logger object.
59
42
  def logger
60
- @logger ||= Logger.get_logger(Lita.config.robot.log_level)
43
+ @logger ||= Logger.get_logger(config.robot.log_level)
61
44
  end
62
45
 
63
46
  # The root Redis object.
@@ -65,79 +48,30 @@ module Lita
65
48
  def redis
66
49
  @redis ||= begin
67
50
  redis = Redis.new(config.redis)
68
- Redis::Namespace.new(REDIS_NAMESPACE, redis: redis)
51
+ Redis::Namespace.new(REDIS_NAMESPACE, redis: redis).tap do |client|
52
+ begin
53
+ client.ping
54
+ rescue Redis::BaseError => e
55
+ Lita.logger.fatal I18n.t(
56
+ "lita.redis.exception",
57
+ message: e.message,
58
+ backtrace: e.backtrace.join("\n")
59
+ )
60
+ abort
61
+ end
62
+ end
69
63
  end
70
64
  end
71
65
 
72
- # Adds an adapter to the global registry under the provided key.
73
- # @param key [String, Symbol] The key that identifies the adapter.
74
- # @param adapter [Lita::Adapter] The adapter class.
75
- # @return [void]
76
- def register_adapter(key, adapter)
77
- adapters[key.to_sym] = adapter
78
- end
79
-
80
- # Adds a handler to the global registry.
81
- # @param handler [Lita::Handler] The handler class.
82
- # @return [void]
83
- def register_handler(handler)
84
- handlers << handler
85
- end
86
-
87
- # Adds a hook handler object to the global registry for the given hook.
88
- # @return [void]
89
- # @since 3.2.0
90
- def register_hook(name, hook)
91
- hooks[name.to_s.downcase.strip.to_sym] << hook
92
- end
93
-
94
- # Clears the global configuration object and the global adapter, handler, and hook registries.
95
- # @return [void]
96
- # @since 3.2.0
97
- def reset
98
- reset_adapters
99
- reset_config
100
- reset_handlers
101
- reset_hooks
102
- end
103
-
104
- # Resets the global adapter registry, removing all registered adapters.
105
- # @return [void]
106
- # @since 3.2.0
107
- def reset_adapters
108
- @adapters = nil
109
- end
110
-
111
- # Resets the global configuration object. The next call to {Lita.config}
112
- # will create a fresh config object.
113
- # @return [void]
114
- def reset_config
115
- @config = nil
116
- end
117
- alias_method :clear_config, :reset_config
118
-
119
- # Resets the global handler registry, removing all registered handlers.
120
- # @return [void]
121
- # @since 3.2.0
122
- def reset_handlers
123
- @handlers = nil
124
- end
125
-
126
- # Resets the global hooks registry, removing all registered hook handlers.
127
- # @return [void]
128
- # @since 3.2.0
129
- def reset_hooks
130
- @hooks = nil
131
- end
132
-
133
66
  # Loads user configuration and starts the robot.
134
67
  # @param config_path [String] The path to the user configuration file.
135
68
  # @return [void]
136
69
  def run(config_path = nil)
137
70
  hooks[:before_run].each { |hook| hook.call(config_path: config_path) }
138
- Config.load_user_config(config_path)
139
- Lita.config.finalize
140
- self.locale = Lita.config.robot.locale
71
+ Configuration.load_user_config(config_path)
72
+ Configuration.freeze_config(config)
73
+ ConfigurationValidator.new(self).call
74
+ self.locale = config.robot.locale
141
75
  Robot.new.run
142
76
  end
143
77
  end
@@ -145,23 +79,37 @@ end
145
79
 
146
80
  require_relative "lita/version"
147
81
  require_relative "lita/common"
82
+ require_relative "lita/errors"
148
83
  require_relative "lita/config"
84
+ require_relative "lita/configuration"
85
+ require_relative "lita/default_configuration"
86
+ require_relative "lita/configuration_validator"
149
87
  require_relative "lita/util"
150
88
  require_relative "lita/logger"
89
+ require_relative "lita/callback"
90
+ require_relative "lita/configurable"
91
+ require_relative "lita/namespace"
92
+ require_relative "lita/handler/common"
93
+ require_relative "lita/handler/chat_router"
94
+ require_relative "lita/handler/http_router"
95
+ require_relative "lita/handler/event_router"
96
+ require_relative "lita/handler"
151
97
  require_relative "lita/user"
152
98
  require_relative "lita/source"
153
99
  require_relative "lita/authorization"
154
100
  require_relative "lita/message"
155
101
  require_relative "lita/response"
102
+ require_relative "lita/http_callback"
156
103
  require_relative "lita/http_route"
157
104
  require_relative "lita/rack_app"
158
105
  require_relative "lita/timer"
159
106
  require_relative "lita/robot"
160
107
  require_relative "lita/adapter"
161
108
  require_relative "lita/adapters/shell"
162
- require_relative "lita/handler"
109
+ require_relative "lita/builder"
163
110
  require_relative "lita/route_validator"
164
111
  require_relative "lita/handlers/authorization"
165
112
  require_relative "lita/handlers/help"
166
113
  require_relative "lita/handlers/info"
167
114
  require_relative "lita/handlers/room"
115
+ require_relative "lita/handlers/deprecation_check"
@@ -1,30 +1,27 @@
1
1
  module Lita
2
2
  # Adapters are the glue between Lita's API and a chat service.
3
3
  class Adapter
4
+ extend Namespace
5
+ extend Configurable
6
+
4
7
  # The instance of {Lita::Robot}.
5
8
  # @return [Lita::Robot]
6
9
  attr_reader :robot
7
10
 
8
11
  class << self
12
+ # @!attribute [r] required_configs
9
13
  # A list of configuration keys that are required for the adapter to boot.
10
14
  # @return [Array]
11
- attr_reader :required_configs
12
-
13
- # The namespace for the adapter, used for registry and for I18n. If the handler is an
14
- # anonymous class, it must explicitly define +self.name+.
15
- # @return [String] The adapter's namespace.
16
- # @raise [RuntimeError] If +self.name+ is not defined.
17
- def namespace
18
- if name
19
- Util.underscore(name.split("::").last)
20
- else
21
- raise I18n.t("lita.adapter.name_required")
22
- end
15
+ # @deprecated Will be removed in Lita 5.0. Use {Lita::Adapter#configuration} instead.
16
+ def required_configs
17
+ Lita.logger.warn(I18n.t("lita.adapter.required_configs_deprecated"))
18
+ @required_configs
23
19
  end
24
20
 
25
21
  # Defines configuration keys that are requried for the adapter to boot.
26
22
  # @param keys [String, Symbol] The required keys.
27
23
  # @return [void]
24
+ # @deprecated Will be removed in Lita 5.0. Use {Lita::Adapter#config} instead.
28
25
  def require_config(*keys)
29
26
  @required_configs ||= []
30
27
  @required_configs.concat(keys.flatten.map(&:to_sym))
@@ -48,6 +45,13 @@ module Lita
48
45
  @robot = robot
49
46
  ensure_required_configs
50
47
  end
48
+ #
49
+ # The handler's config object.
50
+ # @return [Lita::Configuration] The adapter's configuration object.
51
+ # @since 4.0.0
52
+ def config
53
+ robot.config.adapters.public_send(self.class.namespace)
54
+ end
51
55
 
52
56
  # @!method join
53
57
  # Joins the room with the specified ID.
@@ -113,21 +117,38 @@ module Lita
113
117
 
114
118
  private
115
119
 
120
+ # Returns the object used for the adapter's config.
121
+ def adapter_config
122
+ if Lita.version_3_compatibility_mode?
123
+ Lita.config.adapter
124
+ else
125
+ robot.config.adapter
126
+ end
127
+ end
128
+
116
129
  # Logs a fatal message and aborts if a required config key is not set.
117
130
  def ensure_required_configs
118
- required_configs = self.class.required_configs
119
131
  return if required_configs.nil?
120
132
 
121
- missing_keys = []
133
+ Lita.logger.warn(I18n.t("lita.adapter.require_config_deprecated"))
122
134
 
123
- required_configs.each do |key|
124
- missing_keys << key unless Lita.config.adapter[key]
125
- end
135
+ missing_keys = missing_config_keys
126
136
 
127
137
  unless missing_keys.empty?
128
138
  Lita.logger.fatal(I18n.t("lita.adapter.missing_configs", configs: missing_keys.join(", ")))
129
139
  abort
130
140
  end
131
141
  end
142
+
143
+ # Finds all missing config keys.
144
+ def missing_config_keys
145
+ required_configs.select do |key|
146
+ key unless adapter_config[key]
147
+ end
148
+ end
149
+
150
+ def required_configs
151
+ self.class.instance_variable_get(:@required_configs)
152
+ end
132
153
  end
133
154
  end
@@ -3,6 +3,8 @@ module Lita
3
3
  module Adapters
4
4
  # An adapter that runs Lita in a UNIX shell.
5
5
  class Shell < Adapter
6
+ config :private_chat, default: false
7
+
6
8
  # Creates a "Shell User" and then loops a prompt and input, passing the
7
9
  # incoming messages to the robot.
8
10
  # @return [void]
@@ -16,7 +18,7 @@ module Lita
16
18
  end
17
19
 
18
20
  # Outputs outgoing messages to the shell.
19
- # @param target [Lita::Source] Unused, since there is only one user in the
21
+ # @param _target [Lita::Source] Unused, since there is only one user in the
20
22
  # shell environment.
21
23
  # @param strings [Array<String>] An array of strings to output.
22
24
  # @return [void]
@@ -39,7 +41,7 @@ module Lita
39
41
 
40
42
  def build_message(input, source)
41
43
  message = Message.new(robot, input, source)
42
- message.command! if Lita.config.adapter.private_chat
44
+ message.command! if robot.config.adapters.shell.private_chat
43
45
  message
44
46
  end
45
47
 
@@ -57,7 +59,7 @@ module Lita
57
59
  input = Readline.readline("#{robot.name} > ", true)
58
60
  # Input read via rb-readline will always be encoded as US-ASCII.
59
61
  # @see https://github.com/luislavena/rb-readline/blob/master/lib/readline.rb#L1
60
- input.force_encoding(Encoding.default_external)
62
+ input.force_encoding(Encoding.default_external) if input
61
63
  end
62
64
 
63
65
  def run_loop
@@ -1,76 +1,125 @@
1
1
  module Lita
2
2
  # Methods for querying and manipulating authorization groups.
3
- module Authorization
4
- class << self
5
- # Adds a user to an authorization group.
6
- # @param requesting_user [Lita::User] The user who sent the command.
7
- # @param user [Lita::User] The user to add to the group.
8
- # @param group [Symbol, String] The name of the group.
9
- # @return [Symbol] :unauthorized if the requesting user is not authorized.
10
- # @return [Boolean] true if the user was added. false if the user was
11
- # already in the group.
12
- def add_user_to_group(requesting_user, user, group)
13
- return :unauthorized unless user_is_admin?(requesting_user)
14
- redis.sadd(normalize_group(group), user.id)
15
- end
3
+ class Authorization
4
+ # @param config [Object] The finalized configuration object for the currently running robot.
5
+ def initialize(config)
6
+ @config = config
7
+ end
16
8
 
17
- # Removes a user from an authorization group.
18
- # @param requesting_user [Lita::User] The user who sent the command.
19
- # @param user [Lita::User] The user to remove from the group.
20
- # @param group [Symbol, String] The name of the group.
21
- # @return [Symbol] :unauthorized if the requesting user is not authorized.
22
- # @return [Boolean] true if the user was removed. false if the user was
23
- # not in the group.
24
- def remove_user_from_group(requesting_user, user, group)
25
- return :unauthorized unless user_is_admin?(requesting_user)
26
- redis.srem(normalize_group(group), user.id)
27
- end
9
+ # Adds a user to an authorization group.
10
+ # @param requesting_user [Lita::User] The user who sent the command.
11
+ # @param user [Lita::User] The user to add to the group.
12
+ # @param group [Symbol, String] The name of the group.
13
+ # @return [Symbol] :unauthorized if the requesting user is not authorized.
14
+ # @return [Boolean] true if the user was added. false if the user was
15
+ # already in the group.
16
+ def add_user_to_group(requesting_user, user, group)
17
+ return :unauthorized unless user_is_admin?(requesting_user)
18
+ add_user_to_group!(user, group)
19
+ end
28
20
 
29
- # Checks if a user is in an authorization group.
30
- # @param user [Lita::User] The user.
31
- # @param group [Symbol, String] The name of the group.
32
- # @return [Boolean] Whether or not the user is in the group.
33
- def user_in_group?(user, group)
34
- group = normalize_group(group)
35
- return user_is_admin?(user) if group == "admins"
36
- redis.sismember(group, user.id)
37
- end
21
+ # Adds a user to an authorization group without validating the permissions
22
+ # of the requesting user.
23
+ # @param user [Lita::User] The user to add to the group.
24
+ # @param group [Symbol, String] The name of the group.
25
+ # @return [Boolean] true if the user was added. false if the user was
26
+ # already in the group.
27
+ # @since 4.0.0
28
+ def add_user_to_group!(user, group)
29
+ redis.sadd(normalize_group(group), user.id)
30
+ end
38
31
 
39
- # Checks if a user is an administrator.
40
- # @param user [Lita::User] The user.
41
- # @return [Boolean] Whether or not the user is an administrator.
42
- def user_is_admin?(user)
43
- Array(Lita.config.robot.admins).include?(user.id)
44
- end
32
+ # Removes a user from an authorization group.
33
+ # @param requesting_user [Lita::User] The user who sent the command.
34
+ # @param user [Lita::User] The user to remove from the group.
35
+ # @param group [Symbol, String] The name of the group.
36
+ # @return [Symbol] :unauthorized if the requesting user is not authorized.
37
+ # @return [Boolean] true if the user was removed. false if the user was
38
+ # not in the group.
39
+ def remove_user_from_group(requesting_user, user, group)
40
+ return :unauthorized unless user_is_admin?(requesting_user)
41
+ remove_user_from_group!(user, group)
42
+ end
45
43
 
46
- # Returns a list of all authorization groups.
47
- # @return [Array<Symbol>] The names of all authorization groups.
48
- def groups
49
- redis.keys("*").map(&:to_sym)
50
- end
44
+ # Removes a suer from an authorization group without validating the
45
+ # permissions of the requesting user.
46
+ # @param user [Lita::User] The user to remove from the group.
47
+ # @param group [Symbol, String] The name of the group.
48
+ # @return [Boolean] true if the user was removed. false if the user was
49
+ # not in the group.
50
+ # @since 4.0.0
51
+ def remove_user_from_group!(user, group)
52
+ redis.srem(normalize_group(group), user.id)
53
+ end
51
54
 
52
- # Returns a hash of authorization group names and the users in them.
53
- # @return [Hash] A map of +Symbol+ group names to +Lita::User+ objects.
54
- def groups_with_users
55
- groups.reduce({}) do |list, group|
56
- list[group] = redis.smembers(group).map do |user_id|
57
- User.find_by_id(user_id)
58
- end
59
- list
55
+ # Checks if a user is in an authorization group.
56
+ # @param user [Lita::User] The user.
57
+ # @param group [Symbol, String] The name of the group.
58
+ # @return [Boolean] Whether or not the user is in the group.
59
+ def user_in_group?(user, group)
60
+ group = normalize_group(group)
61
+ return user_is_admin?(user) if group == "admins"
62
+ redis.sismember(group, user.id)
63
+ end
64
+
65
+ # Checks if a user is an administrator.
66
+ # @param user [Lita::User] The user.
67
+ # @return [Boolean] Whether or not the user is an administrator.
68
+ def user_is_admin?(user)
69
+ Array(@config.robot.admins).include?(user.id)
70
+ end
71
+
72
+ # Returns a list of all authorization groups.
73
+ # @return [Array<Symbol>] The names of all authorization groups.
74
+ def groups
75
+ redis.keys("*").map(&:to_sym)
76
+ end
77
+
78
+ # Returns a hash of authorization group names and the users in them.
79
+ # @return [Hash] A map of +Symbol+ group names to +Lita::User+ objects.
80
+ def groups_with_users
81
+ groups.reduce({}) do |list, group|
82
+ list[group] = redis.smembers(group).map do |user_id|
83
+ User.find_by_id(user_id)
60
84
  end
85
+ list
61
86
  end
87
+ end
62
88
 
63
- private
89
+ private
64
90
 
65
- # Ensures that group names are stored consistently in Redis.
66
- def normalize_group(group)
67
- group.to_s.downcase.strip
68
- end
91
+ # Ensures that group names are stored consistently in Redis.
92
+ def normalize_group(group)
93
+ group.to_s.downcase.strip
94
+ end
69
95
 
70
- # A Redis::Namespace for authorization data.
71
- def redis
72
- @redis ||= Redis::Namespace.new("auth", redis: Lita.redis)
96
+ # A Redis::Namespace for authorization data.
97
+ def redis
98
+ @redis ||= Redis::Namespace.new("auth", redis: Lita.redis)
99
+ end
100
+
101
+ class << self
102
+ class << self
103
+ private
104
+
105
+ # @!macro define_deprecated_class_method
106
+ # @method $1(*args)
107
+ # @see #$1
108
+ # @deprecated Will be removed in Lita 5.0 Use #$1 instead.
109
+ def define_deprecated_class_method(deprecated_method)
110
+ define_method(deprecated_method) do |*args|
111
+ Lita.logger.warn(I18n.t("lita.auth.class_method_deprecated", method: deprecated_method))
112
+ new(Lita.config).public_send(deprecated_method, *args)
113
+ end
114
+ end
73
115
  end
116
+
117
+ define_deprecated_class_method :add_user_to_group
118
+ define_deprecated_class_method :remove_user_from_group
119
+ define_deprecated_class_method :user_in_group?
120
+ define_deprecated_class_method :user_is_admin?
121
+ define_deprecated_class_method :groups
122
+ define_deprecated_class_method :groups_with_users
74
123
  end
75
124
  end
76
125
  end