Skip to content

Instantly share code, notes, and snippets.

@Deradon
Created November 9, 2015 14:30
Show Gist options
  • Save Deradon/4875c273b853da34d149 to your computer and use it in GitHub Desktop.
Save Deradon/4875c273b853da34d149 to your computer and use it in GitHub Desktop.
flowdock
class WimduFlowdockPullRequestService
TOKEN = Rails.application.secrets.flowdock_api_token
FLOW_ID = Rails.application.secrets.flowdock_flow_id
OCTOCAT = ":octocat:"
def self.run(*args)
new(*args).run
end
def initialize(event)
@event = event
end
def run
return unless event.pull_request?
client.chat_message(flow: FLOW_ID, content: message, external_user_name: OCTOCAT)
push_code_reviews
end
def push_code_reviews
message = <<-MESSAGE
**#{issues.length} Open Pull requests**
**#{wrapped_codereviews.length} Pull requests ready for code review**
MESSAGE
review_messages = wrapped_codereviews.map do |review|
plus = ""
plus = "(+ #{review.count_of_plus_one})" if review.count_of_plus_one > 0
<<-MESSAGE
[#{review.repo}##{review.number} #{review.title}](#{review.html_url}) by #{review.user} #{plus}
MESSAGE
end
review_messages.each do |review_message|
message += review_message
end
client.chat_message(flow: FLOW_ID, content: message, external_user_name: OCTOCAT)
end
private
def client
@client ||= Flowdock::Client.new(api_token: TOKEN)
end
def issues
github.all
end
def wrapped_codereviews
github.wrapped_codereviews
end
# def codereviews
# github.codereviews
# end
def github
@github ||= Wimdu::PullRequest.new
end
def message
pull_request = event.pull_request
user_login = event.user[:login]
<<-MESSAGE
**A fresh pull request by #{user_login} is waiting for code review**
[#{event.repository[:name]}##{pull_request[:number]} #{pull_request[:title]}](#{pull_request[:html_url]})
MESSAGE
end
attr_reader :event
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment