pivotaltracker_service.rb 1.38 KB
# == 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