diff --git a/app/models/pivotaltracker_service.rb b/app/models/pivotaltracker_service.rb new file mode 100644 index 00000000000..eb7ea5f2113 --- /dev/null +++ b/app/models/pivotaltracker_service.rb @@ -0,0 +1,57 @@ +# == Schema Information +# +# Table name: services +# +# id :integer not null, primary key +# type :string(255) +# title :string(255) +# token :string(255) +# project_id :integer not null +# created_at :datetime not null +# updated_at :datetime not null +# active :boolean default(FALSE), not null +# + +class PivotaltrackerService < Service + include HTTParty + + attr_accessible :subdomain, :room + + validates :token, presence: true, if: :activated? + + def title + 'PivotalTracker' + end + + def description + 'Project Management Software (Source Commits Endpoint)' + end + + def to_param + 'pivotaltracker' + end + + def fields + [ + { type: 'text', name: 'token', placeholder: '' } + ] + end + + def execute(push) + url = 'https://www.pivotaltracker.com/services/v5/source_commits' + push[:commits].each do |commit| + message = {'source_commit' => + {'commit_id' => commit[:id], + 'author' => commit[:author][:name], + 'url' => commit[:url], + 'message' => commit[:message]} + } + status = PivotaltrackerService.post(url, + body: message.to_json, + headers: {'Content-Type' => 'application/json', + 'X-TrackerToken' => token} + ) + end + end + +end diff --git a/app/models/project.rb b/app/models/project.rb index f4d915179e8..63cd3505ec4 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -46,6 +46,7 @@ class Project < ActiveRecord::Base has_one :last_event, class_name: 'Event', order: 'events.created_at DESC', foreign_key: 'project_id' has_one :gitlab_ci_service, dependent: :destroy has_one :campfire_service, dependent: :destroy + has_one :pivotaltracker_service, dependent: :destroy has_one :hipchat_service, dependent: :destroy has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id" has_one :forked_from_project, through: :forked_project_link @@ -220,7 +221,7 @@ class Project < ActiveRecord::Base end def available_services_names - %w(gitlab_ci campfire hipchat) + %w(gitlab_ci campfire hipchat pivotaltracker) end def gitlab_ci?