Module: Janky::ChatService
- Defined in:
- lib/janky/chat_service.rb,
lib/janky/chat_service/mock.rb,
lib/janky/chat_service/slack.rb,
lib/janky/chat_service/hipchat.rb,
lib/janky/chat_service/campfire.rb
Defined Under Namespace
Classes: Campfire, HipChat, Mock, Room, Slack
Class Attribute Summary collapse
-
.adapter ⇒ Object
Returns the value of attribute adapter.
-
.default_room_name ⇒ Object
Returns the value of attribute default_room_name.
Class Method Summary collapse
-
.adapters ⇒ Object
Registry of available chat implementations.
- .default_room_id ⇒ Object
-
.enable_mock! ⇒ Object
Enable mocking.
-
.room_id(name) ⇒ Object
Get the ID of a room.
-
.room_name(id) ⇒ Object
Get the name of a room given its ID.
-
.room_names ⇒ Object
Get a list of all rooms names.
-
.rooms ⇒ Object
Memoized list of available rooms.
-
.rooms=(value) ⇒ Object
Configure available rooms.
-
.setup(name, settings, default) ⇒ Object
Setup the adapter used to notify chat rooms of build status.
-
.speak(message, room_id, options = {}) ⇒ Object
Send a message to a Chat room.
Class Attribute Details
.adapter ⇒ Object
Returns the value of attribute adapter.
25 26 27 |
# File 'lib/janky/chat_service.rb', line 25 def adapter @adapter end |
.default_room_name ⇒ Object
Returns the value of attribute default_room_name.
25 26 27 |
# File 'lib/janky/chat_service.rb', line 25 def default_room_name @default_room_name end |
Class Method Details
.adapters ⇒ Object
Registry of available chat implementations.
29 30 31 |
# File 'lib/janky/chat_service.rb', line 29 def self.adapters @adapters ||= {} end |
.default_room_id ⇒ Object
33 34 35 |
# File 'lib/janky/chat_service.rb', line 33 def self.default_room_id room_id(default_room_name) end |
.enable_mock! ⇒ Object
Enable mocking. Once enabled, messages are discarded.
Returns nothing.
87 88 89 |
# File 'lib/janky/chat_service.rb', line 87 def self.enable_mock! @adapter = Mock.new end |
.room_id(name) ⇒ Object
Get the ID of a room.
slug - the String name of the room.
Returns the room ID or nil for unknown rooms.
53 54 55 56 57 |
# File 'lib/janky/chat_service.rb', line 53 def self.room_id(name) if room = rooms.detect { |room| room.name == name } room.id end end |
.room_name(id) ⇒ Object
Get the name of a room given its ID.
id - the String room ID.
Returns the name as a String or nil when not found.
64 65 66 67 68 |
# File 'lib/janky/chat_service.rb', line 64 def self.room_name(id) if room = rooms.detect { |room| room.id.to_s == id.to_s } room.name end end |
.room_names ⇒ Object
Get a list of all rooms names.
Returns an Array of room name as Strings.
73 74 75 |
# File 'lib/janky/chat_service.rb', line 73 def self.room_names rooms.map { |room| room.name }.sort end |
.rooms ⇒ Object
Memoized list of available rooms.
Returns an Array of Room objects.
80 81 82 |
# File 'lib/janky/chat_service.rb', line 80 def self.rooms adapter.rooms end |
.rooms=(value) ⇒ Object
Configure available rooms. Only available in mock mode.
value - Hash of room map (String ID => String name)
Returns nothing.
96 97 98 |
# File 'lib/janky/chat_service.rb', line 96 def self.rooms=(value) adapter.rooms = value end |
.setup(name, settings, default) ⇒ Object
Setup the adapter used to notify chat rooms of build status.
name - Service name as a string. settings - Service-specific setting hash. default - Name of the default chat room as a String.
Returns nothing.
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/janky/chat_service.rb', line 12 def self.setup(name, settings, default) klass = adapters[name] if !klass raise Error, "Unknown chat service: #{name.inspect}. Available " \ "services are #{adapters.keys.join(", ")}" end @adapter = klass.new(settings) @default_room_name = default end |
.speak(message, room_id, options = {}) ⇒ Object
Send a message to a Chat room.
message - The String message. room_id - The String room ID. options - Optional hash passed to the chat adapter.
Returns nothing.
44 45 46 |
# File 'lib/janky/chat_service.rb', line 44 def self.speak(, room_id, = {}) adapter.speak(, room_id, ) end |