Commit d9de22106629da8041332494ccc7e72a9a1546db
1 parent
7852aad2
Exists in
master
and in
1 other branch
removed camp tracker, added notifications
Showing
3 changed files
with
31 additions
and
39 deletions
Show diff stats
app/models/app.rb
@@ -17,6 +17,8 @@ class App | @@ -17,6 +17,8 @@ class App | ||
17 | embeds_many :watchers | 17 | embeds_many :watchers |
18 | embeds_many :deploys | 18 | embeds_many :deploys |
19 | embeds_one :issue_tracker | 19 | embeds_one :issue_tracker |
20 | + embeds_one :notification_service | ||
21 | + | ||
20 | has_many :problems, :inverse_of => :app, :dependent => :destroy | 22 | has_many :problems, :inverse_of => :app, :dependent => :destroy |
21 | 23 | ||
22 | before_validation :generate_api_key, :on => :create | 24 | before_validation :generate_api_key, :on => :create |
app/models/issue_trackers/campfire_tracker.rb
@@ -1,39 +0,0 @@ | @@ -1,39 +0,0 @@ | ||
1 | -class IssueTrackers::CampfireTracker < IssueTracker | ||
2 | - Label = "campfire" | ||
3 | - Fields = [ | ||
4 | - [:subdomain, { | ||
5 | - :placeholder => "Campfire Subdomain" | ||
6 | - }], | ||
7 | - [:api_token, { | ||
8 | - :placeholder => "API Token" | ||
9 | - }], | ||
10 | - [:project_id, { | ||
11 | - :placeholder => "Room ID", | ||
12 | - :label => "Room ID" | ||
13 | - }], | ||
14 | - ] | ||
15 | - | ||
16 | - def check_params | ||
17 | - if Fields.detect {|f| self[f[0]].blank? } | ||
18 | - errors.add :base, 'You must specify your Campfire Subdomain, API token and Room ID' | ||
19 | - end | ||
20 | - end | ||
21 | - | ||
22 | - def create_issue(problem, reported_by = nil) | ||
23 | - # build the campfire client | ||
24 | - campy = Campy::Room.new(:account => subdomain, :token => api_token, :room_id => project_id) | ||
25 | - | ||
26 | - # post the issue to the campfire room | ||
27 | - campy.speak "[errbit] http://#{Errbit::Config.host}/apps/#{problem.app.id.to_s} #{issue_title problem}" | ||
28 | - | ||
29 | - # update the problem to say where it was sent | ||
30 | - problem.update_attributes( | ||
31 | - :issue_link => url, | ||
32 | - :issue_type => Label | ||
33 | - ) | ||
34 | - end | ||
35 | - | ||
36 | - def url | ||
37 | - "http://#{subdomain}.campfirenow.com" | ||
38 | - end | ||
39 | -end | ||
40 | \ No newline at end of file | 0 | \ No newline at end of file |
@@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
1 | +class NotificationService::CampfireService < IssueTracker | ||
2 | + Label = "campfire" | ||
3 | + Fields = [ | ||
4 | + [:subdomain, { | ||
5 | + :placeholder => "Campfire Subdomain" | ||
6 | + }], | ||
7 | + [:api_token, { | ||
8 | + :placeholder => "API Token" | ||
9 | + }], | ||
10 | + [:room_id, { | ||
11 | + :placeholder => "Room ID", | ||
12 | + :label => "Room ID" | ||
13 | + }], | ||
14 | + ] | ||
15 | + | ||
16 | + def check_params | ||
17 | + if Fields.detect {|f| self[f[0]].blank? } | ||
18 | + errors.add :base, 'You must specify your Campfire Subdomain, API token and Room ID' | ||
19 | + end | ||
20 | + end | ||
21 | + | ||
22 | + def create_notification(problem) | ||
23 | + # build the campfire client | ||
24 | + campy = Campy::Room.new(:account => subdomain, :token => api_token, :room_id => room_id) | ||
25 | + | ||
26 | + # post the issue to the campfire room | ||
27 | + campy.speak "[errbit] http://#{Errbit::Config.host}/apps/#{problem.app.id.to_s} #{notification_description problem}" | ||
28 | + end | ||
29 | +end | ||
0 | \ No newline at end of file | 30 | \ No newline at end of file |