jbox-web/redmine_git_hosting

View on GitHub
app/services/redmine_hooks/base.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module RedmineHooks
  class Base
    attr_reader :object, :payloads

    def initialize(object, payloads = {})
      @object   = object
      @payloads = payloads
    end

    class << self
      def call(object, payloads = {})
        new(object, payloads).call
      end
    end

    def call
      raise NotImplementedError
    end

    def start_message
      raise NotImplementedError
    end

    private

    def logger
      RedmineGitHosting.logger
    end

    def success_message
      " [success]\n"
    end

    def failure_message
      " [failure]\n"
    end

    def log_hook_succeeded
      logger.info 'Succeeded!'
    end

    def log_hook_failed
      logger.error 'Failed!'
    end

    def execute_hook
      y = +''
      logger.info start_message
      y << "  - #{start_message} ... "
      yield y
      y
    end
  end
end