Commit d44992ac803052af688ba791ff991fad797e1d7f
Exists in
master
and in
1 other branch
Merge pull request #402 from boblail/webhook-notification-service
added a generic "Web Hook" notification service
Showing
6 changed files
with
33 additions
and
1 deletions
Show diff stats
3.16 KB
3.16 KB
2.49 KB
@@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
1 | +class NotificationServices::WebhookService < NotificationService | ||
2 | + Label = "webhook" | ||
3 | + Fields = [ | ||
4 | + [:api_token, { | ||
5 | + :placeholder => 'URL to receive a POST request when an error occurs', | ||
6 | + :label => 'URL' | ||
7 | + }] | ||
8 | + ] | ||
9 | + | ||
10 | + def check_params | ||
11 | + if Fields.detect {|f| self[f[0]].blank? } | ||
12 | + errors.add :base, 'You must specify the URL' | ||
13 | + end | ||
14 | + end | ||
15 | + | ||
16 | + def create_notification(problem) | ||
17 | + HTTParty.post(api_token, :body => {:problem => problem.to_json}) | ||
18 | + end | ||
19 | +end |
spec/fabricators/notification_service_fabricator.rb
@@ -11,6 +11,6 @@ Fabricator :gtalk_notification_service, :from => :notification_service, :class_n | @@ -11,6 +11,6 @@ Fabricator :gtalk_notification_service, :from => :notification_service, :class_n | ||
11 | service { sequence :word } | 11 | service { sequence :word } |
12 | end | 12 | end |
13 | 13 | ||
14 | -%w(campfire hipchat hoiio pushover hubot).each do |t| | 14 | +%w(campfire hipchat hoiio pushover hubot webhook).each do |t| |
15 | Fabricator "#{t}_notification_service".to_sym, :from => :notification_service, :class_name => "NotificationService::#{t.camelcase}Service" | 15 | Fabricator "#{t}_notification_service".to_sym, :from => :notification_service, :class_name => "NotificationService::#{t.camelcase}Service" |
16 | end | 16 | end |
spec/models/notification_service/webhook_service_spec.rb
0 → 100644
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +require 'spec_helper' | ||
2 | + | ||
3 | +describe NotificationService::WebhookService do | ||
4 | + it "it should send a notification to a user-specified URL" do | ||
5 | + notice = Fabricate :notice | ||
6 | + notification_service = Fabricate :webhook_notification_service, :app => notice.app | ||
7 | + problem = notice.problem | ||
8 | + | ||
9 | + HTTParty.should_receive(:post).with(notification_service.api_token, :body => {:problem => problem.to_json}).and_return(true) | ||
10 | + | ||
11 | + notification_service.create_notification(problem) | ||
12 | + end | ||
13 | +end |