class PostReceive
  @queue = :post_receive

  def self.perform(reponame, oldrev, newrev, ref, author_key_id)
    project = Project.find_by_path(reponame)
    return false if project.nil?

    # Ignore push from non-gitlab users
    return false unless Key.find_by_identifier(author_key_id)

    # Create push event
    project.observe_push(oldrev, newrev, ref, author_key_id)

    # Close merged MR 
    project.update_merge_requests(oldrev, newrev, ref, author_key_id)

    # Execute web hooks
    project.execute_web_hooks(oldrev, newrev, ref, author_key_id)
  end
end