Sha256: 69959bc5cc6825a82cef9024f93ef2d25f6a2fc050a8b4372761f719da1fc29e

Contents?: true

Size: 1.38 KB

Versions: 4

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

require 'json'

module Diffend
  # Module responsible for fetching diffend verdict on local context
  module RequestVerdict
    # Exceptions that we handle when there is a resolve issue
    RESOLVE_EXCEPTIONS = [
      Bundler::GemNotFound,
      Bundler::VersionConflict,
      Bundler::GitError
    ].freeze

    class << self
      # @param config [Diffend::Config]
      # @param definition [Bundler::Definition] definition for your source
      def call(config, definition)
        payload = Diffend::LocalContext.call(config, definition)

        response = Diffend::Request.call(
          build_request_object(config, payload)
        )

        JSON.parse(response.body)
      rescue *RESOLVE_EXCEPTIONS
        raise ::Diffend::Errors::DependenciesResolveException
      rescue StandardError => e
        Diffend::HandleErrors::Report.call(
          exception: e,
          payload: payload || {},
          config: config,
          message: :unhandled_exception,
          report: true
        )
      end

      # @param config [Diffend::Config]
      # @param payload [Hash]
      #
      # @return [Diffend::RequestObject]
      def build_request_object(config, payload)
        Diffend::RequestObject.new(
          config: config,
          url: config.commands_url,
          payload: payload,
          request_method: :post
        )
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
diffend-monitor-0.2.35 lib/diffend/request_verdict.rb
diffend-0.2.35 lib/diffend/request_verdict.rb
diffend-monitor-0.2.34 lib/diffend/request_verdict.rb
diffend-0.2.34 lib/diffend/request_verdict.rb