--- /dev/null
+# == 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
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
end
def available_services_names
- %w(gitlab_ci campfire hipchat)
+ %w(gitlab_ci campfire hipchat pivotaltracker)
end
def gitlab_ci?