Sha256: 73263d34b42219dfc20e00238e9c8e7f1f263d7bce32dbeb77b6d390f2c3f81c

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require 'faraday'

require_relative '../errors'
require_relative 'base'

module CircleCIReporter
  module VCS
    class GitHub < Base
      # @note Implement {Base#create_comment}
      # @param body [String]
      # @return [void]
      # @raise [RequestError]
      def create_comment(body)
        resp = request(body)
        raise RequestError.new(JSON.parse(resp.body)['message'], resp) unless resp.success?
      end

      private

      # @param body [String]
      # @return [Faraday::Response]
      def request(body)
        url = ['https://api.github.com', 'repos', configuration.project, 'commits', configuration.current_revision, 'comments'].join('/')
        Faraday.post(url) do |req|
          req.headers['Authorization'] = "token #{token}"
          req.headers['Content-Type'] = 'application/json'
          req.body = JSON.generate(body: body)
        end
      end

      # @return [Configuration]
      def configuration
        CircleCIReporter.configuration
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
circleci_reporter-1.0.1 lib/circleci_reporter/vcs/github.rb
circleci_reporter-1.0.0 lib/circleci_reporter/vcs/github.rb