Sha256: 9a1cc5f245354da961ca7185f28df1e47fc2d1dd4c6f14bcf061055bb147e239

Contents?: true

Size: 1.66 KB

Versions: 5

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true

module Ruboty
  module Github
    module Actions
      class Base
        NAMESPACE = 'github'

        attr_reader :message

        def initialize(message)
          @message = message
        end

        private

        def access_tokens
          message.robot.brain.data[NAMESPACE] ||= {}
        end

        def body
          message[:description] || ''
        end

        def sender_name
          message.from_name
        end

        def require_access_token
          message.reply("I don't know your github access token")
        end

        def has_access_token?
          !!access_token
        end

        def access_token
          @access_token ||= access_tokens[sender_name]
        end

        def client
          Octokit::Client.new(client_options)
        end

        def repository
          message[:repo]
        end

        def client_options
          client_options_with_nil_value.compact
        end

        def client_options_with_nil_value
          {
            access_token: access_token,
            api_endpoint: api_endpoint,
            web_endpoint: web_endpoint
          }
        end

        def web_endpoint
          "#{github_base_url}/" if github_base_url
        end

        def api_endpoint
          "#{github_base_url}/api/v3" if github_base_url
        end

        # @note GITHUB_HOST will be deprecated on the next major version
        def github_base_url
          if ENV.fetch('GITHUB_BASE_URL', nil)
            ENV.fetch('GITHUB_BASE_URL', nil)
          elsif ENV.fetch('GITHUB_HOST', nil)
            "https://#{ENV.fetch('GITHUB_HOST', nil)}"
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ruboty-qiita-github-0.3.4 lib/ruboty/github/actions/base.rb
ruboty-qiita-github-0.3.3 lib/ruboty/github/actions/base.rb
ruboty-qiita-github-0.3.2 lib/ruboty/github/actions/base.rb
ruboty-qiita-github-0.3.1 lib/ruboty/github/actions/base.rb
ruboty-qiita-github-0.3.0 lib/ruboty/github/actions/base.rb