hatchet-hipchat 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/hatchet-hipchat/hipchat_appender.rb +64 -0
- data/lib/hatchet-hipchat/hipchat_emoticon_formatter.rb +55 -0
- data/lib/hatchet-hipchat/version.rb +1 -1
- data/lib/hatchet-hipchat.rb +2 -58
- data/spec/helpers/fake_client.rb +2 -2
- data/spec/hipchat_appender_spec.rb +16 -1
- data/spec/hipchat_emoticon_formatter_spec.rb +27 -0
- metadata +22 -8
@@ -0,0 +1,64 @@
|
|
1
|
+
module Hatchet
|
2
|
+
|
3
|
+
# Public: Class for sending log messages to a HipChat room.
|
4
|
+
#
|
5
|
+
class HipChatAppender
|
6
|
+
include LevelManager
|
7
|
+
|
8
|
+
# Internal: The class to use to create HipChat clients.
|
9
|
+
#
|
10
|
+
CLIENT = HipChat::API
|
11
|
+
|
12
|
+
# Public: The formatter used to format messages before sending them to the
|
13
|
+
# HipChat room.
|
14
|
+
#
|
15
|
+
attr_accessor :formatter
|
16
|
+
|
17
|
+
# Public: The API token to use to connect to HipChat's API.
|
18
|
+
#
|
19
|
+
attr_accessor :api_token
|
20
|
+
|
21
|
+
# Public: The ID of the room to send messages to.
|
22
|
+
#
|
23
|
+
attr_accessor :room_id
|
24
|
+
|
25
|
+
# Public: The name to post the messages as (default: Hatchet).
|
26
|
+
#
|
27
|
+
attr_accessor :name
|
28
|
+
|
29
|
+
# Public: Creates a new instance.
|
30
|
+
#
|
31
|
+
# By default the appender is created with a SimpleFormatter.
|
32
|
+
#
|
33
|
+
# block - Optional block that can be used to customize the appender. The
|
34
|
+
# appender itself is passed to the block.
|
35
|
+
#
|
36
|
+
def initialize
|
37
|
+
@name = 'Hatchet'
|
38
|
+
@formatter = SimpleFormatter.new
|
39
|
+
yield self if block_given?
|
40
|
+
end
|
41
|
+
|
42
|
+
# Internal: Sends a message to HipChat.
|
43
|
+
#
|
44
|
+
# level - The level of the message.
|
45
|
+
# context - The context of the message.
|
46
|
+
# message - The unformatted message.
|
47
|
+
#
|
48
|
+
# Returns nothing.
|
49
|
+
#
|
50
|
+
def add(level, context, message)
|
51
|
+
message = @formatter.format(level, context, message)
|
52
|
+
client.rooms_message @room_id, @name, message, 'text'
|
53
|
+
end
|
54
|
+
|
55
|
+
# Internal: Returns the client used to send messages to HipChat.
|
56
|
+
#
|
57
|
+
def client
|
58
|
+
@client ||= CLIENT.new(@api_token)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Hatchet
|
2
|
+
|
3
|
+
# Public: Formatter that outputs messages with HipChat emoticons in place of
|
4
|
+
# the level.
|
5
|
+
#
|
6
|
+
# Mapping
|
7
|
+
#
|
8
|
+
# :debug -> (content)
|
9
|
+
# :info -> (wat)
|
10
|
+
# :warn -> (ohcrap)
|
11
|
+
# :error -> (omg)
|
12
|
+
# :fatal -> (boom)
|
13
|
+
#
|
14
|
+
# Emoticon reference: http://hipchat-emoticons.heroku.com/
|
15
|
+
#
|
16
|
+
class HipChatEmoticonFormatter
|
17
|
+
|
18
|
+
# Internal: Map for converting levels to emoticons.
|
19
|
+
#
|
20
|
+
LEVEL_EMOTICON_MAP = {
|
21
|
+
debug: '(content)',
|
22
|
+
info: '(wat)',
|
23
|
+
warn: '(ohcrap)',
|
24
|
+
error: '(omg)',
|
25
|
+
fatal: '(boom)'
|
26
|
+
}
|
27
|
+
|
28
|
+
# Public: Returns the formatted message with HipChat emoticons in place of
|
29
|
+
# the level.
|
30
|
+
#
|
31
|
+
# level - The severity of the log message.
|
32
|
+
# context - The context of the log message.
|
33
|
+
# message - The message provided by the log caller.
|
34
|
+
#
|
35
|
+
# Mapping
|
36
|
+
#
|
37
|
+
# :debug -> (content)
|
38
|
+
# :info -> (wat)
|
39
|
+
# :warn -> (ohcrap)
|
40
|
+
# :error -> (omg)
|
41
|
+
# :fatal -> (boom)
|
42
|
+
#
|
43
|
+
# Returns messages in the format:
|
44
|
+
#
|
45
|
+
# LEVEL - CONTEXT - MESSAGE
|
46
|
+
#
|
47
|
+
def format(level, context, message)
|
48
|
+
message = message.to_s.strip
|
49
|
+
"#{LEVEL_EMOTICON_MAP[level]} - #{context} - #{message}"
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
data/lib/hatchet-hipchat.rb
CHANGED
@@ -1,62 +1,6 @@
|
|
1
1
|
require 'hatchet-hipchat/version'
|
2
2
|
require 'hatchet'
|
3
3
|
require 'hipchat-api'
|
4
|
+
require 'hatchet-hipchat/hipchat_appender'
|
5
|
+
require 'hatchet-hipchat/hipchat_emoticon_formatter'
|
4
6
|
|
5
|
-
module Hatchet
|
6
|
-
|
7
|
-
# Public: Class for sending log messages to a HipChat room.
|
8
|
-
#
|
9
|
-
class HipChatAppender
|
10
|
-
include LevelManager
|
11
|
-
|
12
|
-
# Interal: The class to use to create HipChat clients.
|
13
|
-
#
|
14
|
-
CLIENT = HipChat::API
|
15
|
-
|
16
|
-
# Public: The formatter used to format messages before sending them to the
|
17
|
-
# HipChat room.
|
18
|
-
#
|
19
|
-
attr_accessor :formatter
|
20
|
-
|
21
|
-
# Public: The API token to use to connect to HipChat's API.
|
22
|
-
#
|
23
|
-
attr_accessor :api_token
|
24
|
-
|
25
|
-
# Public: The ID of the room to send messages to.
|
26
|
-
#
|
27
|
-
attr_accessor :room_id
|
28
|
-
|
29
|
-
# Public: Creates a new instance.
|
30
|
-
#
|
31
|
-
# By default the appender is created with a SimpleFormatter.
|
32
|
-
#
|
33
|
-
# block - Optional block that can be used to customize the appender. The
|
34
|
-
# appender itself is passed to the block.
|
35
|
-
#
|
36
|
-
def initialize
|
37
|
-
@formatter = SimpleFormatter.new
|
38
|
-
yield self if block_given?
|
39
|
-
end
|
40
|
-
|
41
|
-
# Internal: Sends a message to HipChat.
|
42
|
-
#
|
43
|
-
# level - The level of the message.
|
44
|
-
# context - The context of the message.
|
45
|
-
# message - The unformatted message.
|
46
|
-
#
|
47
|
-
# Returns nothing.
|
48
|
-
#
|
49
|
-
def add(level, context, message)
|
50
|
-
message = @formatter.format(level, context, message)
|
51
|
-
client.rooms_message @room_id, 'Hatchet', message
|
52
|
-
end
|
53
|
-
|
54
|
-
# Internal: Returns the client used to send messages to HipChat.
|
55
|
-
#
|
56
|
-
def client
|
57
|
-
@client ||= CLIENT.new(@api_token)
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
data/spec/helpers/fake_client.rb
CHANGED
@@ -11,8 +11,8 @@ class FakeClient
|
|
11
11
|
@messages = []
|
12
12
|
end
|
13
13
|
|
14
|
-
def rooms_message(room_id, from, message)
|
15
|
-
@messages << OpenStruct.new(room_id: room_id, from: from, message: message)
|
14
|
+
def rooms_message(room_id, from, message, format)
|
15
|
+
@messages << OpenStruct.new(room_id: room_id, from: from, message: message, format: format)
|
16
16
|
end
|
17
17
|
|
18
18
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative 'spec_helper'
|
2
2
|
|
3
3
|
describe HipChatAppender do
|
4
4
|
before do
|
@@ -39,6 +39,21 @@ describe HipChatAppender do
|
|
39
39
|
formatted_message = subject.formatter.format(:warn, 'Custom::Context', 'Hello, World')
|
40
40
|
assert 'Hatchet' == message.from
|
41
41
|
assert formatted_message == message.message
|
42
|
+
assert 'text' == message.format
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'setting name' do
|
46
|
+
before do
|
47
|
+
subject.name = 'CustomName'
|
48
|
+
end
|
49
|
+
|
50
|
+
before do
|
51
|
+
subject.add :warn, 'Custom::Context', 'Hello, World'
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'sends a message with the configured name' do
|
55
|
+
assert 'CustomName' == message.from
|
56
|
+
end
|
42
57
|
end
|
43
58
|
end
|
44
59
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe HipChatEmoticonFormatter do
|
4
|
+
let(:formatter) { HipChatEmoticonFormatter.new }
|
5
|
+
let(:context) { 'Context' }
|
6
|
+
let(:message) { 'Hello, World' }
|
7
|
+
|
8
|
+
it 'maps debug to (content)' do
|
9
|
+
assert '(content) - Context - Hello, World' == formatter.format(:debug, context, message)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'maps info to (wat)' do
|
13
|
+
assert '(wat) - Context - Hello, World' == formatter.format(:info, context, message)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'maps warn to (ohcrap)' do
|
17
|
+
assert '(ohcrap) - Context - Hello, World' == formatter.format(:warn, context, message)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'maps debug to (omg)' do
|
21
|
+
assert '(omg) - Context - Hello, World' == formatter.format(:error, context, message)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'maps debug to (boom)' do
|
25
|
+
assert '(boom) - Context - Hello, World' == formatter.format(:fatal, context, message)
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hatchet-hipchat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hatchet
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 0.0.9
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.0.9
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: hipchat-api
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,7 +37,12 @@ dependencies:
|
|
32
37
|
version: 1.0.4
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.4
|
36
46
|
description: Hatchet appender that sends messages to HipChat
|
37
47
|
email:
|
38
48
|
- garry@robustsoftware.co.uk
|
@@ -40,13 +50,16 @@ executables: []
|
|
40
50
|
extensions: []
|
41
51
|
extra_rdoc_files: []
|
42
52
|
files:
|
53
|
+
- lib/hatchet-hipchat/hipchat_appender.rb
|
54
|
+
- lib/hatchet-hipchat/hipchat_emoticon_formatter.rb
|
43
55
|
- lib/hatchet-hipchat/version.rb
|
44
56
|
- lib/hatchet-hipchat.rb
|
45
57
|
- spec/helpers/fake_client.rb
|
46
58
|
- spec/hipchat_appender_spec.rb
|
59
|
+
- spec/hipchat_emoticon_formatter_spec.rb
|
47
60
|
- spec/spec_helper.rb
|
48
61
|
- LICENSE
|
49
|
-
homepage:
|
62
|
+
homepage: https://github.com/gshutler/hatchet-hipchat
|
50
63
|
licenses: []
|
51
64
|
post_install_message:
|
52
65
|
rdoc_options: []
|
@@ -66,11 +79,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
79
|
version: '0'
|
67
80
|
requirements: []
|
68
81
|
rubyforge_project:
|
69
|
-
rubygems_version: 1.8.
|
82
|
+
rubygems_version: 1.8.24
|
70
83
|
signing_key:
|
71
84
|
specification_version: 3
|
72
85
|
summary: Hatchet appender that sends messages to HipChat
|
73
86
|
test_files:
|
74
87
|
- spec/helpers/fake_client.rb
|
75
88
|
- spec/hipchat_appender_spec.rb
|
89
|
+
- spec/hipchat_emoticon_formatter_spec.rb
|
76
90
|
- spec/spec_helper.rb
|