class Lita::Handlers::BitbucketPipelines

Public Instance Methods

receive(request, response) click to toggle source
# File lib/lita/handlers/bitbucket_pipelines.rb, line 6
def receive(request, response)
  I18n.locale = Lita.config.robot.locale

  room = request.params['room']
  target = Source.new(room: room)
  data = parse(request.body.read)
  message = format(data)
  return if message.nil?
  robot.send_message(target, message)
end

Private Instance Methods

format(data) click to toggle source
# File lib/lita/handlers/bitbucket_pipelines.rb, line 26
def format(data)
  status = data[:commit_status][:state]
  url    = data[:commit_status][:url]
  repo   = data[:commit_status][:repository][:name]
  user   = data[:commit_status][:commit][:author][:user][:display_name]
  build  = url.split('/').last

  case status
  when "INPROGRESS"
    t("initiated",
      build: build,
      user: user,
      repo: repo,
      url: url)
  when "SUCCESSFUL"
    t("successful",
      build: build,
      user: user,
      repo: repo,
      url: url)
  else
    t("error",
      build: build,
      user: user,
      repo: repo,
      url: url)
  end
end
parse(json) click to toggle source
# File lib/lita/handlers/bitbucket_pipelines.rb, line 19
def parse(json)
  MultiJson.load(json, symbolize_keys: true)
rescue MultiJson::ParseError => exception
  exception.data
  exception.cause
end