Sha256: 23c80eac31e2b165667fd2d53d0a4988ab6c792cbc7359d446b1ad8322c5ab32

Contents?: true

Size: 911 Bytes

Versions: 9

Compression:

Stored size: 911 Bytes

Contents

module DerailSpecs
  class Server
    class Checker
      TRY_HTTPS_ERRORS = [EOFError, Net::ReadTimeout, Errno::ECONNRESET].freeze

      def initialize(host, port)
        @host = host
        @port = port
        @ssl = false
      end

      def request(&block)
        ssl? ? https_request(&block) : http_request(&block)
      rescue *TRY_HTTPS_ERRORS
        res = https_request(&block)
        @ssl = true
        res
      end

      def ssl?
        @ssl
      end

      private

      def http_request(&block)
        make_request(read_timeout: 2, &block)
      end

      def https_request(&block)
        make_request(**ssl_options, &block)
      end

      def make_request(**options, &block)
        Net::HTTP.start(@host, @port, options.merge(max_retries: 0), &block)
      end

      def ssl_options
        { use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_NONE }
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
derail_specs-0.7.0 lib/derail_specs/server/checker.rb
derail_specs-0.6.1 lib/derail_specs/server/checker.rb
derail_specs-0.6.0 lib/derail_specs/server/checker.rb
derail_specs-0.5.1 lib/derail_specs/server/checker.rb
derail_specs-0.5.0 lib/derail_specs/server/checker.rb
derail_specs-0.4.0 lib/derail_specs/server/checker.rb
derail_specs-0.3.0 lib/derail_specs/server/checker.rb
derail_specs-0.2.1 lib/derail_specs/server/checker.rb
derail_specs-0.2.0 lib/derail_specs/server/checker.rb